]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - src/install+setup/setup/timezone.c
Alte Stylesheets entfernt. Wir haben ja Themes.
[people/pmueller/ipfire-2.x.git] / src / install+setup / setup / timezone.c
index bdf890354b6c4e06f0728e233b65beed3428dcc8..d0a848378b1ee7cdea515df9ae5bb96edb898c75 100644 (file)
-/* SmoothWall setup program.\r
- *\r
- * This program is distributed under the terms of the GNU General Public\r
- * Licence.  See the file COPYING for details.\r
- *\r
- * (c) Lawrence Manning, 2001\r
- * Stuff for setting the timezone.\r
- * \r
- * $Id: timezone.c,v 1.4.2.1 2004/04/14 22:05:41 gespinasse Exp $\r
- * \r
- */\r
-\r
-#include "setup.h"\r
\r
-extern FILE *flog;\r
-extern char *mylog;\r
-\r
-extern char **ctr;\r
-\r
-extern int automode;\r
-\r
-#define MAX_FILENAMES 5000\r
-#define ZONEFILES "/usr/share/zoneinfo/posix"\r
-\r
-static int filenamecount;\r
-static char *filenames[MAX_FILENAMES];\r
-static char *displaynames[MAX_FILENAMES];\r
-\r
-static int process(char *prefix, char *path);\r
-static int cmp(const void *s1, const void *s2);\r
-\r
-int handletimezone(void)\r
-{\r
-       int c;\r
-       int choice;\r
-       char *temp;\r
-       struct keyvalue *kv = initkeyvalues();  \r
-       int rc;\r
-       int result;\r
-       char timezone[STRING_SIZE];\r
-\r
-       filenamecount = 0;      \r
-\r
-       process(ZONEFILES, "");\r
-       filenames[filenamecount] = NULL;\r
-       qsort(filenames, filenamecount, sizeof(char *), cmp);\r
-       \r
-       for (c = 0; filenames[c]; c++)\r
-       {\r
-               displaynames[c] = malloc(STRING_SIZE);\r
-               if ((temp = strstr(filenames[c], ZONEFILES)))\r
-                       strcpy(displaynames[c], temp + strlen(ZONEFILES) + 1);\r
-               else\r
-                       strcpy(displaynames[c], filenames[c]);\r
-       }\r
-       displaynames[c] = NULL;\r
-       \r
-       if (!(readkeyvalues(kv, CONFIG_ROOT "/main/settings")))\r
-       {\r
-               freekeyvalues(kv);\r
-               errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);\r
-               return 0;\r
-       }       \r
-       \r
-       strcpy(timezone, ZONEFILES "/Europe/Berlin");\r
-       findkey(kv, "TIMEZONE", timezone);\r
-       \r
-       choice = 0;\r
-       for (c = 0; filenames[c]; c++)\r
-       {\r
-               if (strcmp(timezone, filenames[c]) == 0)\r
-                       choice = c;\r
-       }\r
-       \r
-       rc = newtWinMenu(ctr[TR_TIMEZONE], ctr[TR_TIMEZONE_LONG], 50, 5, 5, 6, displaynames, &choice,\r
-               ctr[TR_OK], ctr[TR_CANCEL], NULL);\r
-\r
-       strcpy(timezone, filenames[choice]);\r
-       \r
-       if (rc != 2)\r
-       {\r
-               replacekeyvalue(kv, "TIMEZONE", timezone);\r
-               writekeyvalues(kv, CONFIG_ROOT "/main/settings");\r
-               unlink("/etc/localtime");\r
-               link(timezone, "/etc/localtime");\r
-               result = 1;\r
-       }\r
-       else\r
-               result = 0;     \r
-       \r
-       for (c = 0; filenames[c]; c++)\r
-       {\r
-               free(filenames[c]);\r
-               free(displaynames[c]);\r
-       }\r
-       freekeyvalues(kv);      \r
-       \r
-       return result;\r
-}\r
-\r
-static int process(char *prefix, char *path)\r
-{\r
-       DIR *dir;\r
-       struct dirent *de;\r
-       char newpath[PATH_MAX];\r
-       \r
-       snprintf(newpath, PATH_MAX, "%s%s", prefix, path);\r
-       \r
-       if (!(dir = opendir(newpath)))\r
-       {\r
-               if (filenamecount > MAX_FILENAMES)\r
-                       return 1;\r
-               \r
-               filenames[filenamecount] = (char *) strdup(newpath);\r
-               filenamecount++;\r
-               return 0;\r
-       }\r
-                       \r
-       while ((de = readdir(dir)))\r
-       {\r
-               if (de->d_name[0] == '.') continue;\r
-               snprintf(newpath, PATH_MAX, "%s/%s", path, de->d_name);\r
-               process(prefix, newpath);\r
-       }\r
-       closedir(dir);\r
-       \r
-       return 1;\r
-}\r
-\r
-/* Small wrapper for use with qsort(). */              \r
-static int cmp(const void *s1, const void *s2)\r
-{\r
-       return (strcmp(* (char **) s1, * (char **) s2));\r
-}\r
+/* SmoothWall setup program.
+ *
+ * This program is distributed under the terms of the GNU General Public
+ * Licence.  See the file COPYING for details.
+ *
+ * (c) Lawrence Manning, 2001
+ * Stuff for setting the timezone.
+ * 
+ * $Id: timezone.c,v 1.4.2.1 2004/04/14 22:05:41 gespinasse Exp $
+ * 
+ */
+
+#include "setup.h"
+extern FILE *flog;
+extern char *mylog;
+
+extern char **ctr;
+
+extern int automode;
+
+#define MAX_FILENAMES 5000
+#define ZONEFILES "/usr/share/zoneinfo/posix"
+
+static int filenamecount;
+static char *filenames[MAX_FILENAMES];
+static char *displaynames[MAX_FILENAMES];
+
+static int process(char *prefix, char *path);
+static int cmp(const void *s1, const void *s2);
+
+int handletimezone(void)
+{
+       int c;
+       int choice;
+       char *temp;
+       struct keyvalue *kv = initkeyvalues();  
+       int rc;
+       int result;
+       char timezone[STRING_SIZE];
+
+       filenamecount = 0;      
+
+       process(ZONEFILES, "");
+       filenames[filenamecount] = NULL;
+       qsort(filenames, filenamecount, sizeof(char *), cmp);
+       
+       for (c = 0; filenames[c]; c++)
+       {
+               displaynames[c] = malloc(STRING_SIZE);
+               if ((temp = strstr(filenames[c], ZONEFILES)))
+                       strcpy(displaynames[c], temp + strlen(ZONEFILES) + 1);
+               else
+                       strcpy(displaynames[c], filenames[c]);
+       }
+       displaynames[c] = NULL;
+       
+       if (!(readkeyvalues(kv, CONFIG_ROOT "/main/settings")))
+       {
+               freekeyvalues(kv);
+               errorbox(ctr[TR_UNABLE_TO_OPEN_SETTINGS_FILE]);
+               return 0;
+       }       
+       
+       strcpy(timezone, ZONEFILES "/Europe/Berlin");
+       findkey(kv, "TIMEZONE", timezone);
+       
+       choice = 0;
+       for (c = 0; filenames[c]; c++)
+       {
+               if (strcmp(timezone, filenames[c]) == 0)
+                       choice = c;
+       }
+       
+       rc = newtWinMenu(ctr[TR_TIMEZONE], ctr[TR_TIMEZONE_LONG], 50, 5, 5, 6, displaynames, &choice,
+               ctr[TR_OK], ctr[TR_CANCEL], NULL);
+
+       strcpy(timezone, filenames[choice]);
+       
+       if (rc != 2)
+       {
+               replacekeyvalue(kv, "TIMEZONE", timezone);
+               writekeyvalues(kv, CONFIG_ROOT "/main/settings");
+               unlink("/etc/localtime");
+               link(timezone, "/etc/localtime");
+               result = 1;
+       }
+       else
+               result = 0;     
+       
+       for (c = 0; filenames[c]; c++)
+       {
+               free(filenames[c]);
+               free(displaynames[c]);
+       }
+       freekeyvalues(kv);      
+       
+       return result;
+}
+
+static int process(char *prefix, char *path)
+{
+       DIR *dir;
+       struct dirent *de;
+       char newpath[PATH_MAX];
+       
+       snprintf(newpath, PATH_MAX, "%s%s", prefix, path);
+       
+       if (!(dir = opendir(newpath)))
+       {
+               if (filenamecount > MAX_FILENAMES)
+                       return 1;
+               
+               filenames[filenamecount] = (char *) strdup(newpath);
+               filenamecount++;
+               return 0;
+       }
+                       
+       while ((de = readdir(dir)))
+       {
+               if (de->d_name[0] == '.') continue;
+               snprintf(newpath, PATH_MAX, "%s/%s", path, de->d_name);
+               process(prefix, newpath);
+       }
+       closedir(dir);
+       
+       return 1;
+}
+
+/* Small wrapper for use with qsort(). */              
+static int cmp(const void *s1, const void *s2)
+{
+       return (strcmp(* (char **) s1, * (char **) s2));
+}