From 40c1ceffe1625130e7ee332de0a9be7e4ac9760c Mon Sep 17 00:00:00 2001 From: Rob Swindell <rob@synchro.net> Date: Sun, 27 Dec 2020 20:42:01 -0800 Subject: [PATCH] Fix Y2K issues with QWK messagse (import and export). --- EXEC/SBBS.EXE | Bin 487840 -> 487904 bytes SRC/DEFS.H | 2 ++ SRC/QWK.C | 21 +++++++++++++++------ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/EXEC/SBBS.EXE b/EXEC/SBBS.EXE index a6caee08df66b72fea3fa4b79b9e9878ef5ba7c7..547c303aada1f98c9f05d89e4ec6543440e7a4a6 100644 GIT binary patch delta 2835 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 N@2uPFzOyM+0RS2}Art@r delta 2742 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 diff --git a/SRC/DEFS.H b/SRC/DEFS.H index 0966d9c..aab4311 100644 --- a/SRC/DEFS.H +++ b/SRC/DEFS.H @@ -23,6 +23,8 @@ #define REVISION 6 /* Revision number */ #define BETA 0 /* Beta release? */ +#define Y2K_2DIGIT_WINDOW 70 +#define TM_YEAR(yy) ((yy)%100) #if !DEMO diff --git a/SRC/QWK.C b/SRC/QWK.C index 5e9f1eb..fec3f1f 100644 --- a/SRC/QWK.C +++ b/SRC/QWK.C @@ -242,7 +242,10 @@ if(length<2) return(0); date.da_mon=((qwkbuf[8]&0xf)*10)+(qwkbuf[9]&0xf); date.da_day=((qwkbuf[11]&0xf)*10)+(qwkbuf[12]&0xf); -date.da_year=((qwkbuf[14]&0xf)*10)+(qwkbuf[15]&0xf)+1900; +date.da_year=((qwkbuf[14]&0xf)*10)+(qwkbuf[15]&0xf); +if(date.da_year<Y2K_2DIGIT_WINDOW) + date.da_year+=100; +date.da_year+=1900; curtime.ti_hour=((qwkbuf[16]&0xf)*10)+(qwkbuf[17]&0xf); curtime.ti_min=((qwkbuf[19]&0xf)*10)+(qwkbuf[20]&0xf); curtime.ti_sec=0; @@ -721,7 +724,7 @@ if(mail && !(sys_status&SS_ABORT)) { p=strchr(tmp,'@'); /* remove the system id */ if(p!=NULL) *p=0; } sprintf(tmp2,"%02u-%02u-%02u%02u:%02u" - ,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); sprintf(str,"%c%-7d%-13.13s%-25.25s" "%-25.25s%-25.25s%12s%-8d%-6lu\xe1%c%c%c%c%c" @@ -832,7 +835,7 @@ for(i=0;i<usrgrps;i++) { if(p!=NULL) *p=0; } n=((i+1)*100)+j+1; /* ggss */ sprintf(tmp2,"%02u-%02u-%02u%02u:%02u" - ,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); if(msg[k]->mode&MSG_PRIVATE) { if(msg[k]->mode&MSG_READ) @@ -1073,7 +1076,7 @@ for(i=0;i<qhub[hubnum]->subs;i++) { n=qhub[hubnum]->conf[i]; unixtodos(msg[k]->time,&date,&curtime); sprintf(tmp2,"%02u-%02u-%02u%02u:%02u" - ,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); if(msg[k]->mode&MSG_PRIVATE) { @@ -1450,7 +1453,10 @@ for(l=128;l<size;l+=i*128) { strcpy(tmp,useron.alias); } date.da_mon=((block[8]&0xf)*10)+(block[9]&0xf); date.da_day=((block[11]&0xf)*10)+(block[12]&0xf); - date.da_year=((block[14]&0xf)*10)+(block[15]&0xf)+1900; + date.da_year=((block[14]&0xf)*10)+(block[15]&0xf); + if(date.da_year<Y2K_2DIGIT_WINDOW) + date.da_year+=100; + date.da_year+=1900; curtime.ti_hour=((block[16]&0xf)*10)+(block[17]&0xf); curtime.ti_min=((block[19]&0xf)*10)+(block[20]&0xf); curtime.ti_sec=0; @@ -1616,7 +1622,10 @@ for(l=128;l<size;l+=i*128) { date.da_mon=((block[8]&0xf)*10)+(block[9]&0xf); date.da_day=((block[11]&0xf)*10)+(block[12]&0xf); - date.da_year=((block[14]&0xf)*10)+(block[15]&0xf)+1900; + date.da_year=((block[14]&0xf)*10)+(block[15]&0xf); + if(date.da_year<Y2K_2DIGIT_WINDOW) + date.da_year+=100; + date.da_year+=1900; curtime.ti_hour=((block[16]&0xf)*10)+(block[17]&0xf); curtime.ti_min=((block[19]&0xf)*10)+(block[20]&0xf); curtime.ti_sec=0; -- GitLab