Clean up reinstall option and remove duplicate code

- Move the reinstall logic to be before menus are initialised
  (menus are not needed when reinstalling a zonefile).

- Remove unnecessary re-initialization of path_db.

- Update variable name and error message because we now use the
  zone name relative to /usr/share/zoneinfo, not the full path.

pr:		bin/164041
Submitted by:	Devin Teske <dteske vicor com>
MFC after:	1 week
This commit is contained in:
Ed Maste 2012-01-25 02:15:40 +00:00
parent 6403723880
commit 3129859c92

View File

@ -951,32 +951,16 @@ main(int argc, char **argv)
/* Override the user-supplied umask. */
(void)umask(S_IWGRP | S_IWOTH);
read_iso3166_table();
read_zones();
sort_countries();
make_menus();
if (reinstall == 1) {
FILE *f;
char zonefile[MAXPATHLEN];
char path_db[MAXPATHLEN];
zonefile[0] = '\0';
path_db[0] = '\0';
if (chrootenv != NULL) {
sprintf(zonefile, "%s/", chrootenv);
sprintf(path_db, "%s/", chrootenv);
}
strcat(zonefile, _PATH_ZONEINFO);
strcat(zonefile, "/");
strcat(path_db, _PATH_DB);
char zoneinfo[MAXPATHLEN];
if ((f = fopen(path_db, "r")) != NULL) {
if (fgets(zonefile, sizeof(zonefile), f) != NULL) {
zonefile[sizeof(zonefile) - 1] = 0;
if (strlen(zonefile) > 0) {
zonefile[strlen(zonefile) - 1] = 0;
rv = install_zoneinfo(zonefile);
if (fgets(zoneinfo, sizeof(zoneinfo), f) != NULL) {
zoneinfo[sizeof(zoneinfo) - 1] = 0;
if (strlen(zoneinfo) > 0) {
zoneinfo[strlen(zoneinfo) - 1] = 0;
rv = install_zoneinfo(zoneinfo);
exit(rv & ~DITEM_LEAVE_MENU);
}
errx(1, "Error reading %s.\n", path_db);
@ -984,7 +968,7 @@ main(int argc, char **argv)
fclose(f);
errx(1,
"Unable to determine earlier installed zoneinfo "
"file. Check %s", path_db);
"name. Check %s", path_db);
}
errx(1, "Cannot open %s for reading. Does it exist?", path_db);
}
@ -1004,6 +988,11 @@ main(int argc, char **argv)
/* FALLTHROUGH */
}
read_iso3166_table();
read_zones();
sort_countries();
make_menus();
init_dialog(stdin, stdout);
if (skiputc == 0) {
DIALOG_VARS save_vars;