From 1dca2b16e7a949cfecd0d358eb464e592f92cb3e Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 1 Nov 2002 09:43:18 +0000 Subject: [PATCH] Added support for FidoNet TID (tosser ID) control lines/header fields. --- src/sbbs3/js_msgbase.c | 12 ++++++++++++ src/sbbs3/sbbsecho.c | 15 +++++++++++++-- src/smblib/smbdefs.h | 2 ++ src/smblib/smblib.c | 4 ++++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 39980dc1c8..5974abee65 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -335,6 +335,14 @@ static BOOL parse_header_object(JSContext* cx, private_t* p, JSObject* hdr, smbm smb_hfield(msg, FIDOPID, (ushort)strlen(cp), cp); } + if(JS_GetProperty(cx, hdr, "ftn_tid", &val) && val!=JSVAL_VOID) { + if((js_str=JS_ValueToString(cx,val))==NULL) + return(FALSE); + if((cp=JS_GetStringBytes(js_str))==NULL) + return(FALSE); + smb_hfield(msg, FIDOTID, (ushort)strlen(cp), cp); + } + if(JS_GetProperty(cx, hdr, "date", &val) && val!=JSVAL_VOID) { if((js_str=JS_ValueToString(cx,val))==NULL) return(FALSE); @@ -568,6 +576,10 @@ js_get_msg_header(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * JS_DefineProperty(cx, hdrobj, "ftn_pid" ,STRING_TO_JSVAL(JS_NewStringCopyZ(cx,msg.ftn_pid)) ,NULL,NULL,JSPROP_READONLY|JSPROP_ENUMERATE); + if(msg.ftn_tid!=NULL) + JS_DefineProperty(cx, hdrobj, "ftn_tid" + ,STRING_TO_JSVAL(JS_NewStringCopyZ(cx,msg.ftn_pid)) + ,NULL,NULL,JSPROP_READONLY|JSPROP_ENUMERATE); if(msg.ftn_area!=NULL) JS_DefineProperty(cx, hdrobj, "ftn_area" ,STRING_TO_JSVAL(JS_NewStringCopyZ(cx,msg.ftn_area)) diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 6cef322e22..717ada8677 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -2420,6 +2420,15 @@ int fmsgtosmsg(uchar HUGE16 *fbuf, fmsghdr_t fmsghdr, uint user, uint subnum) if(m>l) smb_hfield(&msg,FIDOPID,(ushort)(m-l),fbuf+l); } + else if(!strncmp((char *)fbuf+l+1,"TID:",4)) { + l+=5; + while(l<length && fbuf[l]<=SP) l++; + m=l; + while(m<length && fbuf[m]!=CR) m++; + while(m && fbuf[m-1]<=SP) m--; + if(m>l) + smb_hfield(&msg,FIDOTID,(ushort)(m-l),fbuf+l); } + else if(!strncmp((char *)fbuf+l+1,"TZUTC:",6)) { /* FSP-1001 */ l+=7; while(l<length && fbuf[l]<=SP) l++; @@ -3761,8 +3770,10 @@ void export_echomail(char *sub_code,faddr_t addr) } if(msg.ftn_pid!=NULL) /* use original PID */ f+=sprintf(fmsgbuf+f,"\1PID: %.256s\r", msg.ftn_pid); - else /* generate PID */ - f+=sprintf(fmsgbuf+f,"\1PID: SBBSecho v%s-%s r%s %s %s\r" + if(msg.ftn_tid!=NULL) /* use original TID */ + f+=sprintf(fmsgbuf+f,"\1TID: %.256s\r", msg.ftn_tid); + else /* generate TID */ + f+=sprintf(fmsgbuf+f,"\1TID: SBBSecho v%s-%s r%s %s %s\r" ,SBBSECHO_VER,PLATFORM_DESC,revision,__DATE__,compiler); /* Unknown kludge lines are added here */ diff --git a/src/smblib/smbdefs.h b/src/smblib/smbdefs.h index 6b102a3b96..87f07e8c4c 100644 --- a/src/smblib/smbdefs.h +++ b/src/smblib/smbdefs.h @@ -265,6 +265,7 @@ #define FIDOREPLYID 0xa5 #define FIDOPID 0xa6 #define FIDOFLAGS 0xa7 +#define FIDOTID 0xa8 #define RFC822HEADER 0xb0 #define RFC822MSGID 0xb1 @@ -518,6 +519,7 @@ typedef struct { // Message *path, // USENET Path *newsgroups, // USENET Newsgroups *ftn_pid, // FTN PID + *ftn_tid, // FTN TID *ftn_area, // FTN AREA *ftn_flags, // FTN FLAGS *ftn_msgid, // FTN MSGID diff --git a/src/smblib/smblib.c b/src/smblib/smblib.c index d2dcdf9615..3a6f16bbb6 100644 --- a/src/smblib/smblib.c +++ b/src/smblib/smblib.c @@ -845,6 +845,9 @@ int SMBCALL smb_getmsghdr(smb_t* smb, smbmsg_t* msg) case FIDOPID: msg->ftn_pid=(char*)msg->hfield_dat[i]; break; + case FIDOTID: + msg->ftn_tid=(char*)msg->hfield_dat[i]; + break; case FIDOFLAGS: msg->ftn_flags=(char*)msg->hfield_dat[i]; break; @@ -1833,6 +1836,7 @@ char* SMBCALL smb_hfieldtype(ushort type) case FIDOREPLYID: return("FIDOREPLYID"); case FIDOPID: return("FIDOPID"); case FIDOFLAGS: return("FIDOFLAGS"); + case FIDOTID: return("FIDOTID"); case RFC822HEADER: return("RFC822HEADER"); case RFC822MSGID: return("RFC822MSGID"); -- GitLab