Module Name: src Committed By: martin Date: Sat Oct 24 16:13:15 UTC 2020
Modified Files: src/usr.sbin/sysinst: menus.mi msg.mi.de msg.mi.en msg.mi.es msg.mi.fr msg.mi.pl util.c Log Message: When looking for available CD media, skip those that are already mounted. When no medium with sets is found, show a new error message and return to the source selection menu. Rearrange all source option menus to have the proper set suffix available (either .tgz or .tar.xz). To generate a diff of this commit: cvs rdiff -u -r1.21 -r1.22 src/usr.sbin/sysinst/menus.mi cvs rdiff -u -r1.24 -r1.25 src/usr.sbin/sysinst/msg.mi.de cvs rdiff -u -r1.32 -r1.33 src/usr.sbin/sysinst/msg.mi.en \ src/usr.sbin/sysinst/msg.mi.pl cvs rdiff -u -r1.26 -r1.27 src/usr.sbin/sysinst/msg.mi.es cvs rdiff -u -r1.31 -r1.32 src/usr.sbin/sysinst/msg.mi.fr cvs rdiff -u -r1.48 -r1.49 src/usr.sbin/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/usr.sbin/sysinst/menus.mi diff -u src/usr.sbin/sysinst/menus.mi:1.21 src/usr.sbin/sysinst/menus.mi:1.22 --- src/usr.sbin/sysinst/menus.mi:1.21 Mon Jan 27 21:21:22 2020 +++ src/usr.sbin/sysinst/menus.mi Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: menus.mi,v 1.21 2020/01/27 21:21:22 martin Exp $ */ +/* $NetBSD: menus.mi,v 1.22 2020/10/24 16:13:15 martin Exp $ */ /*- * Copyright (c) 2003 The NetBSD Foundation, Inc. @@ -362,8 +362,10 @@ menu distset, title MSG_Select_your_dist menu ftpsource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Get_Distribution; - display action { msg_fmt_display(MSG_ftpsource, "%s", - url_proto((uintptr_t)((arg_rv*)arg)->arg)); }; + display action { + msg_display_subst(MSG_ftpsource, 2, "." SETS_TAR_SUFF, + url_proto((uintptr_t)((arg_rv*)arg)->arg)); + }; option {src_legend(menu, MSG_Host, ftp.xfer_host[(uintptr_t)((arg_rv*)arg)->arg]);}, action { src_prompt(MSG_Host, ftp.xfer_host[(uintptr_t)((arg_rv*)arg)->arg], sizeof ftp.xfer_host[(uintptr_t)((arg_rv*)arg)->arg]); }; option {src_legend(menu, MSG_Base_dir, ftp.dir);}, @@ -412,7 +414,8 @@ menu ftpsource, y=-4, x=0, w=70, no box, menu nfssource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Get_Distribution; - display action { msg_display(MSG_nfssource); }; + display action { const char suff[] = "." SETS_TAR_SUFF; + msg_display_subst(MSG_nfssource, 1, &suff); }; option {src_legend(menu, MSG_Host, nfs_host);}, action { src_prompt(MSG_Host, nfs_host, sizeof nfs_host); }; option {src_legend(menu, MSG_Base_dir, nfs_dir);}, @@ -459,7 +462,8 @@ menu floppysource, y=-4, x=0, w=70, no b option MSG_exit_menu_generic, exit, action { *((int*)arg) = SET_RETRY; }; menu cdromsource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Continue; - display action { msg_display(MSG_cdromsource); }; + display action { const char suff[] = "." SETS_TAR_SUFF; + msg_display_subst(MSG_cdromsource, 1, &suff); }; 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_bin, set_dir_bin);}, @@ -469,7 +473,8 @@ menu cdromsource, y=-4, x=0, w=70, no bo option MSG_exit_menu_generic, exit, action { *((int*)arg) = SET_RETRY; }; menu localfssource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Continue; - display action { msg_display(MSG_localfssource); }; + display action { const char suff[] = "." SETS_TAR_SUFF; + msg_display_subst(MSG_localfssource, 1, &suff); }; option {src_legend(menu, MSG_Device, localfs_dev);}, action { src_prompt(MSG_dev, localfs_dev, sizeof localfs_dev);}; option {src_legend(menu, MSG_File_system, localfs_fs);}, @@ -483,7 +488,8 @@ menu localfssource, y=-4, x=0, w=70, no option MSG_exit_menu_generic, exit, action { *((int*)arg) = SET_RETRY; }; menu localdirsource, y=-4, x=0, w=70, no box, no clear, exitstring MSG_Continue; - display action { msg_display(MSG_localdir); }; + display action { const char suff[] = "." SETS_TAR_SUFF; + msg_display_subst(MSG_localdir, 1, &suff); }; 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_bin, set_dir_bin);}, Index: src/usr.sbin/sysinst/msg.mi.de diff -u src/usr.sbin/sysinst/msg.mi.de:1.24 src/usr.sbin/sysinst/msg.mi.de:1.25 --- src/usr.sbin/sysinst/msg.mi.de:1.24 Tue Oct 13 17:26:28 2020 +++ src/usr.sbin/sysinst/msg.mi.de Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.de,v 1.24 2020/10/13 17:26:28 martin Exp $ */ +/* $NetBSD: msg.mi.de,v 1.25 2020/10/24 16:13:15 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -507,8 +507,12 @@ alle Pakete (volle Installation) zu inst definierten Satz auszuwählen. } +/* Called with: Example + * $0 = sets suffix .tgz + * $1 = URL protocol used ftp + */ message ftpsource -{Dies sind die Daten zum Aufbau einer %s-Verbindung. +{Dies sind die Daten zum Aufbau einer $1-Verbindung. Falls der Benutzer "ftp" ist, benötigen Sie kein Passwort. } @@ -519,10 +523,13 @@ message email message dev {Laufwerk} +/* Called with: Example + * $0 = sets suffix .tgz + */ message nfssource {Geben Sie den NFS-Server samt Verzeichnis an, auf dem die Distribution zu finden ist. -(Das Verzeichnis muss .tgz Dateien enthalten und über NFS mountbar sein.) +(Das Verzeichnis muss $0 Dateien enthalten und über NFS mountbar sein.) } @@ -533,13 +540,19 @@ Verzeichnis der Diskette liegen. } +/* Called with: Example + * $0 = sets suffix .tgz + */ message cdromsource {Geben Sie das CD-Laufwerk und das entsprechende Verzeichnis an, in dem die Distribution zu finden ist. -(Das Verzeichnis muss .tgz Dateien enthalten.) +(Das Verzeichnis muss $0 Dateien enthalten.) } +message No_cd_found +{Kein CD Laufwerk enthält eine CD mit den Distributions-Dateien!} + message Available_cds {Verfügbare CDs} @@ -550,17 +563,23 @@ message cd_path_not_found {Die Installationsdateien wurden auf der ausgewählten CD nicht gefunden. Bitte prüfen Sie den Gerätenamen und Pfad der Installationsdateien.} +/* Called with: Example + * $0 = sets suffix .tgz + */ message localfssource {Geben Sie das noch nicht gemountete lokale Gerät und dessen entsprechendes Verzeichnis an, in dem die Distribution zu finden ist. -(Das Verzeichnis muss .tgz Dateien enthalten.) +(Das Verzeichnis muss $0 Dateien enthalten.) } +/* Called with: Example + * $0 = sets suffix .tgz + */ message localdir {Geben Sie das Verzeichnis des bereits gemounteten lokalen Geräts an, in dem die Distribution zu finden ist. -(Das Verzeichnis muss .tgz Dateien enthalten.) +(Das Verzeichnis muss $0 Dateien enthalten.) } Index: src/usr.sbin/sysinst/msg.mi.en diff -u src/usr.sbin/sysinst/msg.mi.en:1.32 src/usr.sbin/sysinst/msg.mi.en:1.33 --- src/usr.sbin/sysinst/msg.mi.en:1.32 Tue Oct 13 17:26:28 2020 +++ src/usr.sbin/sysinst/msg.mi.en Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.en,v 1.32 2020/10/13 17:26:28 martin Exp $ */ +/* $NetBSD: msg.mi.en,v 1.33 2020/10/24 16:13:15 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -487,8 +487,12 @@ a core set (Minimal installation), all o group of sets (Custom installation). } +/* Called with: Example + * $0 = sets suffix .tgz + * $1 = URL protocol used ftp + */ message ftpsource -{The following are the %s site, directory, user, and password that +{The following are the $1 site, directory, user, and password that will be used. If "user" is "ftp", then the password is not needed. } @@ -499,9 +503,12 @@ message email message dev {device} +/* Called with: Example + * $0 = sets suffix .tgz + */ message nfssource {Enter the nfs host and server directory where the distribution is located. -Remember, the directory should contain the .tgz files and +Remember, the directory should contain the $0 files and must be nfs mountable. } @@ -512,13 +519,20 @@ file system. The set files must be in t } +/* Called with: Example + * $0 = sets suffix .tgz + */ message cdromsource {Enter the CDROM device to be used and directory on the CDROM where the distribution is located. -Remember, the directory should contain the .tgz files. +Remember, the directory should contain the $0 files. } +message No_cd_found +{Could not locate a CD medium in any drive with the distribution sets. +Check the proper medium and retry!} + message Available_cds {Available CDs } @@ -529,16 +543,22 @@ message cd_path_not_found {The installation sets have not been found at the default location on this CD. Please check the device and path name.} +/* Called with: Example + * $0 = sets suffix .tgz + */ message localfssource {Enter the unmounted local device and directory on that device where the distribution is located. -Remember, the directory should contain the .tgz files. +Remember, the directory should contain the $0 files. } +/* Called with: Example + * $0 = sets suffix .tgz + */ message localdir {Enter the already-mounted local directory where the distribution is located. -Remember, the directory should contain the .tgz files. +Remember, the directory should contain the $0 files. } Index: src/usr.sbin/sysinst/msg.mi.pl diff -u src/usr.sbin/sysinst/msg.mi.pl:1.32 src/usr.sbin/sysinst/msg.mi.pl:1.33 --- src/usr.sbin/sysinst/msg.mi.pl:1.32 Tue Oct 13 17:26:28 2020 +++ src/usr.sbin/sysinst/msg.mi.pl Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.pl,v 1.32 2020/10/13 17:26:28 martin Exp $ */ +/* $NetBSD: msg.mi.pl,v 1.33 2020/10/24 16:13:15 martin Exp $ */ /* Based on english version: */ /* NetBSD: msg.mi.pl,v 1.36 2004/04/17 18:55:35 atatat Exp */ @@ -480,10 +480,12 @@ takze zainstalowac tylko podstawowy zest wybrac te, ktore chcesz (Inna instalacja) } - - +/* Called with: Example + * $0 = sets suffix .tgz + * $1 = URL protocol used ftp + */ message ftpsource -{Ponizej masz site %s, katalog, uzytkownika, oraz haslo gotowe do uzycia. +{Ponizej masz site $1, katalog, uzytkownika, oraz haslo gotowe do uzycia. Jesli "uzytkownik" to "ftp", wtedy haslo nie jest wymagane. } @@ -494,9 +496,12 @@ message email message dev {urzadzenie} +/* Called with: Example + * $0 = sets suffix .tgz + */ message nfssource {Wprowadz hosta NFS oraz katalog gdzie znajduje sie dystrybucja. -Pamietaj, ze katalog musi zawierac pliki .tgz, oraz musi byc +Pamietaj, ze katalog musi zawierac pliki $0, oraz musi byc dostepny przez NFS. } @@ -508,13 +513,20 @@ znajdowac sie w glownym katalogu dyskiet } +/* Called with: Example + * $0 = sets suffix .tgz + */ message cdromsource {Podaj urzadzenie CDROM oraz katalog na CDROMie, w ktorym znajduje sie dystrybucja. -Pamietaj, ze katalog musi zawierac pliki .tgz. +Pamietaj, ze katalog musi zawierac pliki $0. } +message No_cd_found +{Could not locate a CD medium in any drive with the distribution sets. +Check the proper medium and retry!} + message Available_cds {Dostepne napedy CD} @@ -526,16 +538,22 @@ message cd_path_not_found {Zbiory instalacyjne nie zostaly znalezione w domyslnym polozeniu na tym CD. Prosze sprawdzic urzadzenie i sciezke.} +/* Called with: Example + * $0 = sets suffix .tgz + */ message localfssource {Podaj niezamontowane lokalne urzadzenie oraz katalog na nim, gdzie znajduje sie dystrybucja. -Pamietaj, ze katalog musi zawierac pliki .tgz. +Pamietaj, ze katalog musi zawierac pliki $0. } +/* Called with: Example + * $0 = sets suffix .tgz + */ message localdir {Podaj aktualnie zamontowany lokalny katalog, gdzie znajduje sie dystrybucja. -Pamietaj, ze katalog musi zawierac pliki .tgz. +Pamietaj, ze katalog musi zawierac pliki $0. } Index: src/usr.sbin/sysinst/msg.mi.es diff -u src/usr.sbin/sysinst/msg.mi.es:1.26 src/usr.sbin/sysinst/msg.mi.es:1.27 --- src/usr.sbin/sysinst/msg.mi.es:1.26 Tue Oct 13 17:26:28 2020 +++ src/usr.sbin/sysinst/msg.mi.es Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.es,v 1.26 2020/10/13 17:26:28 martin Exp $ */ +/* $NetBSD: msg.mi.es,v 1.27 2020/10/24 16:13:15 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -502,8 +502,12 @@ instalaciones. Puede escoger para insta seleccionar de entre los conjuntos de distribución opcionales. } +/* Called with: Example + * $0 = sets suffix .tgz + * $1 = URL protocol used ftp + */ message ftpsource -{Lo siguiente son el sitio %s, directorio, usuario y contraseña que se +{Lo siguiente son el sitio $1, directorio, usuario y contraseña que se usarán. Si «usuario» es «ftp», no se necesita contraseña.. } @@ -514,9 +518,12 @@ message email message dev {dispositivo} +/* Called with: Example + * $0 = sets suffix .tgz + */ message nfssource {Introduzca el servidor nfs y el directorio del servidor donde se encuentre -la distribución. Recuerde: el directorio debe contener los archivos .tgz y +la distribución. Recuerde: el directorio debe contener los archivos $0 y debe ser montable por nfs. } @@ -528,13 +535,20 @@ en el directorio raíz de los disquetes. } +/* Called with: Example + * $0 = sets suffix .tgz + */ message cdromsource {Introduzca el dispositivo de CDROM a usar y el directorio del CDROM donde se encuentre la distribución. -Recuerde, el directorio debe contener los archivos .tgz. +Recuerde, el directorio debe contener los archivos $0. } +message No_cd_found +{Could not locate a CD medium in any drive with the distribution sets. +Check the proper medium and retry!} + message Available_cds {Available CDs} @@ -545,16 +559,22 @@ message cd_path_not_found {The installation sets have not been found at the default location on this CD. Please check device and path name.} +/* Called with: Example + * $0 = sets suffix .tgz + */ message localfssource {Introduzca el dispositivo local desmontado y el directorio de ese dispositivo donde se encuentre la distribución. -Recuerde, el directorio debe contener los archivos .tgz. +Recuerde, el directorio debe contener los archivos $0. } +/* Called with: Example + * $0 = sets suffix .tgz + */ message localdir {Introduzca el directorio local ya montado donde se encuentre la distribución. -Recuerde, el directorio debe contener los archivos .tgz. +Recuerde, el directorio debe contener los archivos $0. } Index: src/usr.sbin/sysinst/msg.mi.fr diff -u src/usr.sbin/sysinst/msg.mi.fr:1.31 src/usr.sbin/sysinst/msg.mi.fr:1.32 --- src/usr.sbin/sysinst/msg.mi.fr:1.31 Tue Oct 13 17:26:28 2020 +++ src/usr.sbin/sysinst/msg.mi.fr Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: msg.mi.fr,v 1.31 2020/10/13 17:26:28 martin Exp $ */ +/* $NetBSD: msg.mi.fr,v 1.32 2020/10/24 16:13:15 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -498,13 +498,17 @@ Trois types d'installations vous sont pr personnalisée. } +/* Called with: Example + * $0 = sets suffix .tgz + * $1 = URL protocol used ftp + */ message ftpsource -{Voici la configuration actuelle pour : nom du site (%s), répertoire, nom +{Voici la configuration actuelle pour : nom du site ($1), répertoire, nom d'utilisateur et mot de passe. Si vous utilisez le mode FTP, le mot de passe n'est pas requis. Le répertoire contenant les composants doit être défini par rapport au répertoire de base, et contenir chaque composant sous -la forme de fichiers .tgz +la forme de fichiers $0 } @@ -537,6 +541,9 @@ tgz. } +message No_cd_found +{Could not locate a CD medium in any drive with the distribution sets. +Check the proper medium and retry!} message Available_cds {CD-ROM disponibles} Index: src/usr.sbin/sysinst/util.c diff -u src/usr.sbin/sysinst/util.c:1.48 src/usr.sbin/sysinst/util.c:1.49 --- src/usr.sbin/sysinst/util.c:1.48 Tue Oct 13 17:26:28 2020 +++ src/usr.sbin/sysinst/util.c Sat Oct 24 16:13:15 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: util.c,v 1.48 2020/10/13 17:26:28 martin Exp $ */ +/* $NetBSD: util.c,v 1.49 2020/10/24 16:13:15 martin Exp $ */ /* * Copyright 1997 Piermont Information Systems Inc. @@ -419,6 +419,8 @@ get_iso9660_volname(int dev, int sess, c * Local state while iterating CDs and collecting volumes */ struct get_available_cds_state { + size_t num_mounted; + struct statvfs *mounted; struct cd_info *info; size_t count; }; @@ -430,14 +432,26 @@ static bool get_available_cds_helper(void *arg, const char *device) { struct get_available_cds_state *state = arg; - char dname[16], volname[80]; + char dname[16], tname[16], volname[80], *t; struct disklabel label; - int part, dev, error, sess, ready; + int part, dev, error, sess, ready, tlen; if (!is_cdrom_device(device, false)) return true; sprintf(dname, "/dev/r%s%c", device, 'a'+RAW_PART); + tlen = sprintf(tname, "/dev/%s", device); + + /* check if this is mounted already */ + for (size_t i = 0; i < state->num_mounted; i++) { + if (strncmp(state->mounted[i].f_mntfromname, tname, tlen) + == 0) { + t = state->mounted[i].f_mntfromname + tlen; + if (t[0] >= 'a' && t[0] <= 'z' && t[1] == 0) + return true; + } + } + dev = open(dname, O_RDONLY, 0); if (dev == -1) return true; @@ -501,12 +515,24 @@ static int get_available_cds(void) { struct get_available_cds_state data; + int n, e; + memset(&data, 0, sizeof data); data.info = cds; - data.count = 0; + + n = getvfsstat(NULL, 0, ST_NOWAIT); + if (n > 0) { + data.mounted = calloc(n, sizeof(*data.mounted)); + e = getvfsstat(data.mounted, n*sizeof(*data.mounted), + ST_NOWAIT); + assert(e == n); + data.num_mounted = n; + } enumerate_disks(&data, get_available_cds_helper); + free(data.mounted); + return data.count; } @@ -590,7 +616,8 @@ get_via_cdrom(void) memset(cd_menu, 0, sizeof(cd_menu)); num_cds = get_available_cds(); if (num_cds <= 0) { - silent = true; + hit_enter_to_continue(MSG_No_cd_found, NULL); + return SET_RETRY; } else if (num_cds == 1) { /* single CD found, check for sets on it */ strcpy(cdrom_dev, cds[0].device_name);