void sbbs_t::qwk_new_msg(smbmsg_t* msg, char* hdrblk, long offset, str_list_t all_headers, bool parse_sender_hfields) { char str[128]; char to[128]; str_list_t msg_headers; smb_freemsgmem(msg); sprintf(str,"%lx",offset); msg_headers=iniGetSection(all_headers,str); memset(msg,0,sizeof(smbmsg_t)); /* Initialize message header */ msg->hdr.version=smb_ver(); sprintf(to,"%25.25s",(char *)hdrblk+21); /* To user */ truncsp(to); if(msg_headers!=NULL) qwk_parse_header_list(msg, &msg_headers, parse_sender_hfields, stricmp(to,"NETMAIL")!=0); /* Parse the QWK message header: */ if(msg->hdr.when_written.time==0) { struct tm tm; memset(&tm,0,sizeof(tm)); tm.tm_mon = ((hdrblk[8]&0xf)*10)+(hdrblk[9]&0xf); tm.tm_mday=((hdrblk[11]&0xf)*10)+(hdrblk[12]&0xf); tm.tm_year=((hdrblk[14]&0xf)*10)+(hdrblk[15]&0xf); if(tm.tm_year<Y2K_2DIGIT_WINDOW) tm.tm_year+=100; tm.tm_hour=((hdrblk[16]&0xf)*10)+(hdrblk[17]&0xf); tm.tm_min=((hdrblk[19]&0xf)*10)+(hdrblk[20]&0xf); msg->hdr.when_written.time=(uint32_t)sane_mktime(&tm); } if(msg->to==NULL) smb_hfield_str(msg,RECIPIENT,to); if(parse_sender_hfields && msg->from==NULL) { sprintf(str,"%25.25s",hdrblk+46); truncsp(str); smb_hfield_str(msg,SENDER,str); } if(msg->subj==NULL) { sprintf(str,"%25.25s",hdrblk+71); /* Subject */ truncsp(str); smb_hfield_str(msg,SUBJECT,str); } iniFreeStringList(msg_headers); }
time_t DLLCALL isoDateTime_to_time(isoDate_t date, isoTime_t ti) { struct tm tm; ZERO_VAR(tm); if(date==0) return(INVALID_TIME); tm.tm_year = isoDate_year(date); tm.tm_mon = isoDate_month(date); tm.tm_mday = isoDate_day(date); tm.tm_hour = isoTime_hour(ti); tm.tm_min = isoTime_minute(ti); tm.tm_sec = isoTime_second(ti); return sane_mktime(&tm); }
time_t DLLCALL xpDateTime_to_time(xpDateTime_t xpDateTime) { struct tm tm; ZERO_VAR(tm); if(xpDateTime.date.year==0) return(INVALID_TIME); tm.tm_year = xpDateTime.date.year; tm.tm_mon = xpDateTime.date.month; tm.tm_mday = xpDateTime.date.day; tm.tm_hour = xpDateTime.time.hour; tm.tm_min = xpDateTime.time.minute; tm.tm_sec = (int)xpDateTime.time.second; return sane_mktime(&tm); }