From deb5a71b2ad3b08eab54d4296d3b66002b0f5de8 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Wed, 25 Mar 2020 00:38:05 +0000
Subject: [PATCH] Add missing environment variables in *nix builds when
 spawning native programs: YEAR, MONTH, MONTHNAME, WEEKDAY, DAY

---
 src/sbbs3/xtrn.cpp | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/sbbs3/xtrn.cpp b/src/sbbs3/xtrn.cpp
index a090fa7e97..716ed739ca 100644
--- a/src/sbbs3/xtrn.cpp
+++ b/src/sbbs3/xtrn.cpp
@@ -1119,8 +1119,22 @@ int sbbs_t::external(const char* cmdline, long mode, const char* startup_dir)
 		setenv("SBBSDATA",cfg.data_dir,1);
 		setenv("SBBSEXEC",cfg.exec_dir,1);
 		sprintf(str,"%u",cfg.node_num);
-		if(setenv("SBBSNNUM",str,1))
-        	errormsg(WHERE,ERR_WRITE,"environment",0);
+		setenv("SBBSNNUM",str,1);
+
+		/* date/time env vars */
+		now = time(NULL);
+		struct	tm tm;
+		if(localtime_r(&now, &tm) == NULL)
+			memset(&tm, 0, sizeof(tm));
+		sprintf(str," %02u", tm.tm_mday);
+		setenv("DAY", str, /* overwrite */TRUE);
+		setenv("WEEKDAY", wday[tm.tm_wday], /* overwrite */TRUE);
+		setenv("MONTHNAME", mon[tm.tm_mon], /* overwrite */TRUE);
+		sprintf(str, "%02u", tm.tm_mon + 1);
+		setenv("MONTH", str, /* overwrite */TRUE);
+		sprintf(str,"%u", 1900 + tm.tm_year);
+		if(setenv("YEAR", str, /* overwrite */TRUE) != 0)
+			errormsg(WHERE,ERR_WRITE,"environment",0);
 
 	} else {
 		if(startup->options&BBS_OPT_NO_DOS) {
-- 
GitLab