diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 29d73307f9385804d98c9d75d80b0712a5d6fd31..0aba325f66d056c5d80910ea1b784682ee417bd5 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -403,8 +403,12 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm field=JSVAL_TO_OBJECT(val); if(!JS_GetProperty(cx, field, "type", &val)) continue; - JS_ValueToInt32(cx,val,&i32); - type=(ushort)i32; + if(JSVAL_IS_STRING(val)) + type=smb_hfieldtypelookup(JS_GetStringBytes(JS_ValueToString(cx,val))); + else { + JS_ValueToInt32(cx,val,&i32); + type=(ushort)i32; + } if(!JS_GetProperty(cx, field, "data", &val)) continue; if((cp=JS_GetStringBytes(JS_ValueToString(cx,val)))==NULL) diff --git a/src/smblib/smblib.c b/src/smblib/smblib.c index 4876bfe24b4a50e8d0258ed152b5b3a5107efec9..be9ae601866da09df9108f3ad52d5dc0b475110e 100644 --- a/src/smblib/smblib.c +++ b/src/smblib/smblib.c @@ -2171,58 +2171,58 @@ char* SMBCALL smb_hfieldtype(ushort type) static char str[8]; switch(type) { - case SENDER: return("SENDER"); - case SENDERAGENT: return("SENDERAGENT"); - case SENDERNETTYPE: return("SENDERNETTYPE"); - case SENDERNETADDR: return("SENDERNETADDR"); - case SENDEREXT: return("SENDEREXT"); - case SENDERORG: return("SENDERORG"); - - case REPLYTO: return("REPLYTO"); - case REPLYTOAGENT: return("REPLYTOAGENT"); - case REPLYTONETTYPE: return("REPLYTONETTYPE"); - case REPLYTONETADDR: return("REPLYTONETADDR"); - case REPLYTOEXT: return("REPLYTOEXT"); + case SENDER: return("Sender"); + case SENDERAGENT: return("SenderAgent"); + case SENDERNETTYPE: return("SenderNetType"); + case SENDERNETADDR: return("SenderNetAddr"); + case SENDEREXT: return("SenderExt"); + case SENDERORG: return("SenderOrg"); + + case REPLYTO: return("ReplyTo"); + case REPLYTOAGENT: return("ReplyToAgent"); + case REPLYTONETTYPE: return("ReplyToNetType"); + case REPLYTONETADDR: return("ReplyToNetAddr"); + case REPLYTOEXT: return("ReplyToExt"); - case RECIPIENT: return("RECIPIENT"); - case RECIPIENTAGENT: return("RECIPIENTAGENT"); - case RECIPIENTNETTYPE: return("RECIPIENTNETTYPE"); - case RECIPIENTNETADDR: return("RECIPIENTNETADDR"); - case RECIPIENTEXT: return("RECIPIENTEXT"); - - case SUBJECT: return("SUBJECT"); - case SMB_SUMMARY: return("SUMMARY"); - case SMB_COMMENT: return("COMMENT"); - case SMB_CARBONCOPY: return("CARBONCOPY"); - case SMB_GROUP: return("GROUP"); - case SMB_EXPIRATION: return("EXPIRATION"); - case SMB_PRIORITY: return("PRIORITY"); - case SMB_COST: return("COST"); - - case FIDOCTRL: return("FIDOCTRL"); - case FIDOAREA: return("FIDOAREA"); - case FIDOSEENBY: return("FIDOSEENBY"); - case FIDOPATH: return("FIDOPATH"); - case FIDOMSGID: return("FIDOMSGID"); - case FIDOREPLYID: return("FIDOREPLYID"); - case FIDOPID: return("FIDOPID"); - case FIDOFLAGS: return("FIDOFLAGS"); - case FIDOTID: return("FIDOTID"); - - case RFC822HEADER: return("RFC822HEADER"); - case RFC822MSGID: return("RFC822MSGID"); - case RFC822REPLYID: return("RFC822REPLYID"); - case RFC822TO: return("RFC822TO"); - case RFC822FROM: return("RFC822FROM"); - case RFC822REPLYTO: return("RFC822REPLYTO"); - - case USENETPATH: return("USENETPATH"); - case USENETNEWSGROUPS: return("USENETNEWSGROUPS"); - - case SMTPCOMMAND: return("SMTPCOMMAND"); - case SMTPREVERSEPATH: return("SMTPREVERSEPATH"); - - case SMTPSYSMSG: return("SMTPSYSMSG"); + case RECIPIENT: return("Recipient"); + case RECIPIENTAGENT: return("RecipientAgent"); + case RECIPIENTNETTYPE: return("RecipientNetType"); + case RECIPIENTNETADDR: return("RecipientNetAddr"); + case RECIPIENTEXT: return("RecipientExt"); + + case SUBJECT: return("Subject"); + case SMB_SUMMARY: return("Summary"); + case SMB_COMMENT: return("Comment"); + case SMB_CARBONCOPY: return("CarbonCopy"); + case SMB_GROUP: return("Group"); + case SMB_EXPIRATION: return("Expiration"); + case SMB_PRIORITY: return("Priority"); + case SMB_COST: return("Cost"); + + case FIDOCTRL: return("FidoCtrl"); + case FIDOAREA: return("FidoArea"); + case FIDOSEENBY: return("FidoSeenBy"); + case FIDOPATH: return("FidoPath"); + case FIDOMSGID: return("FidoMsgID"); + case FIDOREPLYID: return("FidoReplyID"); + case FIDOPID: return("FidoPID"); + case FIDOFLAGS: return("FidoFlags"); + case FIDOTID: return("FidoTID"); + + case RFC822HEADER: return("RFC822Header"); + case RFC822MSGID: return("RFC822MsgID"); + case RFC822REPLYID: return("RFC822ReplyID"); + case RFC822TO: return("RFC822To"); + case RFC822FROM: return("RFC822From"); + case RFC822REPLYTO: return("RFC822ReplyTo"); + + case USENETPATH: return("UsenetPath"); + case USENETNEWSGROUPS: return("UsenetNewsgroups"); + + case SMTPCOMMAND: return("SMTPCommand"); + case SMTPREVERSEPATH: return("SMTPReversePath"); + + case SMTPSYSMSG: return("SMTPSysMsg"); case UNKNOWN: return("UNKNOWN"); case UNKNOWNASCII: return("UNKNOWNASCII"); @@ -2232,6 +2232,20 @@ char* SMBCALL smb_hfieldtype(ushort type) return(str); } +ushort SMBCALL smb_hfieldtypelookup(const char* str) +{ + ushort type; + + if(isdigit(*str)) + return(strtol(str,NULL,0)); + + for(type=0;type<=UNUSED;type++) + if(stricmp(str,smb_hfieldtype(type))==0) + return(type); + + return(UNKNOWN); +} + char* SMBCALL smb_dfieldtype(ushort type) { static char str[8]; diff --git a/src/smblib/smblib.h b/src/smblib/smblib.h index 54a7d72fe48f97bbbfa56c2fd1cd6a4cfbad4832..02fedaf0bb4bdfb2977b0ff0ba5ad1ffb8158de1 100644 --- a/src/smblib/smblib.h +++ b/src/smblib/smblib.h @@ -93,80 +93,81 @@ extern "C" { #endif -SMBEXPORT int SMBCALL smb_ver(void); -SMBEXPORT char* SMBCALL smb_lib_ver(void); -SMBEXPORT int SMBCALL smb_open(smb_t* smb); -SMBEXPORT void SMBCALL smb_close(smb_t* smb); -SMBEXPORT int SMBCALL smb_open_da(smb_t* smb); -SMBEXPORT void SMBCALL smb_close_da(smb_t* smb); -SMBEXPORT int SMBCALL smb_open_ha(smb_t* smb); -SMBEXPORT void SMBCALL smb_close_ha(smb_t* smb); -SMBEXPORT int SMBCALL smb_create(smb_t* smb); -SMBEXPORT int SMBCALL smb_stack(smb_t* smb, int op); -SMBEXPORT int SMBCALL smb_trunchdr(smb_t* smb); -SMBEXPORT int SMBCALL smb_lock(smb_t* smb); -SMBEXPORT int SMBCALL smb_unlock(smb_t* smb); -SMBEXPORT int SMBCALL smb_islocked(smb_t* smb); -SMBEXPORT int SMBCALL smb_locksmbhdr(smb_t* smb); -SMBEXPORT int SMBCALL smb_getstatus(smb_t* smb); -SMBEXPORT int SMBCALL smb_putstatus(smb_t* smb); -SMBEXPORT int SMBCALL smb_unlocksmbhdr(smb_t* smb); -SMBEXPORT int SMBCALL smb_getmsgidx(smb_t* smb, smbmsg_t* msg); -SMBEXPORT int SMBCALL smb_getfirstidx(smb_t* smb, idxrec_t *idx); -SMBEXPORT int SMBCALL smb_getlastidx(smb_t* smb, idxrec_t *idx); -SMBEXPORT ulong SMBCALL smb_getmsghdrlen(smbmsg_t* msg); -SMBEXPORT ulong SMBCALL smb_getmsgdatlen(smbmsg_t* msg); -SMBEXPORT int SMBCALL smb_lockmsghdr(smb_t* smb, smbmsg_t* msg); -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_append(smbmsg_t* msg, ushort type, size_t length, void* 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); -SMBEXPORT char* SMBCALL smb_dfieldtype(ushort type); -SMBEXPORT int SMBCALL smb_addmsghdr(smb_t* smb, smbmsg_t* msg,int storage); -SMBEXPORT int SMBCALL smb_putmsg(smb_t* smb, smbmsg_t* msg); -SMBEXPORT int SMBCALL smb_putmsgidx(smb_t* smb, smbmsg_t* msg); -SMBEXPORT int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg); -SMBEXPORT void SMBCALL smb_freemsgmem(smbmsg_t* msg); -SMBEXPORT void SMBCALL smb_freemsghdrmem(smbmsg_t* msg); -SMBEXPORT ulong SMBCALL smb_hdrblocks(ulong length); -SMBEXPORT ulong SMBCALL smb_datblocks(ulong length); -SMBEXPORT long SMBCALL smb_allochdr(smb_t* smb, ulong length); -SMBEXPORT long SMBCALL smb_fallochdr(smb_t* smb, ulong length); -SMBEXPORT long SMBCALL smb_hallochdr(smb_t* smb); -SMBEXPORT long SMBCALL smb_allocdat(smb_t* smb, ulong length, ushort refs); -SMBEXPORT long SMBCALL smb_fallocdat(smb_t* smb, ulong length, ushort refs); -SMBEXPORT long SMBCALL smb_hallocdat(smb_t* smb); -SMBEXPORT int SMBCALL smb_incmsg_dfields(smb_t* smb, smbmsg_t* msg, ushort refs); -SMBEXPORT int SMBCALL smb_incmsgdat(smb_t* smb, ulong offset, ulong length, ushort refs); -SMBEXPORT int SMBCALL smb_freemsg(smb_t* smb, smbmsg_t* msg); -SMBEXPORT int SMBCALL smb_freemsg_dfields(smb_t* smb, smbmsg_t* msg, ushort refs); -SMBEXPORT int SMBCALL smb_freemsgdat(smb_t* smb, ulong offset, ulong length, ushort refs); -SMBEXPORT int SMBCALL smb_freemsghdr(smb_t* smb, ulong offset, ulong length); -SMBEXPORT void SMBCALL smb_freemsgtxt(char* buf); -SMBEXPORT int SMBCALL smb_copymsgmem(smb_t* smb, smbmsg_t* destmsg, smbmsg_t* srcmsg); -SMBEXPORT char* SMBCALL smb_getmsgtxt(smb_t* smb, smbmsg_t* msg, ulong mode); -SMBEXPORT int SMBCALL smb_tzutc(short timezone); +SMBEXPORT int SMBCALL smb_ver(void); +SMBEXPORT char* SMBCALL smb_lib_ver(void); +SMBEXPORT int SMBCALL smb_open(smb_t* smb); +SMBEXPORT void SMBCALL smb_close(smb_t* smb); +SMBEXPORT int SMBCALL smb_open_da(smb_t* smb); +SMBEXPORT void SMBCALL smb_close_da(smb_t* smb); +SMBEXPORT int SMBCALL smb_open_ha(smb_t* smb); +SMBEXPORT void SMBCALL smb_close_ha(smb_t* smb); +SMBEXPORT int SMBCALL smb_create(smb_t* smb); +SMBEXPORT int SMBCALL smb_stack(smb_t* smb, int op); +SMBEXPORT int SMBCALL smb_trunchdr(smb_t* smb); +SMBEXPORT int SMBCALL smb_lock(smb_t* smb); +SMBEXPORT int SMBCALL smb_unlock(smb_t* smb); +SMBEXPORT int SMBCALL smb_islocked(smb_t* smb); +SMBEXPORT int SMBCALL smb_locksmbhdr(smb_t* smb); +SMBEXPORT int SMBCALL smb_getstatus(smb_t* smb); +SMBEXPORT int SMBCALL smb_putstatus(smb_t* smb); +SMBEXPORT int SMBCALL smb_unlocksmbhdr(smb_t* smb); +SMBEXPORT int SMBCALL smb_getmsgidx(smb_t* smb, smbmsg_t* msg); +SMBEXPORT int SMBCALL smb_getfirstidx(smb_t* smb, idxrec_t *idx); +SMBEXPORT int SMBCALL smb_getlastidx(smb_t* smb, idxrec_t *idx); +SMBEXPORT ulong SMBCALL smb_getmsghdrlen(smbmsg_t* msg); +SMBEXPORT ulong SMBCALL smb_getmsgdatlen(smbmsg_t* msg); +SMBEXPORT int SMBCALL smb_lockmsghdr(smb_t* smb, smbmsg_t* msg); +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_append(smbmsg_t* msg, ushort type, size_t length, void* 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); +SMBEXPORT ushort SMBCALL smb_hfieldtypelookup(const char*); +SMBEXPORT char* SMBCALL smb_dfieldtype(ushort type); +SMBEXPORT int SMBCALL smb_addmsghdr(smb_t* smb, smbmsg_t* msg,int storage); +SMBEXPORT int SMBCALL smb_putmsg(smb_t* smb, smbmsg_t* msg); +SMBEXPORT int SMBCALL smb_putmsgidx(smb_t* smb, smbmsg_t* msg); +SMBEXPORT int SMBCALL smb_putmsghdr(smb_t* smb, smbmsg_t* msg); +SMBEXPORT void SMBCALL smb_freemsgmem(smbmsg_t* msg); +SMBEXPORT void SMBCALL smb_freemsghdrmem(smbmsg_t* msg); +SMBEXPORT ulong SMBCALL smb_hdrblocks(ulong length); +SMBEXPORT ulong SMBCALL smb_datblocks(ulong length); +SMBEXPORT long SMBCALL smb_allochdr(smb_t* smb, ulong length); +SMBEXPORT long SMBCALL smb_fallochdr(smb_t* smb, ulong length); +SMBEXPORT long SMBCALL smb_hallochdr(smb_t* smb); +SMBEXPORT long SMBCALL smb_allocdat(smb_t* smb, ulong length, ushort refs); +SMBEXPORT long SMBCALL smb_fallocdat(smb_t* smb, ulong length, ushort refs); +SMBEXPORT long SMBCALL smb_hallocdat(smb_t* smb); +SMBEXPORT int SMBCALL smb_incmsg_dfields(smb_t* smb, smbmsg_t* msg, ushort refs); +SMBEXPORT int SMBCALL smb_incmsgdat(smb_t* smb, ulong offset, ulong length, ushort refs); +SMBEXPORT int SMBCALL smb_freemsg(smb_t* smb, smbmsg_t* msg); +SMBEXPORT int SMBCALL smb_freemsg_dfields(smb_t* smb, smbmsg_t* msg, ushort refs); +SMBEXPORT int SMBCALL smb_freemsgdat(smb_t* smb, ulong offset, ulong length, ushort refs); +SMBEXPORT int SMBCALL smb_freemsghdr(smb_t* smb, ulong offset, ulong length); +SMBEXPORT void SMBCALL smb_freemsgtxt(char* buf); +SMBEXPORT int SMBCALL smb_copymsgmem(smb_t* smb, smbmsg_t* destmsg, smbmsg_t* srcmsg); +SMBEXPORT char* SMBCALL smb_getmsgtxt(smb_t* smb, smbmsg_t* msg, ulong mode); +SMBEXPORT int SMBCALL smb_tzutc(short timezone); /* FILE pointer I/O functions */ -SMBEXPORT int SMBCALL smb_feof(FILE* fp); -SMBEXPORT int SMBCALL smb_ferror(FILE* fp); -SMBEXPORT int SMBCALL smb_fflush(FILE* fp); -SMBEXPORT int SMBCALL smb_fgetc(FILE* fp); -SMBEXPORT int SMBCALL smb_fputc(int ch, FILE* fp); -SMBEXPORT int SMBCALL smb_fseek(FILE* fp, long offset, int whence); -SMBEXPORT long SMBCALL smb_ftell(FILE* fp); -SMBEXPORT long SMBCALL smb_fread(void HUGE16* buf, long bytes, FILE* fp); -SMBEXPORT long SMBCALL smb_fwrite(void HUGE16* buf, long bytes, FILE* fp); -SMBEXPORT long SMBCALL smb_fgetlength(FILE* fp); -SMBEXPORT int SMBCALL smb_fsetlength(FILE* fp, long length); -SMBEXPORT void SMBCALL smb_rewind(FILE* fp); -SMBEXPORT void SMBCALL smb_clearerr(FILE* fp); - +SMBEXPORT int SMBCALL smb_feof(FILE* fp); +SMBEXPORT int SMBCALL smb_ferror(FILE* fp); +SMBEXPORT int SMBCALL smb_fflush(FILE* fp); +SMBEXPORT int SMBCALL smb_fgetc(FILE* fp); +SMBEXPORT int SMBCALL smb_fputc(int ch, FILE* fp); +SMBEXPORT int SMBCALL smb_fseek(FILE* fp, long offset, int whence); +SMBEXPORT long SMBCALL smb_ftell(FILE* fp); +SMBEXPORT long SMBCALL smb_fread(void HUGE16* buf, long bytes, FILE* fp); +SMBEXPORT long SMBCALL smb_fwrite(void HUGE16* buf, long bytes, FILE* fp); +SMBEXPORT long SMBCALL smb_fgetlength(FILE* fp); +SMBEXPORT int SMBCALL smb_fsetlength(FILE* fp, long length); +SMBEXPORT void SMBCALL smb_rewind(FILE* fp); +SMBEXPORT void SMBCALL smb_clearerr(FILE* fp); + #ifdef __cplusplus } #endif