From 1c55d39d138a35ac7cf1e026750ed9d1228e43cc Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 13 Mar 2002 18:58:10 +0000
Subject: [PATCH] Created sys_misc flag to use local/system time zone instead
 of GMT/UTC.

---
 src/sbbs3/ftpsrvr.c  | 30 +++++++++++++++---------------
 src/sbbs3/mailsrvr.c | 24 ++++++++++++------------
 src/sbbs3/main.cpp   | 28 ++++++++++++++--------------
 src/sbbs3/sbbsdefs.h |  2 +-
 src/sbbs3/services.c | 30 +++++++++++++++---------------
 5 files changed, 57 insertions(+), 57 deletions(-)

diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 7d1695c5d9..8c1c978c25 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -4363,21 +4363,6 @@ void DLLCALL ftp_server(void* arg)
 		srand(clock());		/* Seed random number generator */
 		sbbs_random(10);	/* Throw away first number */
 
-		if(!(startup->options&FTP_OPT_LOCAL_TIMEZONE)) { 
-			if(PUTENV("TZ=UTC0"))
-				lprintf("!putenv() FAILED");
-			tzset();
-
-			if((t=checktime())!=0) {   /* Check binary time */
-				lprintf("!TIME PROBLEM (%ld)",t);
-				cleanup(1);
-				return;
-			}
-		}
-
-		if(uptime==0)
-			uptime=time(NULL);
-
 		if(!winsock_startup()) {
 			cleanup(1);
 			return;
@@ -4407,6 +4392,21 @@ void DLLCALL ftp_server(void* arg)
 			return;
 		}
 
+		if(!(scfg.sys_misc&SM_LOCAL_TZ) && !(startup->options&FTP_OPT_LOCAL_TIMEZONE)) { 
+			if(PUTENV("TZ=UTC0"))
+				lprintf("!putenv() FAILED");
+			tzset();
+
+			if((t=checktime())!=0) {   /* Check binary time */
+				lprintf("!TIME PROBLEM (%ld)",t);
+				cleanup(1);
+				return;
+			}
+		}
+
+		if(uptime==0)
+			uptime=time(NULL);
+
 		/* Use DATA/TEMP for temp dir - should ch'd to be FTP/HOST specific */
 		prep_dir(scfg.data_dir, scfg.temp_dir);
 
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 7f25418858..e4362bc2a4 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -2684,18 +2684,6 @@ void DLLCALL mail_server(void* arg)
 
 		srand(time(NULL));
 
-		if(!(startup->options&MAIL_OPT_LOCAL_TIMEZONE)) {
-			if(PUTENV("TZ=UTC0"))
-				lprintf("!putenv() FAILED");
-			tzset();
-
-			if((t=checktime())!=0) {   /* Check binary time */
-				lprintf("!TIME PROBLEM (%ld)",t);
-				cleanup(1);
-				return;
-			}
-		}
-
 		if(!winsock_startup()) {
 			cleanup(1);
 			return;
@@ -2717,6 +2705,18 @@ void DLLCALL mail_server(void* arg)
 			return;
 		}
 
+		if(!(scfg.sys_misc&SM_LOCAL_TZ) && !(startup->options&MAIL_OPT_LOCAL_TIMEZONE)) {
+			if(PUTENV("TZ=UTC0"))
+				lprintf("!putenv() FAILED");
+			tzset();
+
+			if((t=checktime())!=0) {   /* Check binary time */
+				lprintf("!TIME PROBLEM (%ld)",t);
+				cleanup(1);
+				return;
+			}
+		}
+
 		if(startup->max_clients==0) {
 			startup->max_clients=scfg.sys_nodes;
 			if(startup->max_clients<10)
diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index 575b413043..6bb8219e85 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -3091,20 +3091,6 @@ void DLLCALL bbs_thread(void* arg)
 		return;
 	}
 
-	if(!(startup->options&BBS_OPT_LOCAL_TIMEZONE)) {
-		if(PUTENV("TZ=UTC0"))
-			lprintf("!putenv() FAILED");
-		tzset();
-
-		if((t=checktime())!=0) {   /* Check binary time */
-			lprintf("!TIME PROBLEM (%ld)",t);
-			cleanup(1);
-			return;
-		}
-	}
-
-	uptime=time(NULL);
-
 #ifdef _WIN32
     if((exec_mutex=CreateMutex(NULL,false,NULL))==NULL) {
     	lprintf("!ERROR %d creating exec_mutex", GetLastError());
@@ -3146,6 +3132,20 @@ void DLLCALL bbs_thread(void* arg)
 	}
 	scfg_reloaded=true;
 
+	if(!(scfg.sys_misc&SM_LOCAL_TZ) && !(startup->options&BBS_OPT_LOCAL_TIMEZONE)) {
+		if(PUTENV("TZ=UTC0"))
+			lprintf("!putenv() FAILED");
+		tzset();
+
+		if((t=checktime())!=0) {   /* Check binary time */
+			lprintf("!TIME PROBLEM (%ld)",t);
+			cleanup(1);
+			return;
+		}
+	}
+
+	uptime=time(NULL);
+
     if(startup->last_node>scfg.sys_nodes) {
     	lprintf("Specified last_node (%d) > sys_nodes (%d), auto-corrected"
         	,startup->last_node, scfg.sys_nodes);
diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index 3b613e3ff5..c5c48c483b 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -141,7 +141,7 @@
 #define SM_CELERITY		(1L<<10)	/* Expand Celerity color codes in messages	*/
 #define SM_RENEGADE		(1L<<11)	/* Expand Renegade color codes in messages	*/
 #define SM_ECHO_PW		(1L<<12)	/* Echo passwords locally					*/
-#define SM_UNUSED		(1L<<13)	/* <UNUSED>									*/
+#define SM_LOCAL_TZ		(1L<<13)	/* Use local timezone representations		*/
 #define SM_L_SYSOP		(1L<<14)	/* Allow local sysop logon/commands 		*/
 #define SM_R_SYSOP		(1L<<15)	/* Allow remote sysop logon/commands		*/
 #define SM_QUOTE_EM		(1L<<16)	/* Allow quoting of e-mail					*/
diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c
index 15a1fa6f7f..e622e3af59 100644
--- a/src/sbbs3/services.c
+++ b/src/sbbs3/services.c
@@ -1058,21 +1058,6 @@ void DLLCALL services_thread(void* arg)
 		srand(clock());		/* Seed random number generator */
 		sbbs_random(10);	/* Throw away first number */
 
-		if(!(startup->options&BBS_OPT_LOCAL_TIMEZONE)) {
-			if(PUTENV("TZ=UTC0"))
-				lprintf("!putenv() FAILED");
-			tzset();
-
-			if((t=checktime())!=0) {   /* Check binary time */
-				lprintf("!TIME PROBLEM (%ld)",t);
-				cleanup(1);
-				return;
-			}
-		}
-
-		if(uptime==0)
-			uptime=time(NULL);
-
 		if(!winsock_startup()) {
 			cleanup(1);
 			return;
@@ -1094,6 +1079,21 @@ void DLLCALL services_thread(void* arg)
 			return;
 		}
 
+		if(!(scfg.sys_misc&SM_LOCAL_TZ) && !(startup->options&BBS_OPT_LOCAL_TIMEZONE)) {
+			if(PUTENV("TZ=UTC0"))
+				lprintf("!putenv() FAILED");
+			tzset();
+
+			if((t=checktime())!=0) {   /* Check binary time */
+				lprintf("!TIME PROBLEM (%ld)",t);
+				cleanup(1);
+				return;
+			}
+		}
+
+		if(uptime==0)
+			uptime=time(NULL);
+
 		active_clients=0;
 		update_clients();
 
-- 
GitLab