diff options
author | Ed Maste <emaste@FreeBSD.org> | 2012-01-25 02:15:40 +0000 |
---|---|---|
committer | Ed Maste <emaste@FreeBSD.org> | 2012-01-25 02:15:40 +0000 |
commit | 3129859c9285ce9fa7e088f3b0619d79a895ee9b (patch) | |
tree | 209e3e4ffc74be26b845540a12e20ca5600e845d /usr.sbin | |
parent | 640372388086834e56fe505e287c42ff1580bbd6 (diff) | |
download | src-3129859c9285ce9fa7e088f3b0619d79a895ee9b.tar.gz src-3129859c9285ce9fa7e088f3b0619d79a895ee9b.zip |
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
Notes
Notes:
svn path=/head/; revision=230520
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/tzsetup/tzsetup.c | 35 |
1 files changed, 12 insertions, 23 deletions
diff --git a/usr.sbin/tzsetup/tzsetup.c b/usr.sbin/tzsetup/tzsetup.c index 3219439b6213..5da9d7224a5d 100644 --- a/usr.sbin/tzsetup/tzsetup.c +++ b/usr.sbin/tzsetup/tzsetup.c @@ -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; |