Author: dteske
Date: Mon Mar  4 01:47:37 2013
New Revision: 247749
URL: http://svnweb.freebsd.org/changeset/base/247749

Log:
  MFC r230520:
  
  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: dteske

Modified:
  stable/8/usr.sbin/tzsetup/tzsetup.c

Modified: stable/8/usr.sbin/tzsetup/tzsetup.c
==============================================================================
--- stable/8/usr.sbin/tzsetup/tzsetup.c Mon Mar  4 01:35:56 2013        
(r247748)
+++ stable/8/usr.sbin/tzsetup/tzsetup.c Mon Mar  4 01:47:37 2013        
(r247749)
@@ -842,32 +842,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);
@@ -875,7 +859,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);
        }
@@ -895,6 +879,11 @@ main(int argc, char **argv)
                /* FALLTHROUGH */
        }
 
+       read_iso3166_table();
+       read_zones();
+       sort_countries();
+       make_menus();
+
        init_dialog();
        if (skiputc == 0) {
                snprintf(title, sizeof(title),
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to