diff --git a/src/sbbs3/bulkmail.cpp b/src/sbbs3/bulkmail.cpp index df241eaf3335f64cd6cd595351b5b717c12229e3..259a84cf905a924a85b78773f94fb8ec984bb43d 100644 --- a/src/sbbs3/bulkmail.cpp +++ b/src/sbbs3/bulkmail.cpp @@ -94,13 +94,13 @@ bool sbbs_t::bulkmail(uchar *ar) } msgbuf[length]=0; /* ASCIIZ */ - smb_hfield(&msg,SENDER,strlen(useron.alias),useron.alias); + smb_hfield_str(&msg,SENDER,useron.alias); sprintf(str,"%u",useron.number); - smb_hfield(&msg,SENDEREXT,strlen(str),str); + smb_hfield_str(&msg,SENDEREXT,str); msg.idx.from=useron.number; - smb_hfield(&msg,SUBJECT,strlen(title),title); + smb_hfield_str(&msg,SUBJECT,title); msg.idx.subj=subject_crc(title); memset(&smb,0,sizeof(smb)); @@ -185,16 +185,16 @@ int sbbs_t::bulkmailhdr(smb_t* smb, smbmsg_t* msg, uint usernum) return(i); SAFECOPY(str,user.alias); - smb_hfield(&newmsg,RECIPIENT,strlen(str),str); + smb_hfield_str(&newmsg,RECIPIENT,str); if(cfg.sys_misc&SM_FWDTONET && user.misc&NETMAIL && user.netmail[0]) { bprintf(text[UserNetMail],user.netmail); nettype=NET_INTERNET; smb_hfield(&newmsg,RECIPIENTNETTYPE,sizeof(nettype),&nettype); - smb_hfield(&newmsg,RECIPIENTNETADDR,strlen(user.netmail),user.netmail); + smb_hfield_str(&newmsg,RECIPIENTNETADDR,user.netmail); } else { sprintf(str,"%u",usernum); - smb_hfield(&newmsg,RECIPIENTEXT,strlen(str),str); + smb_hfield_str(&newmsg,RECIPIENTEXT,str); newmsg.idx.to=usernum; } diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp index b241b84b71b4f05a5f02f1cfc4e6a28f9f8a3b77..cb09a0e22cb74f45b3181cd183d5cc54516e52d2 100644 --- a/src/sbbs3/email.cpp +++ b/src/sbbs3/email.cpp @@ -260,20 +260,20 @@ bool sbbs_t::email(int usernumber, char *top, char *subj, long mode) msg.hdr.offset=offset; username(&cfg,usernumber,str); - smb_hfield(&msg,RECIPIENT,strlen(str),str); + smb_hfield_str(&msg,RECIPIENT,str); sprintf(str,"%u",usernumber); - smb_hfield(&msg,RECIPIENTEXT,strlen(str),str); + smb_hfield_str(&msg,RECIPIENTEXT,str); msg.idx.to=usernumber; strcpy(str,useron.alias); - smb_hfield(&msg,SENDER,strlen(str),str); + smb_hfield_str(&msg,SENDER,str); sprintf(str,"%u",useron.number); - smb_hfield(&msg,SENDEREXT,strlen(str),str); + smb_hfield_str(&msg,SENDEREXT,str); msg.idx.from=useron.number; - smb_hfield(&msg,SUBJECT,strlen(title),title); + smb_hfield_str(&msg,SUBJECT,title); msg.idx.subj=subject_crc(title); smb_dfield(&msg,TEXT_BODY,length); diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 0aba325f66d056c5d80910ea1b784682ee417bd5..80678ddb3e068e51e1658aaf602df0abb4206e86 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -135,7 +135,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm return(FALSE); } else cp=""; - smb_hfield(msg, SUBJECT, (ushort)strlen(cp), cp); + smb_hfield_str(msg, SUBJECT, cp); msg->idx.subj=subject_crc(cp); if(JS_GetProperty(cx, hdr, "to", &val) && val!=JSVAL_VOID) { @@ -146,7 +146,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm return(FALSE); /* "to" property required */ cp="All"; } - smb_hfield(msg, RECIPIENT, (ushort)strlen(cp), cp); + smb_hfield_str(msg, RECIPIENT, cp); if(!(p->smb.status.attr&SMB_EMAIL)) { SAFECOPY(to,cp); strlwr(to); @@ -158,7 +158,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm return(FALSE); } else return(FALSE); /* "from" property required */ - smb_hfield(msg, SENDER, (ushort)strlen(cp), cp); + smb_hfield_str(msg, SENDER, cp); if(!(p->smb.status.attr&SMB_EMAIL)) { SAFECOPY(from,cp); strlwr(from); @@ -169,7 +169,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "from_ext", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, SENDEREXT, (ushort)strlen(cp), cp); + smb_hfield_str(msg, SENDEREXT, cp); if(p->smb.status.attr&SMB_EMAIL) msg->idx.from=atoi(cp); } @@ -177,7 +177,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "from_org", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, SENDERORG, (ushort)strlen(cp), cp); + smb_hfield_str(msg, SENDERORG, cp); } if(JS_GetProperty(cx, hdr, "from_net_type", &val) && val!=JSVAL_VOID) { @@ -191,7 +191,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "from_net_addr", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, SENDERNETADDR, (ushort)strlen(cp), cp); + smb_hfield_str(msg, SENDERNETADDR, cp); } if(JS_GetProperty(cx, hdr, "from_agent", &val) && val!=JSVAL_VOID) { @@ -203,7 +203,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "to_ext", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, RECIPIENTEXT, (ushort)strlen(cp), cp); + smb_hfield_str(msg, RECIPIENTEXT, cp); if(p->smb.status.attr&SMB_EMAIL) msg->idx.to=atoi(cp); } @@ -211,7 +211,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "to_org", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, RECIPIENTORG, (ushort)strlen(cp), cp); + smb_hfield_str(msg, RECIPIENTORG, cp); } if(JS_GetProperty(cx, hdr, "to_net_type", &val) && val!=JSVAL_VOID) { @@ -225,7 +225,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "to_net_addr", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, RECIPIENTNETADDR, (ushort)strlen(cp), cp); + smb_hfield_str(msg, RECIPIENTNETADDR, cp); } if(JS_GetProperty(cx, hdr, "to_agent", &val) && val!=JSVAL_VOID) { @@ -237,19 +237,19 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "replyto", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, REPLYTO, (ushort)strlen(cp), cp); + smb_hfield_str(msg, REPLYTO, cp); } if(JS_GetProperty(cx, hdr, "replyto_ext", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, REPLYTOEXT, (ushort)strlen(cp), cp); + smb_hfield_str(msg, REPLYTOEXT, cp); } if(JS_GetProperty(cx, hdr, "replyto_org", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, REPLYTOORG, (ushort)strlen(cp), cp); + smb_hfield_str(msg, REPLYTOORG, cp); } if(JS_GetProperty(cx, hdr, "replyto_net_type", &val) && val!=JSVAL_VOID) { @@ -261,7 +261,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "replyto_net_addr", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, REPLYTONETADDR, (ushort)strlen(cp), cp); + smb_hfield_str(msg, REPLYTONETADDR, cp); } if(JS_GetProperty(cx, hdr, "replyto_agent", &val) && val!=JSVAL_VOID) { @@ -274,69 +274,69 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm if(JS_GetProperty(cx, hdr, "id", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, RFC822MSGID, (ushort)strlen(cp), cp); + smb_hfield_str(msg, RFC822MSGID, cp); } if(JS_GetProperty(cx, hdr, "reply_id", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, RFC822REPLYID, (ushort)strlen(cp), cp); + smb_hfield_str(msg, RFC822REPLYID, cp); } if(JS_GetProperty(cx, hdr, "reverse_path", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, SMTPREVERSEPATH, (ushort)strlen(cp), cp); + smb_hfield_str(msg, SMTPREVERSEPATH, cp); } /* USENET headers */ if(JS_GetProperty(cx, hdr, "path", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, USENETPATH, (ushort)strlen(cp), cp); + smb_hfield_str(msg, USENETPATH, cp); } if(JS_GetProperty(cx, hdr, "newsgroups", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, USENETNEWSGROUPS, (ushort)strlen(cp), cp); + smb_hfield_str(msg, USENETNEWSGROUPS, cp); } /* FTN headers */ if(JS_GetProperty(cx, hdr, "ftn_msgid", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, FIDOMSGID, (ushort)strlen(cp), cp); + smb_hfield_str(msg, FIDOMSGID, cp); } if(JS_GetProperty(cx, hdr, "ftn_reply", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, FIDOREPLYID, (ushort)strlen(cp), cp); + smb_hfield_str(msg, FIDOREPLYID, cp); } if(JS_GetProperty(cx, hdr, "ftn_area", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, FIDOAREA, (ushort)strlen(cp), cp); + smb_hfield_str(msg, FIDOAREA, cp); } if(JS_GetProperty(cx, hdr, "ftn_flags", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, FIDOFLAGS, (ushort)strlen(cp), cp); + smb_hfield_str(msg, FIDOFLAGS, cp); } if(JS_GetProperty(cx, hdr, "ftn_pid", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, FIDOPID, (ushort)strlen(cp), cp); + smb_hfield_str(msg, FIDOPID, cp); } if(JS_GetProperty(cx, hdr, "ftn_tid", &val) && val!=JSVAL_VOID) { if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, FIDOTID, (ushort)strlen(cp), cp); + smb_hfield_str(msg, FIDOTID, cp); } if(JS_GetProperty(cx, hdr, "date", &val) && val!=JSVAL_VOID) { @@ -413,7 +413,7 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm continue; if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) return(FALSE); - smb_hfield(msg, type, (ushort)strlen(cp), cp); + smb_hfield_str(msg, type, cp); } } diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 6114d147ece5b99c54a4a0960227b3e56a70b91e..3474ae5cbefe9c14712e8253fed04e3b6b54b74e 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -1411,39 +1411,39 @@ static int parse_header_field(char* buf, smbmsg_t* msg, ushort* type) if(buf[0]<=' ' && *type!=UNKNOWN) { /* folded header, append to previous */ p=buf; truncsp(p); - smb_hfield_append(msg,*type,2,"\r\n"); - return smb_hfield_append(msg,*type, (ushort)strlen(p), p); + smb_hfield_append_str(msg,*type,"\r\n"); + return smb_hfield_append_str(msg, *type, p); } if(!strnicmp(buf, "TO:",3)) { p=buf+3; SKIP_WHITESPACE(p); truncsp(p); - return smb_hfield(msg, *type=RFC822TO, (ushort)strlen(p), p); + return smb_hfield_str(msg, *type=RFC822TO, p); } if(!strnicmp(buf, "REPLY-TO:",9)) { p=buf+9; SKIP_WHITESPACE(p); truncsp(p); - smb_hfield(msg, *type=RFC822REPLYTO, (ushort)strlen(p), p); + smb_hfield_str(msg, *type=RFC822REPLYTO, p); if(*p=='<') { p++; truncstr(p,">"); } nettype=NET_INTERNET; smb_hfield(msg, REPLYTONETTYPE, sizeof(nettype), &nettype); - return smb_hfield(msg, *type=REPLYTONETADDR, (ushort)strlen(p), p); + return smb_hfield_str(msg, *type=REPLYTONETADDR, p); } if(!strnicmp(buf, "FROM:", 5)) { p=buf+5; SKIP_WHITESPACE(p); truncsp(p); - return smb_hfield(msg, *type=RFC822FROM, (ushort)strlen(p), p); + return smb_hfield_str(msg, *type=RFC822FROM, p); } if(!strnicmp(buf, "ORGANIZATION:",13)) { p=buf+13; SKIP_WHITESPACE(p); - return smb_hfield(msg, *type=SENDERORG, (ushort)strlen(p), p); + return smb_hfield_str(msg, *type=SENDERORG, p); } if(!strnicmp(buf, "DATE:",5)) { p=buf+5; @@ -1454,15 +1454,15 @@ static int parse_header_field(char* buf, smbmsg_t* msg, ushort* type) if(!strnicmp(buf, "MESSAGE-ID:",11)) { p=buf+11; SKIP_WHITESPACE(p); - return smb_hfield(msg, *type=RFC822MSGID, (ushort)strlen(p), p); + return smb_hfield_str(msg, *type=RFC822MSGID, p); } if(!strnicmp(buf, "IN-REPLY-TO:",12)) { p=buf+12; SKIP_WHITESPACE(p); - return smb_hfield(msg, *type=RFC822REPLYID, (ushort)strlen(p), p); + return smb_hfield_str(msg, *type=RFC822REPLYID, p); } /* Fall-through */ - return smb_hfield(msg, *type=RFC822HEADER, (ushort)strlen(buf), buf); + return smb_hfield_str(msg, *type=RFC822HEADER, buf); } static int chk_received_hdr(SOCKET socket,const char *buf,IN_ADDR *dnsbl_result, char *dnsbl, char *dnsbl_ip) @@ -1946,7 +1946,7 @@ static void smtp_thread(void* arg) lprintf("%04d !SMTP TAGGED MAIL SUBJECT from blacklisted server with: %s" ,socket, startup->dnsbl_tag); } - smb_hfield(&msg, SUBJECT, (ushort)strlen(p), p); + smb_hfield_str(&msg, SUBJECT, p); msg.idx.subj=subject_crc(p); continue; } @@ -2040,7 +2040,7 @@ static void smtp_thread(void* arg) sprintf(str,"%s: %s is listed on %s as %s" ,startup->dnsbl_hdr, dnsbl_ip ,dnsbl, inet_ntoa(dnsbl_result)); - smb_hfield(&msg,RFC822HEADER,strlen(str),str); + smb_hfield_str(&msg, RFC822HEADER, str); lprintf("%04d !SMTP TAGGED MAIL HEADER from blacklisted server with: %s" ,socket, startup->dnsbl_hdr); } @@ -2059,10 +2059,10 @@ static void smtp_thread(void* arg) continue; } nettype=NET_INTERNET; - smb_hfield(&msg, SMTPREVERSEPATH, (ushort)strlen(reverse_path), reverse_path); - smb_hfield(&msg, SENDER, (ushort)strlen(sender), sender); + smb_hfield_str(&msg, SMTPREVERSEPATH, reverse_path); + smb_hfield_str(&msg, SENDER, sender); smb_hfield(&msg, SENDERNETTYPE, sizeof(nettype), &nettype); - smb_hfield(&msg, SENDERNETADDR, (ushort)strlen(sender_addr), sender_addr); + smb_hfield_str(&msg, SENDERNETADDR, sender_addr); if(msg.idx.subj==0) { p=""; smb_hfield(&msg, SUBJECT, 0, p); @@ -2095,7 +2095,7 @@ static void smtp_thread(void* arg) if(subnum!=INVALID_SUB) { /* Message Base */ if(rcpt_name[0]==0) strcpy(rcpt_name,"All"); - smb_hfield(&msg, RECIPIENT, (ushort)strlen(rcpt_name), rcpt_name); + smb_hfield_str(&msg, RECIPIENT, rcpt_name); smb.subnum=subnum; if((i=savemsg(&scfg, &smb, &msg, msgbuf))!=0) { @@ -2155,20 +2155,19 @@ static void smtp_thread(void* arg) ,revision,PLATFORM_DESC ,esmtp ? "ESMTP" : "SMTP" ,rcpt_name,msgdate(msg.hdr.when_imported,date)); - smb_hfield(&newmsg, RFC822HEADER, (ushort)strlen(hdrfield), hdrfield); + smb_hfield_str(&newmsg, RFC822HEADER, hdrfield); - smb_hfield(&newmsg, RECIPIENT, (ushort)strlen(rcpt_name), rcpt_name); + smb_hfield_str(&newmsg, RECIPIENT, rcpt_name); newmsg.idx.to=usernum; if(nettype==NET_NONE) { /* Local destination */ sprintf(str,"%u",usernum); - smb_hfield(&newmsg, RECIPIENTEXT, (ushort)strlen(str), str); + smb_hfield_str(&newmsg, RECIPIENTEXT, str); } else { if(nettype!=NET_QWK) newmsg.idx.to=0; smb_hfield(&newmsg, RECIPIENTNETTYPE, sizeof(nettype), &nettype); - smb_hfield(&newmsg, RECIPIENTNETADDR - ,(ushort)strlen(rcpt_addr), rcpt_addr); + smb_hfield_str(&newmsg, RECIPIENTNETADDR, rcpt_addr); } i=smb_addmsghdr(&smb,&newmsg,SMB_SELFPACK); @@ -2987,21 +2986,19 @@ BOOL bounce(smb_t* smb, smbmsg_t* msg, char* err, BOOL immediate) newmsg.hdr.delivery_attempts=0; sprintf(str,"Delivery failure: %.100s",newmsg.subj); - smb_hfield(&newmsg, SUBJECT, (ushort)strlen(str), str); - smb_hfield(&newmsg, RECIPIENT, (ushort)strlen(newmsg.from), newmsg.from); + smb_hfield_str(&newmsg, SUBJECT, str); + smb_hfield_str(&newmsg, RECIPIENT, newmsg.from); if(newmsg.idx.to) { sprintf(str,"%u",newmsg.idx.to); - smb_hfield(&newmsg, RECIPIENTEXT, (ushort)strlen(str), str); + smb_hfield_str(&newmsg, RECIPIENTEXT, str); } if(newmsg.from_net.type!=NET_NONE && newmsg.from_net.type!=NET_FIDO && newmsg.reverse_path!=NULL) { - smb_hfield(&newmsg, RECIPIENTNETTYPE, sizeof(newmsg.from_net.type) - ,&newmsg.from_net.type); - smb_hfield(&newmsg, RECIPIENTNETADDR, (ushort)strlen(newmsg.reverse_path) - ,newmsg.reverse_path); + smb_hfield(&newmsg, RECIPIENTNETTYPE, sizeof(newmsg.from_net.type), &newmsg.from_net.type); + smb_hfield_str(&newmsg, RECIPIENTNETADDR, newmsg.reverse_path); } strcpy(str,"Mail Delivery Subsystem"); - smb_hfield(&newmsg, SENDER, (ushort)strlen(str), str); + smb_hfield_str(&newmsg, SENDER, str); smb_hfield(&newmsg, SENDERAGENT, sizeof(agent), &agent); /* Put error message in subject for now */ @@ -3011,16 +3008,15 @@ BOOL bounce(smb_t* smb, smbmsg_t* msg, char* err, BOOL immediate) attempts[0]=0; sprintf(str,"%s reporting delivery failure of message %s" ,startup->host_name, attempts); - smb_hfield(&newmsg, SMB_COMMENT, (ushort)strlen(str), str); + smb_hfield_str(&newmsg, SMB_COMMENT, str); sprintf(str,"from %s to %s\r\n" ,msg->reverse_path==NULL ? msg->from : msg->reverse_path ,(char*)msg->to_net.addr); - smb_hfield(&newmsg, SMB_COMMENT, (ushort)strlen(str), str); + smb_hfield_str(&newmsg, SMB_COMMENT, str); strcpy(str,"Reason:"); - smb_hfield(&newmsg, SMB_COMMENT, (ushort)strlen(str), str); - smb_hfield(&newmsg, SMB_COMMENT, (ushort)strlen(err), err); - sprintf(str,"\r\nOriginal message text follows:\r\n"); - smb_hfield(&newmsg, SMB_COMMENT, (ushort)strlen(str), str); + smb_hfield_str(&newmsg, SMB_COMMENT, str); + smb_hfield_str(&newmsg, SMB_COMMENT, err); + smb_hfield_str(&newmsg, SMB_COMMENT, "\r\nOriginal message text follows:\r\n"); if((i=smb_addmsghdr(smb,&newmsg,SMB_SELFPACK))!=0) lprintf("0000 !BOUNCE ERROR %d (%s) adding message header" diff --git a/src/sbbs3/netmail.cpp b/src/sbbs3/netmail.cpp index 47018f7aa1ac9b06e65e3c5e440a68046c478dad..6ff6729d41bd6a6595f992021bdd6f5e267e2160 100644 --- a/src/sbbs3/netmail.cpp +++ b/src/sbbs3/netmail.cpp @@ -228,16 +228,16 @@ bool sbbs_t::inetmail(char *into, char *subj, long mode) msg.hdr.offset=offset; net=NET_INTERNET; - smb_hfield(&msg,RECIPIENT,strlen(name),name); + smb_hfield_str(&msg,RECIPIENT,name); msg.idx.to=0; /* Out-bound NetMail set to 0 */ smb_hfield(&msg,RECIPIENTNETTYPE,sizeof(net),&net); - smb_hfield(&msg,RECIPIENTNETADDR,strlen(addr),addr); + smb_hfield_str(&msg,RECIPIENTNETADDR,addr); strcpy(str,cfg.inetmail_misc&NMAIL_ALIAS ? useron.alias : useron.name); - smb_hfield(&msg,SENDER,strlen(str),str); + smb_hfield_str(&msg,SENDER,str); sprintf(str,"%u",useron.number); - smb_hfield(&msg,SENDEREXT,strlen(str),str); + smb_hfield_str(&msg,SENDEREXT,str); msg.idx.from=useron.number; /* @@ -245,7 +245,7 @@ bool sbbs_t::inetmail(char *into, char *subj, long mode) smb_hfield(&msg,SENDERNETADDR,strlen(sys_inetaddr),sys_inetaddr); */ - smb_hfield(&msg,SUBJECT,strlen(title),title); + smb_hfield_str(&msg,SUBJECT,title); strcpy(str,title); msg.idx.subj=subject_crc(str); @@ -420,18 +420,18 @@ bool sbbs_t::qnetmail(char *into, char *subj, long mode) msg.hdr.offset=offset; net=NET_QWK; - smb_hfield(&msg,RECIPIENT,strlen(to),to); + smb_hfield_str(&msg,RECIPIENT,to); msg.idx.to=touser; smb_hfield(&msg,RECIPIENTNETTYPE,sizeof(net),&net); - smb_hfield(&msg,RECIPIENTNETADDR,strlen(fulladdr),fulladdr); + smb_hfield_str(&msg,RECIPIENTNETADDR,fulladdr); - smb_hfield(&msg,SENDER,strlen(useron.alias),useron.alias); + smb_hfield_str(&msg,SENDER,useron.alias); sprintf(str,"%u",useron.number); - smb_hfield(&msg,SENDEREXT,strlen(str),str); + smb_hfield_str(&msg,SENDEREXT,str); msg.idx.from=useron.number; - smb_hfield(&msg,SUBJECT,strlen(title),title); + smb_hfield_str(&msg,SUBJECT,title); msg.idx.subj=subject_crc(title); smb_dfield(&msg,TEXT_BODY,length); diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp index 8a551500bf08d22afcfe6a99b3e8ee16c6ebcb32..04caee951643cade6672863de4e765dbabed99a7 100644 --- a/src/sbbs3/postmsg.cpp +++ b/src/sbbs3/postmsg.cpp @@ -37,13 +37,12 @@ #include "sbbs.h" -static char* program_id() +static char* program_id(char* pid) { - static char str[128]; char compiler[64]; DESCRIBE_COMPILER(compiler); - sprintf(str,"%.10s %s%c-%s%s%s %s %s" + sprintf(pid,"%.10s %s%c-%s%s%s %s %s" ,VERSION_NOTICE,VERSION,REVISION,PLATFORM_DESC ,beta_version #ifdef _DEBUG @@ -52,7 +51,7 @@ static char* program_id() ,"" #endif ,__DATE__,compiler); - return(str); + return(pid); } /****************************************************************************/ @@ -64,7 +63,7 @@ bool sbbs_t::postmsg(uint subnum, smbmsg_t *remsg, long wm_mode) char str[256],touser[256],title[LEN_TITLE+1],buf[SDT_BLOCK_LEN] ,top[256]; char msg_id[256]; - char* pid; + char pid[128]; ushort xlat,msgattr; int i,j,x,file,storage; ulong l,length,offset,crc=0xffffffff; @@ -314,23 +313,22 @@ bool sbbs_t::postmsg(uint subnum, smbmsg_t *remsg, long wm_mode) msg.idx.time=msg.hdr.when_imported.time; msg.idx.number=smb.status.last_msg+1; /* this *should* be the new message number */ - pid=program_id(); - smb_hfield(&msg,FIDOPID,strlen(pid),pid); + smb_hfield_str(&msg,FIDOPID,program_id(pid)); /* Generate default (RFC822) message-id (always) */ SAFECOPY(msg_id,get_msgid(&cfg,subnum,&msg)); - smb_hfield(&msg,RFC822MSGID,strlen(msg_id),msg_id); + smb_hfield_str(&msg,RFC822MSGID,msg_id); /* Generate FTN (FTS-9) MSGID */ if(cfg.sub[subnum]->misc&SUB_FIDO) { SAFECOPY(msg_id,ftn_msgid(cfg.sub[subnum],&msg)); - smb_hfield(&msg,FIDOMSGID,strlen(msg_id),msg_id); + smb_hfield_str(&msg,FIDOMSGID,msg_id); } if(remsg) { if(remsg->ftn_msgid!=NULL) - smb_hfield(&msg,FIDOREPLYID,strlen(remsg->ftn_msgid),remsg->ftn_msgid); + smb_hfield_str(&msg,FIDOREPLYID,remsg->ftn_msgid); if(remsg->id!=NULL) - smb_hfield(&msg,RFC822REPLYID,strlen(remsg->id),remsg->id); + smb_hfield_str(&msg,RFC822REPLYID,remsg->id); msg.hdr.thread_orig=remsg->hdr.number; if(!remsg->hdr.thread_first) { remsg->hdr.thread_first=smb.status.last_msg+1; @@ -380,19 +378,19 @@ bool sbbs_t::postmsg(uint subnum, smbmsg_t *remsg, long wm_mode) msg.hdr.offset=offset; - smb_hfield(&msg,RECIPIENT,strlen(touser),touser); + smb_hfield_str(&msg,RECIPIENT,touser); strlwr(touser); msg.idx.to=crc16(touser,0); strcpy(str,cfg.sub[subnum]->misc&SUB_NAME ? useron.name : useron.alias); - smb_hfield(&msg,SENDER,strlen(str),str); + smb_hfield_str(&msg,SENDER,str); strlwr(str); msg.idx.from=crc16(str,0); sprintf(str,"%u",useron.number); - smb_hfield(&msg,SENDEREXT,strlen(str),str); + smb_hfield_str(&msg,SENDEREXT,str); - smb_hfield(&msg,SUBJECT,strlen(title),title); + smb_hfield_str(&msg,SUBJECT,title); msg.idx.subj=subject_crc(title); smb_dfield(&msg,TEXT_BODY,length); @@ -443,7 +441,7 @@ extern "C" void DLLCALL signal_sub_sem(scfg_t* cfg, uint subnum) extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, char* msgbuf) { char pad=0; - char* pid; + char pid[128]; char* reply_id; char msg_id[256]; char* lzhbuf=NULL; @@ -602,22 +600,20 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, char* msg } smb_dfield(msg,TEXT_BODY,length); - if(smb_get_hfield(msg,FIDOPID,NULL)==NULL) { /* Don't create duplicate PIDs */ - pid=program_id(); - smb_hfield(msg,FIDOPID,strlen(pid),pid); - } + if(smb_get_hfield(msg,FIDOPID,NULL)==NULL) /* Don't create duplicate PIDs */ + smb_hfield_str(msg,FIDOPID,program_id(pid)); /* Generate default (RFC822) message-id */ if(smb_get_hfield(msg,RFC822MSGID,NULL)==NULL) { SAFECOPY(msg_id,get_msgid(cfg,smb->subnum,msg)); - smb_hfield(msg,RFC822MSGID,strlen(msg_id),msg_id); + smb_hfield_str(msg,RFC822MSGID,msg_id); } /* Generate FTN MSGID */ if(smb->subnum!=INVALID_SUB && cfg->sub[smb->subnum]->misc&SUB_FIDO && smb_get_hfield(msg,FIDOMSGID,NULL)==NULL) { SAFECOPY(msg_id,ftn_msgid(cfg->sub[smb->subnum],msg)); - smb_hfield(msg,FIDOMSGID,strlen(msg_id),msg_id); + smb_hfield_str(msg,FIDOMSGID,msg_id); } if(msg->to==NULL) /* no recipient, don't add header */ @@ -649,12 +645,12 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, char* msg /* Add RFC-822 Reply-ID (generate if necessary) */ if(msg->reply_id==NULL) { reply_id=get_msgid(cfg,smb->subnum,&remsg); - smb_hfield(msg,RFC822REPLYID,strlen(reply_id),reply_id); + smb_hfield_str(msg,RFC822REPLYID,reply_id); } /* Add FidoNet Reply if original message has FidoNet MSGID */ if(msg->ftn_reply==NULL && remsg.ftn_msgid!=NULL) - smb_hfield(msg,FIDOREPLYID,strlen(remsg.ftn_msgid),remsg.ftn_msgid); + smb_hfield_str(msg,FIDOREPLYID,remsg.ftn_msgid); if(!remsg.hdr.thread_first) { /* This msg is first reply */ remsg.hdr.thread_first=msg->idx.number; diff --git a/src/sbbs3/qwktomsg.cpp b/src/sbbs3/qwktomsg.cpp index 50799262ca3343898b5d96e36218c260af59e0f6..e6e5d96fffad3cae961da5625e143df605f212c2 100644 --- a/src/sbbs3/qwktomsg.cpp +++ b/src/sbbs3/qwktomsg.cpp @@ -110,20 +110,20 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum msg.idx.to=touser; username(&cfg,touser,str); - smb_hfield(&msg,RECIPIENT,strlen(str),str); + smb_hfield_str(&msg,RECIPIENT,str); sprintf(str,"%u",touser); - smb_hfield(&msg,RECIPIENTEXT,strlen(str),str); + smb_hfield_str(&msg,RECIPIENTEXT,str); } else { sprintf(str,"%25.25s",(char *)hdrblk+21); /* To user */ truncsp(str); - smb_hfield(&msg,RECIPIENT,strlen(str),str); + smb_hfield_str(&msg,RECIPIENT,str); strlwr(str); msg.idx.to=crc16(str,0); } sprintf(str,"%25.25s",hdrblk+71); /* Subject */ truncsp(str); - smb_hfield(&msg,SUBJECT,strlen(str),str); + smb_hfield_str(&msg,SUBJECT,str); msg.idx.subj=subject_crc(str); /********************************/ @@ -259,18 +259,18 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum strupr(str); j=NET_QWK; smb_hfield(&msg,SENDERNETTYPE,2,&j); - smb_hfield(&msg,SENDERNETADDR,strlen(str),str); + smb_hfield_str(&msg,SENDERNETADDR,str); sprintf(str,"%25.25s",hdrblk+46); /* From user */ truncsp(str); } else { sprintf(str,"%u",useron.number); - smb_hfield(&msg,SENDEREXT,strlen(str),str); + smb_hfield_str(&msg,SENDEREXT,str); if((uint)subnum!=INVALID_SUB && cfg.sub[subnum]->misc&SUB_NAME) strcpy(str,useron.name); else strcpy(str,useron.alias); } - smb_hfield(&msg,SENDER,strlen(str),str); + smb_hfield_str(&msg,SENDER,str); if((uint)subnum==INVALID_SUB) { if(useron.rest&FLAG('Q') || fromhub) msg.idx.from=0; @@ -293,7 +293,7 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum p=header+i+7; /* Skip "@MSGID:" */ while(*p && *p<=SP) p++; /* Skip any spaces */ truncstr(p," "); /* Truncate at first space char */ - smb_hfield(&msg,RFC822MSGID,strlen(p),p); + smb_hfield_str(&msg,RFC822MSGID,p); } if(!strnicmp(header+skip,"@REPLY:",7)) { if(!fromhub) @@ -307,7 +307,7 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum p=header+i+7; /* Skip "@REPLY:" */ while(*p && *p<=SP) p++; /* Skip any spaces */ truncstr(p," "); /* Truncate at first space char */ - smb_hfield(&msg,RFC822REPLYID,strlen(p),p); + smb_hfield_str(&msg,RFC822REPLYID,p); } if(!strnicmp(header+skip,"@TZ:",4)) { if(!fromhub) @@ -331,7 +331,7 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum } p=header+i+9; /* Skip "@REPLYTO:" */ while(*p && *p<=SP) p++; /* Skip any spaces */ - smb_hfield(&msg,REPLYTO,strlen(p),p); + smb_hfield_str(&msg,REPLYTO,p); } free(header); diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 435be8b5cf742d3138c999fa7692d9ea0d006326..33236845e8c61a1165a141c2fb63bf61cc8ec503 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -2388,23 +2388,23 @@ int fmsgtosmsg(uchar HUGE16 *fbuf, fmsghdr_t fmsghdr, uint user, uint subnum) destaddr.node=fmsghdr.destnode; destaddr.point=fmsghdr.destpoint; - smb_hfield(&msg,SENDER,(ushort)strlen(fmsghdr.from),fmsghdr.from); + smb_hfield_str(&msg,SENDER,fmsghdr.from); strlwr(fmsghdr.from); if(subnum==INVALID_SUB) msg.idx.from=0; else msg.idx.from=crc16(fmsghdr.from,0); - smb_hfield(&msg,RECIPIENT,(ushort)strlen(fmsghdr.to),fmsghdr.to); + smb_hfield_str(&msg,RECIPIENT,fmsghdr.to); strlwr(fmsghdr.to); msg.idx.to=crc16(fmsghdr.to,0); if(user) { sprintf(str,"%u",user); - smb_hfield(&msg,RECIPIENTEXT,(ushort)strlen(str),str); + smb_hfield_str(&msg,RECIPIENTEXT,str); msg.idx.to=user; } - smb_hfield(&msg,SUBJECT,(ushort)strlen(fmsghdr.subj),fmsghdr.subj); + smb_hfield_str(&msg,SUBJECT,fmsghdr.subj); msg.idx.subj=subject_crc(fmsghdr.subj); if(fbuf==NULL) { diff --git a/src/sbbs3/smbutil.c b/src/sbbs3/smbutil.c index 0fbc7594fabc68db02676f5d4a604a9efaf73325..09f3666a1ac299bbd6aefb492033f88ffa44cba7 100644 --- a/src/sbbs3/smbutil.c +++ b/src/sbbs3/smbutil.c @@ -224,7 +224,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, SAFECOPY(str,to); truncsp(str); - i=smb_hfield(&msg,RECIPIENT,(ushort)strlen(str),str); + i=smb_hfield_str(&msg,RECIPIENT,str); if(i) { fprintf(stderr,"\n\7!smb_hfield returned %d: %s\n",i,smb.last_error); smb_freemsgdat(&smb,offset,length,1); @@ -239,7 +239,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, } else SAFECOPY(str,to_number); truncsp(str); - i=smb_hfield(&msg,RECIPIENTEXT,(ushort)strlen(str),str); + i=smb_hfield_str(&msg,RECIPIENTEXT,str); if(i) { fprintf(stderr,"\n\7!smb_hfield returned %d: %s\n",i,smb.last_error); smb_freemsgdat(&smb,offset,length,1); @@ -270,7 +270,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, smb_freemsgdat(&smb,offset,length,1); exit(1); } - i=smb_hfield(&msg,RECIPIENTNETADDR,(ushort)strlen(str),str); + i=smb_hfield_str(&msg,RECIPIENTNETADDR,str); if(i) { fprintf(stderr,"\n\7!smb_hfield returned %d: %s\n",i,smb.last_error); smb_freemsgdat(&smb,offset,length,1); @@ -285,7 +285,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, } else SAFECOPY(str,from); truncsp(str); - i=smb_hfield(&msg,SENDER,(ushort)strlen(str),str); + i=smb_hfield_str(&msg,SENDER,str); if(i) { fprintf(stderr,"\n\7!smb_hfield returned %d: %s\n",i,smb.last_error); smb_freemsgdat(&smb,offset,length,1); @@ -298,7 +298,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, } else SAFECOPY(str,from_number); truncsp(str); - i=smb_hfield(&msg,SENDEREXT,(ushort)strlen(str),str); + i=smb_hfield_str(&msg,SENDEREXT,str); if(i) { fprintf(stderr,"\n\7!smb_hfield returned %d: %s\n",i,smb.last_error); smb_freemsgdat(&smb,offset,length,1); @@ -317,7 +317,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, } else SAFECOPY(str,subject); truncsp(str); - i=smb_hfield(&msg,SUBJECT,(ushort)strlen(str),str); + i=smb_hfield_str(&msg,SUBJECT,str); if(i) { fprintf(stderr,"\n\7!smb_hfield returned %d: %s\n",i,smb.last_error); smb_freemsgdat(&smb,offset,length,1); @@ -339,7 +339,7 @@ void postmsg(char type, char* to, char* to_number, char* to_address, ,__DATE__ ,compiler ); - smb_hfield(&msg,FIDOPID,(ushort)strlen(str),str); + smb_hfield_str(&msg,FIDOPID,str); i=smb_addmsghdr(&smb,&msg,smb.status.attr&SMB_HYPERALLOC); diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp index 25a569cbaa04d5379c447c3268d11d15ca1e4d83..fabd351101c663cc0fb2a34b723b7edd88427957 100644 --- a/src/sbbs3/writemsg.cpp +++ b/src/sbbs3/writemsg.cpp @@ -931,12 +931,12 @@ void sbbs_t::forwardmail(smbmsg_t *msg, int usernumber) msg->hdr.attr=msg->idx.attr; - smb_hfield(msg,SENDER,strlen(useron.alias),useron.alias); + smb_hfield_str(msg,SENDER,useron.alias); sprintf(str,"%u",useron.number); - smb_hfield(msg,SENDEREXT,strlen(str),str); + smb_hfield_str(msg,SENDEREXT,str); username(&cfg,usernumber,touser); - smb_hfield(msg,RECIPIENT,strlen(touser),touser); + smb_hfield_str(msg,RECIPIENT,touser); sprintf(str,"%u",usernumber); smb_hfield(msg,RECIPIENTEXT,sizeof(str),str); msg->idx.to=usernumber; diff --git a/src/smblib/smblib.c b/src/smblib/smblib.c index 170f4f3966cbfe13a7b34abb4b5f2847c99bb965..a620209d5bdb00c8a782b969b8c40390041387f0 100644 --- a/src/smblib/smblib.c +++ b/src/smblib/smblib.c @@ -1197,6 +1197,14 @@ int SMBCALL smb_hfield(smbmsg_t* msg, ushort type, size_t length, void* data) return(SMB_SUCCESS); } +/****************************************************************************/ +/* Convenience function to add an ASCIIZ string header field */ +/****************************************************************************/ +int SMBCALL smb_hfield_str(smbmsg_t* msg, ushort type, const char* str) +{ + return smb_hfield(msg, type, strlen(str), (void*)str); +} + /****************************************************************************/ /* Appends data to an existing header field (in memory only) */ /****************************************************************************/ @@ -1239,6 +1247,13 @@ int SMBCALL smb_hfield_append(smbmsg_t* msg, ushort type, size_t length, void* d return(SMB_SUCCESS); } +/****************************************************************************/ +/* Appends data to an existing ASCIIZ header field (in memory only) */ +/****************************************************************************/ +int SMBCALL smb_hfield_append_str(smbmsg_t* msg, ushort type, const char* str) +{ + return smb_hfield_append(msg, type, strlen(str), (void*)str); +} /****************************************************************************/ /* Searches for a specific header field (by type) and returns it */ diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h index 02fedaf0bb4bdfb2977b0ff0ba5ad1ffb8158de1..def48ab53da2ab1fcd2ec9cbd121317b5004cd12 100644 --- a/src/smblib/smblib.h +++ b/src/smblib/smblib.h @@ -121,7 +121,9 @@ SMBEXPORT int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_unlockmsghdr(smb_t* smb, smbmsg_t* msg); SMBEXPORT int SMBCALL smb_addcrc(smb_t* smb, ulong crc); SMBEXPORT int SMBCALL smb_hfield(smbmsg_t* msg, ushort type, size_t length, void* data); +SMBEXPORT int SMBCALL smb_hfield_str(smbmsg_t* msg, ushort type, const char* str); SMBEXPORT int SMBCALL smb_hfield_append(smbmsg_t* msg, ushort type, size_t length, void* data); +SMBEXPORT int SMBCALL smb_hfield_append_str(smbmsg_t* msg, ushort type, const char* data); SMBEXPORT int SMBCALL smb_dfield(smbmsg_t* msg, ushort type, ulong length); SMBEXPORT void* SMBCALL smb_get_hfield(smbmsg_t* msg, ushort type, hfield_t* hfield); SMBEXPORT char* SMBCALL smb_hfieldtype(ushort type);