From cebecb6e071c032a311aa7c1e1b0e65e81bbca60 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 26 Sep 2000 07:09:33 +0000
Subject: [PATCH] Y2K fix.

---
 src/sbbs2/smm/smb2smm.c  | 4 +++-
 src/sbbs2/smm/smm.c      | 2 ++
 src/sbbs2/smm/smmutil.c  | 4 +++-
 src/sbbs2/uti/uti.c      | 6 +++---
 src/sbbs2/uti/utiexprt.c | 2 +-
 src/sbbs2/uti/utiimprt.c | 5 ++++-
 6 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/src/sbbs2/smm/smb2smm.c b/src/sbbs2/smm/smb2smm.c
index c2cc14965d..de596dd128 100644
--- a/src/sbbs2/smm/smb2smm.c
+++ b/src/sbbs2/smm/smb2smm.c
@@ -125,7 +125,7 @@ time_t dstrtounix(char *str)
 if(!strncmp(str,"00/00/00",8))
 	return(0);
 curtime.ti_hour=curtime.ti_min=curtime.ti_sec=0;
-if(str[6]<7)
+if(str[6]<'7')
 	date.da_year=2000+((str[6]&0xf)*10)+(str[7]&0xf);
 else
 	date.da_year=1900+((str[6]&0xf)*10)+(str[7]&0xf);
@@ -161,6 +161,8 @@ if(birth[0]<=SP)
 	return(0);
 getdate(&date);
 age=(date.da_year-1900)-(((birth[6]&0xf)*10)+(birth[7]&0xf));
+if(age>90)
+	age-=90;
 if(atoi(birth)>12 || atoi(birth+3)>31)
 	return(0);
 if(((birth[0]&0xf)*10)+(birth[1]&0xf)>date.da_mon ||
diff --git a/src/sbbs2/smm/smm.c b/src/sbbs2/smm/smm.c
index fbd3667c5e..d71d058266 100644
--- a/src/sbbs2/smm/smm.c
+++ b/src/sbbs2/smm/smm.c
@@ -589,6 +589,8 @@ if(birth[0]<=SP)
 	return(0);
 getdate(&date);
 age=(date.da_year-1900)-(((birth[6]&0xf)*10)+(birth[7]&0xf));
+if(age>90)
+	age-=90;
 if(atoi(birth)>12 || atoi(birth+3)>31)
 	return(0);
 if(((birth[0]&0xf)*10)+(birth[1]&0xf)>date.da_mon ||
diff --git a/src/sbbs2/smm/smmutil.c b/src/sbbs2/smm/smmutil.c
index 85ddcf7b53..d2c5eaa695 100644
--- a/src/sbbs2/smm/smmutil.c
+++ b/src/sbbs2/smm/smmutil.c
@@ -45,6 +45,8 @@ if(birth[0]<=SP)
 	return(0);
 getdate(&date);
 age=(date.da_year-1900)-(((birth[6]&0xf)*10)+(birth[7]&0xf));
+if(age>90)
+	age-=90;
 if(atoi(birth)>12 || atoi(birth+3)>31)
 	return(0);
 if(((birth[0]&0xf)*10)+(birth[1]&0xf)>date.da_mon ||
@@ -75,7 +77,7 @@ now=time(NULL);
 gm=localtime(&now);
 fseek(log,0L,SEEK_END);
 fprintf(log,"%02u/%02u/%02u %02u:%02u:%02u %s\r\n"
-    ,gm->tm_mon+1,gm->tm_mday,gm->tm_year,gm->tm_hour,gm->tm_min,gm->tm_sec
+    ,gm->tm_mon+1,gm->tm_mday,TM_YEAR(gm->tm_year),gm->tm_hour,gm->tm_min,gm->tm_sec
     ,buf);
 fflush(log);
 }
diff --git a/src/sbbs2/uti/uti.c b/src/sbbs2/uti/uti.c
index 4564ff0926..fb290e0a33 100644
--- a/src/sbbs2/uti/uti.c
+++ b/src/sbbs2/uti/uti.c
@@ -219,8 +219,8 @@ if(!code) {
 	gotoxy(txtinfo.curx,txtinfo.cury); }
 t=time(NULL);
 unixtodos(t,&date,&curtime);
-sprintf(str,"%02u/%02u/%02u %02u:%02u:%02u    Exiting (%d)\r\n\r\n"
-	,date.da_mon,date.da_day,date.da_year-1900
+sprintf(str,"%02u/%02u/%u %02u:%02u:%02u    Exiting (%d)\r\n\r\n"
+	,date.da_mon,date.da_day,date.da_year
 	,curtime.ti_hour,curtime.ti_min,curtime.ti_sec
 	,code);
 write(logfile,str,strlen(str));
@@ -282,7 +282,7 @@ if((logfile=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) {
 t=time(NULL);
 tm=gmtime(&t);
 sprintf(str,"%02u/%02u/%02u %02u:%02u:%02u    %-8s %s \""
-	,tm->tm_mon+1,tm->tm_mday,tm->tm_year
+	,tm->tm_mon+1,tm->tm_mday,TM_YEAR(tm->tm_year)
 	,tm->tm_hour,tm->tm_min,tm->tm_sec
 	,name,VER);
 printf("\n\n");
diff --git a/src/sbbs2/uti/utiexprt.c b/src/sbbs2/uti/utiexprt.c
index 0a338d9713..a5a44daf2b 100644
--- a/src/sbbs2/uti/utiexprt.c
+++ b/src/sbbs2/uti/utiexprt.c
@@ -135,7 +135,7 @@ for(l=0;l<posts;l++) {
 		"%s\r\n%c\r\n%c\r\nTEXT:\r\n"
 		,msg.hdr.number
 		,msg.hdr.thread_orig
-		,date.da_mon,date.da_day,date.da_year-1900
+		,date.da_mon,date.da_day,TM_YEAR(date.da_year-1900)
 		,curtime.ti_hour,curtime.ti_min
 		,msg.hdr.attr&MSG_PRIVATE ? "PRIVATE" : "PUBLIC"
 		,msg.hdr.attr&MSG_READ ? 'Y':'N'
diff --git a/src/sbbs2/uti/utiimprt.c b/src/sbbs2/uti/utiimprt.c
index 29390c804a..acfac0697e 100644
--- a/src/sbbs2/uti/utiimprt.c
+++ b/src/sbbs2/uti/utiimprt.c
@@ -71,7 +71,10 @@ printf("\rdstrtounix           ");
 #endif
 
 curtime.ti_hour=curtime.ti_min=curtime.ti_sec=0;
-date.da_year=1900+((str[6]&0xf)*10)+(str[7]&0xf);
+date.da_year=((str[6]&0xf)*10)+(str[7]&0xf);
+if(date.da_year<Y2K_2DIGIT_WINDOW)
+	date.da_year+=100;
+date.da_year+=1900;
 date.da_mon=((str[0]&0xf)*10)+(str[1]&0xf);
 date.da_day=((str[3]&0xf)*10)+(str[4]&0xf);
 return(dostounix(&date,&curtime));
-- 
GitLab