Module Name: src
Committed By: gson
Date: Tue Jan 10 21:02:48 UTC 2012
Modified Files:
src/distrib/utils/sysinst: defs.h main.c menus.mi msg.mi.de msg.mi.en
msg.mi.es msg.mi.fr msg.mi.pl net.c util.c
Log Message:
Add support for installing source sets as discussed on tech-install,
with improved German translations from Martin Husemann and Julian
Djamil Fagir. French, Spanish, and Polish translations are
still needed. OK christos, riz.
To generate a diff of this commit:
cvs rdiff -u -r1.160 -r1.161 src/distrib/utils/sysinst/defs.h
cvs rdiff -u -r1.62 -r1.63 src/distrib/utils/sysinst/main.c
cvs rdiff -u -r1.43 -r1.44 src/distrib/utils/sysinst/menus.mi
cvs rdiff -u -r1.60 -r1.61 src/distrib/utils/sysinst/msg.mi.de
cvs rdiff -u -r1.168 -r1.169 src/distrib/utils/sysinst/msg.mi.en
cvs rdiff -u -r1.38 -r1.39 src/distrib/utils/sysinst/msg.mi.es
cvs rdiff -u -r1.118 -r1.119 src/distrib/utils/sysinst/msg.mi.fr
cvs rdiff -u -r1.77 -r1.78 src/distrib/utils/sysinst/msg.mi.pl
cvs rdiff -u -r1.129 -r1.130 src/distrib/utils/sysinst/net.c
cvs rdiff -u -r1.172 -r1.173 src/distrib/utils/sysinst/util.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/distrib/utils/sysinst/defs.h
diff -u src/distrib/utils/sysinst/defs.h:1.160 src/distrib/utils/sysinst/defs.h:1.161
--- src/distrib/utils/sysinst/defs.h:1.160 Thu Jan 5 22:18:36 2012
+++ src/distrib/utils/sysinst/defs.h Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: defs.h,v 1.160 2012/01/05 22:18:36 christos Exp $ */
+/* $NetBSD: defs.h,v 1.161 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -122,6 +122,13 @@ enum {
SET_MD_2, /* Machine dependent set */
SET_MD_3, /* Machine dependent set */
SET_MD_4, /* Machine dependent set */
+
+ /* Source sets */
+ SET_SYSSRC,
+ SET_SRC,
+ SET_SHARESRC,
+ SET_GNUSRC,
+ SET_XSRC,
SET_LAST,
SET_GROUP, /* Start of submenu */
@@ -144,6 +151,9 @@ enum {
/* All machine dependent sets */
#define SET_MD SET_MD_1, SET_MD_2, SET_MD_3, SET_MD_4
+/* All source sets */
+#define SET_SOURCE SET_SYSSRC, SET_SRC, SET_SHARESRC, SET_GNUSRC, SET_XSRC
+
/* Set list flags */
#define SFLAG_MINIMAL 1
#define SFLAG_NOX 2
@@ -278,11 +288,17 @@ int clean_xfer_dir;
#define SYSINST_FTP_DIR "pub/NetBSD/NetBSD-" REL
#endif
-/* Abs. path we extract from */
-char ext_dir[STRSIZE];
+/* Abs. path we extract binary sets from */
+char ext_dir_bin[STRSIZE];
+
+/* Abs. path we extract source sets from */
+char ext_dir_src[STRSIZE];
+
+/* Place we look for binary sets in all fs types */
+char set_dir_bin[STRSIZE];
-/* Place we look in all fs types */
-char set_dir[STRSIZE];
+/* Place we look for source sets in all fs types */
+char set_dir_src[STRSIZE];
struct {
char host[STRSIZE];
@@ -427,6 +443,9 @@ int check_lfs_progs(void);
void init_set_status(int);
void customise_sets(void);
void umount_mnt2(void);
+int set_is_source(const char *);
+const char *set_dir_for_set(const char *);
+const char *ext_dir_for_set(const char *);
/* from target.c */
#if defined(DEBUG) || defined(DEBUG_ROOT)
Index: src/distrib/utils/sysinst/main.c
diff -u src/distrib/utils/sysinst/main.c:1.62 src/distrib/utils/sysinst/main.c:1.63
--- src/distrib/utils/sysinst/main.c:1.62 Thu Jan 5 21:29:24 2012
+++ src/distrib/utils/sysinst/main.c Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: main.c,v 1.62 2012/01/05 21:29:24 christos Exp $ */
+/* $NetBSD: main.c,v 1.63 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -80,10 +80,12 @@ static const struct f_arg fflagopts[] =
{"release", REL, rel, sizeof rel},
{"machine", MACH, machine, sizeof machine},
{"xfer dir", "/usr/INSTALL", xfer_dir, sizeof xfer_dir},
- {"ext dir", "", ext_dir, sizeof ext_dir},
+ {"ext dir", "", ext_dir_bin, sizeof ext_dir_bin},
+ {"ext src dir", "", ext_dir_src, sizeof ext_dir_src},
{"ftp host", SYSINST_FTP_HOST, ftp.host, sizeof ftp.host},
{"ftp dir", SYSINST_FTP_DIR, ftp.dir, sizeof ftp.dir},
- {"ftp prefix", "/" MACH "/binary/sets", set_dir, sizeof set_dir},
+ {"ftp prefix", "/" MACH "/binary/sets", set_dir_bin, sizeof set_dir_bin},
+ {"ftp src prefix", "/source/sets", set_dir_src, sizeof set_dir_src},
{"ftp user", "ftp", ftp.user, sizeof ftp.user},
{"ftp pass", "", ftp.pass, sizeof ftp.pass},
{"ftp proxy", "", ftp.proxy, sizeof ftp.proxy},
Index: src/distrib/utils/sysinst/menus.mi
diff -u src/distrib/utils/sysinst/menus.mi:1.43 src/distrib/utils/sysinst/menus.mi:1.44
--- src/distrib/utils/sysinst/menus.mi:1.43 Sun Oct 30 00:30:56 2011
+++ src/distrib/utils/sysinst/menus.mi Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: menus.mi,v 1.43 2011/10/30 00:30:56 jakllsch Exp $ */
+/* $NetBSD: menus.mi,v 1.44 2012/01/10 21:02:47 gson Exp $ */
/*-
* Copyright (c) 2003 The NetBSD Foundation, Inc.
@@ -246,8 +246,10 @@ menu ftpsource, y=-4, x=0, w=70, no box,
action { src_prompt(MSG_Host, ftp.host, sizeof ftp.host); };
option {src_legend(menu, MSG_Base_dir, ftp.dir);},
action { src_prompt(MSG_Base_dir, ftp.dir, sizeof ftp.dir); };
- option {src_legend(menu, MSG_Set_dir, set_dir);},
- action { src_prompt(MSG_Set_dir, set_dir, sizeof set_dir); };
+ option {src_legend(menu, MSG_Set_dir_bin, set_dir_bin);},
+ action { src_prompt(MSG_Set_dir_bin, set_dir_bin, sizeof set_dir_bin); };
+ option {src_legend(menu, MSG_Set_dir_src, set_dir_src);},
+ action { src_prompt(MSG_Set_dir_src, set_dir_src, sizeof set_dir_src); };
option {src_legend(menu, MSG_User, ftp.user);},
action { src_prompt(MSG_User, ftp.user, sizeof ftp.user);
ftp.pass[0] = 0;
@@ -286,8 +288,10 @@ menu nfssource, y=-4, x=0, w=70, no box,
action { src_prompt(MSG_Host, nfs_host, sizeof nfs_host); };
option {src_legend(menu, MSG_Base_dir, nfs_dir);},
action { src_prompt(MSG_Base_dir, nfs_dir, sizeof nfs_dir); };
- option {src_legend(menu, MSG_Set_dir, set_dir);},
- action { src_prompt(MSG_Set_dir, set_dir, sizeof set_dir); };
+ option {src_legend(menu, MSG_Set_dir_bin, set_dir_bin);},
+ action { src_prompt(MSG_Set_dir_bin, set_dir_bin, sizeof set_dir_bin); };
+ option {src_legend(menu, MSG_Set_dir_src, set_dir_src);},
+ action { src_prompt(MSG_Set_dir_src, set_dir_src, sizeof set_dir_src); };
menu fdremount, title MSG_What_do_you_want_to_do;
option MSG_Try_again, exit, action { *(int *)arg = SET_CONTINUE; };
@@ -322,8 +326,10 @@ menu cdromsource, y=-4, x=0, w=70, no bo
display action { msg_display_add(MSG_cdromsource); };
option {src_legend(menu, MSG_Device, cdrom_dev);},
action { src_prompt(MSG_dev, cdrom_dev, sizeof cdrom_dev); };
- option {src_legend(menu, MSG_Set_dir, set_dir);},
- action { src_prompt(MSG_Set_dir, set_dir, sizeof set_dir); };
+ option {src_legend(menu, MSG_Set_dir_bin, set_dir_bin);},
+ action { src_prompt(MSG_Set_dir_bin, set_dir_bin, sizeof set_dir_bin); };
+ option {src_legend(menu, MSG_Set_dir_src, set_dir_src);},
+ action { src_prompt(MSG_Set_dir_src, set_dir_src, sizeof set_dir_src); };
menu localfssource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Continue;
display action { msg_display(MSG_localfssource); };
@@ -333,15 +339,19 @@ menu localfssource, y=-4, x=0, w=70, no
action { src_prompt(MSG_filesys, localfs_fs, sizeof localfs_fs); };
option {src_legend(menu, MSG_Base_dir, localfs_dir);},
action { src_prompt(MSG_Base_dir, localfs_dir, sizeof localfs_dir);};
- option {src_legend(menu, MSG_Set_dir, set_dir);},
- action { src_prompt(MSG_Set_dir, set_dir, sizeof set_dir); };
+ option {src_legend(menu, MSG_Set_dir_bin, set_dir_bin);},
+ action { src_prompt(MSG_Set_dir_bin, set_dir_bin, sizeof set_dir_bin); };
+ option {src_legend(menu, MSG_Set_dir_src, set_dir_src);},
+ action { src_prompt(MSG_Set_dir_src, set_dir_src, sizeof set_dir_src); };
menu localdirsource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Continue;
display action { msg_display(MSG_localdir); };
option {src_legend(menu, MSG_Base_dir, localfs_dir);},
action { src_prompt(MSG_Base_dir, localfs_dir, 60); };
- option {src_legend(menu, MSG_Set_dir, set_dir);},
- action { src_prompt(MSG_Set_dir, set_dir, 60); };
+ option {src_legend(menu, MSG_Set_dir_bin, set_dir_bin);},
+ action { src_prompt(MSG_Set_dir_bin, set_dir_bin, 60); };
+ option {src_legend(menu, MSG_Set_dir_src, set_dir_src);},
+ action { src_prompt(MSG_Set_dir_src, set_dir_src, 60); };
menu namesrv6, title MSG_Select_IPv6_DNS_server;
option "google-public-dns-a.google.com", exit, action
Index: src/distrib/utils/sysinst/msg.mi.de
diff -u src/distrib/utils/sysinst/msg.mi.de:1.60 src/distrib/utils/sysinst/msg.mi.de:1.61
--- src/distrib/utils/sysinst/msg.mi.de:1.60 Mon Jan 9 01:51:47 2012
+++ src/distrib/utils/sysinst/msg.mi.de Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.de,v 1.60 2012/01/09 01:51:47 riz Exp $ */
+/* $NetBSD: msg.mi.de,v 1.61 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -829,6 +829,24 @@ message set_X11_servers
message set_X11_prog
{X11 Programmierung}
+message set_source
+{Quelltexte}
+
+message set_syssrc
+{Kernel Quelltexte}
+
+message set_src
+{Basissystem Quelltexte}
+
+message set_sharesrc
+{Share Quelltexte}
+
+message set_gnusrc
+{GNU Quelltexte}
+
+message set_xsrc
+{X11 Quelltexte}
+
message cur_distsets_row
{%-27s %3s}
@@ -966,7 +984,8 @@ message Custom_installation {Benutzerdef
message hidden {** versteckt **}
message Host {Host}
message Base_dir {Basispfad}
-message Set_dir {Verzeichnis}
+message Set_dir_bin {Bin�rpaket-Verzeichnis}
+message Set_dir_src {Quelltext-Verzeichnis}
message Xfer_dir {Zwischenspeicher}
message User {Benutzer}
message Password {Passwort}
Index: src/distrib/utils/sysinst/msg.mi.en
diff -u src/distrib/utils/sysinst/msg.mi.en:1.168 src/distrib/utils/sysinst/msg.mi.en:1.169
--- src/distrib/utils/sysinst/msg.mi.en:1.168 Mon Jan 9 01:51:47 2012
+++ src/distrib/utils/sysinst/msg.mi.en Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.en,v 1.168 2012/01/09 01:51:47 riz Exp $ */
+/* $NetBSD: msg.mi.en,v 1.169 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -769,6 +769,24 @@ message set_X11_servers
message set_X11_prog
{X11 programming}
+message set_source
+{Source sets}
+
+message set_syssrc
+{Kernel sources}
+
+message set_src
+{Base sources}
+
+message set_sharesrc
+{Share sources}
+
+message set_gnusrc
+{GNU sources}
+
+message set_xsrc
+{X11 sources}
+
message cur_distsets_row
{%-27s %3s}
@@ -906,7 +924,8 @@ message Custom_installation {Custom inst
message hidden {** hidden **}
message Host {Host}
message Base_dir {Base directory}
-message Set_dir {Set directory}
+message Set_dir_bin {Binary set directory}
+message Set_dir_src {Source set directory}
message Xfer_dir {Transfer directory}
message User {User}
message Password {Password}
Index: src/distrib/utils/sysinst/msg.mi.es
diff -u src/distrib/utils/sysinst/msg.mi.es:1.38 src/distrib/utils/sysinst/msg.mi.es:1.39
--- src/distrib/utils/sysinst/msg.mi.es:1.38 Mon Jan 9 01:51:47 2012
+++ src/distrib/utils/sysinst/msg.mi.es Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.es,v 1.38 2012/01/09 01:51:47 riz Exp $ */
+/* $NetBSD: msg.mi.es,v 1.39 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -792,6 +792,24 @@ message set_X11_servers
message set_X11_prog
{Programaci�n de X11}
+message set_source
+{Source sets}
+
+message set_syssrc
+{Kernel sources}
+
+message set_src
+{Base sources}
+
+message set_sharesrc
+{Share sources}
+
+message set_gnusrc
+{GNU sources}
+
+message set_xsrc
+{X11 sources}
+
message cur_distsets_row
{%-27s %3s}
@@ -931,7 +949,8 @@ message Custom_installation {Instalaci�n
message hidden {** oculto **}
message Host {M�quina}
message Base_dir {Directorio base}
-message Set_dir {Directorio de conjuntos}
+message Set_dir_src {Directorio de conjuntos binary} /* fix XLAT */
+message Set_dir_bin {Directorio de conjuntos source} /* fix XLAT */
message Xfer_dir {Directorio a transferir a}
message User {Usuario}
message Password {Contrase�a}
Index: src/distrib/utils/sysinst/msg.mi.fr
diff -u src/distrib/utils/sysinst/msg.mi.fr:1.118 src/distrib/utils/sysinst/msg.mi.fr:1.119
--- src/distrib/utils/sysinst/msg.mi.fr:1.118 Mon Jan 9 01:51:47 2012
+++ src/distrib/utils/sysinst/msg.mi.fr Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.fr,v 1.118 2012/01/09 01:51:47 riz Exp $ */
+/* $NetBSD: msg.mi.fr,v 1.119 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -842,6 +842,24 @@ message set_X11_servers
message set_X11_prog
{X11 d�veloppement}
+message set_source
+{Source sets}
+
+message set_syssrc
+{Kernel sources}
+
+message set_src
+{Base sources}
+
+message set_sharesrc
+{Share sources}
+
+message set_gnusrc
+{GNU sources}
+
+message set_xsrc
+{X11 sources}
+
message cur_distsets_row
{%-33s %3s}
@@ -998,7 +1016,8 @@ message Custom_installation {Installatio
message hidden {** cach� **}
message Host {Serveur FTP}
message Base_dir {R�pertoire de base}
-message Set_dir {R�pertoire des composants}
+message Set_dir_bin {R�pertoire des composants binaire}
+message Set_dir_src {R�pertoire des composants source}
message Xfer_dir {R�pertoire de transfert}
message User {Utilisateur}
message Password {Mot de passe}
Index: src/distrib/utils/sysinst/msg.mi.pl
diff -u src/distrib/utils/sysinst/msg.mi.pl:1.77 src/distrib/utils/sysinst/msg.mi.pl:1.78
--- src/distrib/utils/sysinst/msg.mi.pl:1.77 Mon Jan 9 01:51:47 2012
+++ src/distrib/utils/sysinst/msg.mi.pl Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: msg.mi.pl,v 1.77 2012/01/09 01:51:47 riz Exp $ */
+/* $NetBSD: msg.mi.pl,v 1.78 2012/01/10 21:02:47 gson Exp $ */
/* Based on english version: */
/* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */
@@ -767,6 +767,24 @@ message set_X11_servers
message set_X11_prog
{Programowanie X11}
+message set_source
+{Source sets}
+
+message set_syssrc
+{Kernel sources}
+
+message set_src
+{Base sources}
+
+message set_sharesrc
+{Share sources}
+
+message set_gnusrc
+{GNU sources}
+
+message set_xsrc
+{X11 sources}
+
message cur_distsets_row
{%-30s %3s}
@@ -900,7 +918,8 @@ message Custom_installation {Inna instal
message hidden {** ukryte **}
message Host {Host}
message Base_dir {Katalog}
-message Set_dir {Katalog}
+message Set_dir_src {Katalog pakiet binary} /* fix XLAT */
+message Set_dir_bin {Katalog pakiet source} /* fix XLAT */
message Xfer_dir {Transfer Katalog} /* fix XLAT */
message User {Uzytkownik}
message Password {Haslo}
Index: src/distrib/utils/sysinst/net.c
diff -u src/distrib/utils/sysinst/net.c:1.129 src/distrib/utils/sysinst/net.c:1.130
--- src/distrib/utils/sysinst/net.c:1.129 Mon Jan 9 02:52:50 2012
+++ src/distrib/utils/sysinst/net.c Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: net.c,v 1.129 2012/01/09 02:52:50 riz Exp $ */
+/* $NetBSD: net.c,v 1.130 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -945,7 +945,8 @@ ftp_fetch(const char *set_name)
const char *ftp_opt;
char ftp_user_encoded[STRSIZE];
char ftp_dir_encoded[STRSIZE];
- char *cp, *set_dir2;
+ char *cp;
+ const char *set_dir2;
int rval;
/*
@@ -981,7 +982,7 @@ ftp_fetch(const char *set_name)
if (cp != ftp_dir_encoded && cp[-1] != '/')
*cp++ = '/';
- set_dir2 = set_dir;
+ set_dir2 = set_dir_for_set(set_name);
while (*set_dir2 == '/')
++set_dir2;
@@ -1031,7 +1032,9 @@ get_via_ftp(const char *xfer_type)
/* We'll fetch each file just before installing it */
fetch_fn = ftp_fetch;
ftp.xfer_type = xfer_type;
- snprintf(ext_dir, sizeof ext_dir, "%s/%s", target_prefix(),
+ snprintf(ext_dir_bin, sizeof ext_dir_bin, "%s/%s", target_prefix(),
+ xfer_dir + (*xfer_dir == '/'));
+ snprintf(ext_dir_src, sizeof ext_dir_src, "%s/%s", target_prefix(),
xfer_dir + (*xfer_dir == '/'));
return SET_OK;
@@ -1046,9 +1049,10 @@ get_via_nfs(void)
return SET_RETRY;
/* If root is on NFS and we have sets, skip this step. */
- if (statvfs(set_dir, &sb) == 0 &&
+ if (statvfs(set_dir_bin, &sb) == 0 &&
strcmp(sb.f_fstypename, "nfs") == 0) {
- strlcpy(ext_dir, set_dir, sizeof ext_dir);
+ strlcpy(ext_dir_bin, set_dir_bin, sizeof ext_dir_bin);
+ strlcpy(ext_dir_src, set_dir_src, sizeof ext_dir_src);
return SET_OK;
}
@@ -1062,7 +1066,8 @@ get_via_nfs(void)
mnt2_mounted = 1;
- snprintf(ext_dir, sizeof ext_dir, "/mnt2/%s", set_dir);
+ snprintf(ext_dir_bin, sizeof ext_dir_bin, "/mnt2/%s", set_dir_bin);
+ snprintf(ext_dir_src, sizeof ext_dir_src, "/mnt2/%s", set_dir_src);
/* return location, don't clean... */
return SET_OK;
Index: src/distrib/utils/sysinst/util.c
diff -u src/distrib/utils/sysinst/util.c:1.172 src/distrib/utils/sysinst/util.c:1.173
--- src/distrib/utils/sysinst/util.c:1.172 Thu Jan 5 21:29:25 2012
+++ src/distrib/utils/sysinst/util.c Tue Jan 10 21:02:47 2012
@@ -1,4 +1,4 @@
-/* $NetBSD: util.c,v 1.172 2012/01/05 21:29:25 christos Exp $ */
+/* $NetBSD: util.c,v 1.173 2012/01/10 21:02:47 gson Exp $ */
/*
* Copyright 1997 Piermont Information Systems Inc.
@@ -68,7 +68,7 @@
#define MD_SETS_SELECTED_NOX SET_KERNEL_1, SET_SYSTEM, SET_MD
#endif
#ifndef MD_SETS_VALID
-#define MD_SETS_VALID SET_KERNEL, SET_SYSTEM, SET_X11, SET_MD
+#define MD_SETS_VALID SET_KERNEL, SET_SYSTEM, SET_X11, SET_MD, SET_SOURCE
#endif
#define MAX_CD_DEVS 256 /* how many cd drives do we expect to attach */
@@ -150,6 +150,14 @@ distinfo dist_list[] = {
{SET_MD_4_NAME, SET_MD_4, MSG_set_md_4, NULL},
#endif
+ {NULL, SET_GROUP, MSG_set_source, NULL},
+ {"syssrc", SET_SYSSRC, MSG_set_syssrc, NULL},
+ {"src", SET_SRC, MSG_set_src, NULL},
+ {"sharesrc", SET_SHARESRC, MSG_set_sharesrc, NULL},
+ {"gnusrc", SET_GNUSRC, MSG_set_gnusrc, NULL},
+ {"xsrc", SET_XSRC, MSG_set_xsrc, NULL},
+ {NULL, SET_GROUP_END, NULL, NULL},
+
{NULL, SET_LAST, NULL, NULL},
};
@@ -357,7 +365,8 @@ get_via_floppy(void)
fetch_fn = floppy_fetch;
/* Set ext_dir for absolute path. */
- snprintf(ext_dir, sizeof ext_dir, "%s/%s", target_prefix(), xfer_dir);
+ snprintf(ext_dir_bin, sizeof ext_dir_bin, "%s/%s", target_prefix(), xfer_dir);
+ snprintf(ext_dir_src, sizeof ext_dir_src, "%s/%s", target_prefix(), xfer_dir);
return SET_OK;
}
@@ -473,8 +482,9 @@ cd_has_sets(void)
mnt2_mounted = 1;
- snprintf(ext_dir, sizeof ext_dir, "%s/%s", "/mnt2", set_dir);
- return dir_exists_p(ext_dir);
+ snprintf(ext_dir_bin, sizeof ext_dir_bin, "%s/%s", "/mnt2", set_dir_bin);
+ snprintf(ext_dir_src, sizeof ext_dir_src, "%s/%s", "/mnt2", set_dir_src);
+ return dir_exists_p(ext_dir_bin);
}
@@ -520,10 +530,11 @@ get_via_cdrom(void)
bool silent = false;
/* If root is a CD-ROM and we have sets, skip this step. */
- if (statvfs(set_dir, &sb) == 0 &&
+ if (statvfs(set_dir_bin, &sb) == 0 &&
(strcmp(sb.f_fstypename, MOUNT_CD9660) == 0
|| strcmp(sb.f_fstypename, MOUNT_UDF) == 0)) {
- strlcpy(ext_dir, set_dir, sizeof ext_dir);
+ strlcpy(ext_dir_bin, set_dir_bin, sizeof ext_dir_bin);
+ strlcpy(ext_dir_src, set_dir_src, sizeof ext_dir_src);
return SET_OK;
}
@@ -593,8 +604,10 @@ get_via_localfs(void)
mnt2_mounted = 1;
- snprintf(ext_dir, sizeof ext_dir, "%s/%s/%s",
- "/mnt2", localfs_dir, set_dir);
+ snprintf(ext_dir_bin, sizeof ext_dir_bin, "%s/%s/%s",
+ "/mnt2", localfs_dir, set_dir_bin);
+ snprintf(ext_dir_src, sizeof ext_dir_src, "%s/%s/%s",
+ "/mnt2", localfs_dir, set_dir_src);
return SET_OK;
}
@@ -614,7 +627,8 @@ get_via_localdir(void)
* We have to have an absolute path ('cos pax runs in a
* different directory), make it so.
*/
- snprintf(ext_dir, sizeof ext_dir, "/%s/%s", localfs_dir, set_dir);
+ snprintf(ext_dir_bin, sizeof ext_dir_bin, "/%s/%s", localfs_dir, set_dir_bin);
+ snprintf(ext_dir_src, sizeof ext_dir_src, "/%s/%s", localfs_dir, set_dir_src);
return SET_OK;
}
@@ -856,7 +870,7 @@ extract_file(distinfo *dist, int update)
make_target_dir(xfer_dir);
(void)snprintf(path, sizeof path, "%s/%s%s",
- ext_dir, dist->name, dist_postfix);
+ ext_dir_for_set(dist->name), dist->name, dist_postfix);
owd = getcwd(NULL, 0);
@@ -876,7 +890,7 @@ extract_file(distinfo *dist, int update)
* characters and check again
*/
(void)snprintf(path, sizeof path, "%s/%.8s%.4s", /* 4 as includes '.' */
- ext_dir, dist->name, dist_postfix);
+ ext_dir_for_set(dist->name), dist->name, dist_postfix);
if (!file_exists_p(path)) {
#endif /* SUPPORT_8_3_SOURCE_FILESYSTEM */
@@ -1480,3 +1494,20 @@ check_lfs_progs(void)
return 0;
#endif
}
+
+int
+set_is_source(const char *set_name) {
+ int len = strlen(set_name);
+ return len >= 3 && memcmp(set_name + len - 3, "src", 3) == 0;
+}
+
+const char *
+set_dir_for_set(const char *set_name) {
+ return set_is_source(set_name) ? set_dir_src : set_dir_bin;
+}
+
+const char *
+ext_dir_for_set(const char *set_name) {
+ return set_is_source(set_name) ? ext_dir_src : ext_dir_bin;
+}
+