diff --git a/src/sbbs3/msgdate.c b/src/sbbs3/msgdate.c index 9b956ba08e53dafc3a8f88fca30b0dba51dd49e8..b7290883f9bfdeec93023004ac22c358331a4bba 100644 --- a/src/sbbs3/msgdate.c +++ b/src/sbbs3/msgdate.c @@ -66,11 +66,10 @@ when_t rfc822date(char* date) char* p=date; char str[32]; char month[32]; - when_t when; struct tm tm; + int16_t zone = 0; memset(&tm,0,sizeof(tm)); - memset(&when,0,sizeof(when)); while(*p && *p<=' ') p++; while(*p && !IS_DIGIT(*p)) p++; @@ -131,33 +130,32 @@ when_t rfc822date(char* date) if(IS_DIGIT(*p) || *p=='-' || *p=='+') { /* [+|-]HHMM format */ if(*p=='+') p++; sprintf(str,"%.*s",*p=='-'? 3:2,p); - when.zone=atoi(str)*60; + zone=atoi(str)*60; p+=(*p=='-') ? 3:2; - if(when.zone<0) - when.zone-=atoi(p); + if(zone<0) + zone-=atoi(p); else - when.zone+=atoi(p); + zone+=atoi(p); } else if(!strnicmp(p,"PDT",3)) - when.zone=(short)PDT; + zone=(short)PDT; else if(!strnicmp(p,"MDT",3)) - when.zone=(short)MDT; + zone=(short)MDT; else if(!strnicmp(p,"CDT",3)) - when.zone=(short)CDT; + zone=(short)CDT; else if(!strnicmp(p,"EDT",3)) - when.zone=(short)EDT; + zone=(short)EDT; else if(!strnicmp(p,"PST",3)) - when.zone=(short)PST; + zone=(short)PST; else if(!strnicmp(p,"MST",3)) - when.zone=(short)MST; + zone=(short)MST; else if(!strnicmp(p,"CST",3)) - when.zone=(short)CST; + zone=(short)CST; else if(!strnicmp(p,"EST",3)) - when.zone=(short)EST; + zone=(short)EST; } tm.tm_isdst=-1; /* Don't adjust for daylight-savings-time */ - when.time=(uint32_t)mktime(&tm); - return(when); + return smb_when(mktime(&tm), zone); }