* During server startup, if config.c_default_cal_zone is an empty string, run a shell...
[citadel.git] / citadel / modules / upgrade / serv_upgrade.c
index a173024b047e4d2bdb4b84ad59a6b363da081d97..0b09d9f57675f3c896742487db278f0710774bc5 100644 (file)
@@ -195,6 +195,27 @@ void convert_ctdluid_to_minusone(void) {
        return;
 }
 
+
+/*
+ * Attempt to guess the name of the time zone currently in use
+ * on the underlying host system.
+ */
+void guess_time_zone(void) {
+       FILE *fp;
+       char buf[PATH_MAX];
+
+       fp = popen(file_guesstimezone, "r");
+       if (fp) {
+               if (fgets(buf, sizeof buf, fp) && (strlen(buf) > 2)) {
+                       buf[strlen(buf)-1] = 0;
+                       safestrncpy(config.c_default_cal_zone, buf, sizeof config.c_default_cal_zone);
+                       CtdlLogPrintf(CTDL_INFO, "Configuring timezone: %s\n", config.c_default_cal_zone);
+               }
+               fclose(fp);
+       }
+}
+
+
 /*
  * Do various things to our configuration file
  */
@@ -230,6 +251,10 @@ void update_config(void) {
                config.c_xmpp_s2s_port = 5269;
        }
 
+       if (IsEmptyStr(config.c_default_cal_zone)) {
+               guess_time_zone();
+       }
+
        put_config();
 }