+ * These accounts may have been created by code that ran between mid 2008 and early 2011.
+ * If present they are no longer in use and may be deleted.
+ */
+void remove_thread_users(void) {
+ char *deleteusers[] = {
+ "SYS_checkpoint",
+ "SYS_extnotify",
+ "SYS_IGnet Queue",
+ "SYS_indexer",
+ "SYS_network",
+ "SYS_popclient",
+ "SYS_purger",
+ "SYS_rssclient",
+ "SYS_select_on_master",
+ "SYS_SMTP Send"
+ };
+
+ int i;
+ struct ctdluser usbuf;
+ for (i=0; i<(sizeof(deleteusers)/sizeof(char *)); ++i) {
+ if (CtdlGetUser(&usbuf, deleteusers[i]) == 0) {
+ usbuf.axlevel = 0;
+ strcpy(usbuf.password, "deleteme");
+ CtdlPutUser(&usbuf);
+ syslog(LOG_INFO,
+ "System user account <%s> is no longer in use and will be deleted.",
+ deleteusers[i]
+ );
+ }
+ }
+}
+
+
+/*
+ * 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);
+ syslog(LOG_INFO, "Configuring timezone: %s", config.c_default_cal_zone);
+ }
+ fclose(fp);
+ }
+}
+
+
+/*
+ * Perform any upgrades that can be done automatically based on our knowledge of the previous
+ * version of Citadel server that was running here.
+ *
+ * Note that if the previous version was 0 then this is a new installation running for the first time.