From 045b1698ecea1bef0c43995eef5a5a4dfa2a59a4 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Thu, 2 Sep 2004 01:34:31 +0000 Subject: [PATCH] Replaced get_msg_by_id() and get_msg_by_ftn_id() with smb_getmsgidx/hdr_by_msgid/ftnid() for fast auto-thread linkage. --- src/sbbs3/getmsg.cpp | 32 -------------------------------- src/sbbs3/js_msgbase.c | 10 +++------- src/sbbs3/postmsg.cpp | 6 ++---- src/sbbs3/qwktomsg.cpp | 7 +++---- src/sbbs3/sbbs.h | 1 - src/sbbs3/sbbsecho.c | 35 ++--------------------------------- 6 files changed, 10 insertions(+), 81 deletions(-) diff --git a/src/sbbs3/getmsg.cpp b/src/sbbs3/getmsg.cpp index 7733a59cbc..003cc5ca0d 100644 --- a/src/sbbs3/getmsg.cpp +++ b/src/sbbs3/getmsg.cpp @@ -500,35 +500,3 @@ ulong sbbs_t::getlastmsg(uint subnum, ulong *ptr, time_t *t) return(total); } -/****************************************************************************/ -/* Retrieve a message by RFC822 message-ID */ -/****************************************************************************/ -BOOL DLLCALL get_msg_by_id(scfg_t* scfg, smb_t* smb, char* id, smbmsg_t* msg) -{ - ulong n; - int ret; - - for(n=0;n<smb->status.total_msgs;n++) { - memset(msg,0,sizeof(smbmsg_t)); - msg->offset=n; - if(smb_getmsgidx(smb, msg)!=0) - break; - - if(smb_lockmsghdr(smb,msg)!=0) - continue; - - ret=smb_getmsghdr(smb,msg); - - smb_unlockmsghdr(smb,msg); - - if(ret!=SMB_SUCCESS) - continue; - - if(strcmp(get_msgid(scfg,smb->subnum,msg),id)==0) - return(TRUE); - - smb_freemsgmem(msg); - } - - return(FALSE); -} diff --git a/src/sbbs3/js_msgbase.c b/src/sbbs3/js_msgbase.c index 9cc3c2224d..cb068914e8 100644 --- a/src/sbbs3/js_msgbase.c +++ b/src/sbbs3/js_msgbase.c @@ -465,11 +465,9 @@ BOOL msg_offset_by_id(scfg_t* scfg, smb_t* smb, char* id, ulong* offset) { smbmsg_t msg; - if(!get_msg_by_id(scfg,smb,id,&msg)) + if(smb_getmsgidx_by_msgid(smb,&msg,id)!=SMB_SUCCESS) return(FALSE); - smb_freemsgmem(&msg); - *offset = msg.offset; return(TRUE); } @@ -614,11 +612,9 @@ js_get_msg_header(JSContext *cx, JSObject *obj, uintN argc, jsval *argv, jsval * smb_unlockmsghdr(&(p->smb),&msg); break; } else if(JSVAL_IS_STRING(argv[n])) { /* Get by ID */ - if(!get_msg_by_id(scfg,&(p->smb) - ,JS_GetStringBytes(JSVAL_TO_STRING(argv[n])) - ,&msg)) + if(smb_getmsghdr_by_msgid(&(p->smb),&msg + ,JS_GetStringBytes(JSVAL_TO_STRING(argv[n])))!=SMB_SUCCESS) return(JS_TRUE); /* ID not found */ - break; } } diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp index 677ac5a238..47ca5e0501 100644 --- a/src/sbbs3/postmsg.cpp +++ b/src/sbbs3/postmsg.cpp @@ -626,10 +626,8 @@ extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, char* msg /* Look-up thread_back if Reply-ID was specified */ if(msg->hdr.thread_back==0 && msg->reply_id!=NULL) { - if(get_msg_by_id(cfg, smb, msg->reply_id, &remsg)==TRUE) { - msg->hdr.thread_back=remsg.hdr.number; /* needed for threading backward */ - smb_freemsgmem(&remsg); - } + if(smb_getmsgidx_by_msgid(smb,&remsg,msg->reply_id)==SMB_SUCCESS) + msg->hdr.thread_back=remsg.idx.number; /* needed for threading backward */ } /* Auto-thread linkage */ diff --git a/src/sbbs3/qwktomsg.cpp b/src/sbbs3/qwktomsg.cpp index 4b89b7201e..203cb72338 100644 --- a/src/sbbs3/qwktomsg.cpp +++ b/src/sbbs3/qwktomsg.cpp @@ -432,10 +432,9 @@ bool sbbs_t::qwktomsg(FILE *qwk_fp, char *hdrblk, char fromhub, uint subnum } if(msg.reply_id!=NULL - && get_msg_by_id(&cfg, &smb, msg.reply_id, &remsg)==TRUE) { - msg.hdr.thread_back=remsg.hdr.number; /* needed for threading backward */ - smb_freemsgmem(&remsg); - } + && smb_getmsgidx_by_msgid(&smb,&remsg,msg.reply_id)==SMB_SUCCESS) + msg.hdr.thread_back=remsg.idx.number; /* needed for threading backward */ + if(msg.hdr.thread_back && smb_getstatus(&smb)==SMB_SUCCESS) { diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 1414526195..288458c8dd 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -813,7 +813,6 @@ extern "C" { DLLEXPORT ushort DLLCALL subject_crc(char *subj); DLLEXPORT char * DLLCALL ftn_msgid(sub_t* sub, smbmsg_t* msg); DLLEXPORT char * DLLCALL get_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg); - DLLEXPORT BOOL DLLCALL get_msg_by_id(scfg_t* scfg, smb_t* smb, char* id, smbmsg_t* msg); DLLEXPORT char * DLLCALL ultoac(ulong l,char *str); DLLEXPORT char * DLLCALL rot13(char* str); diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 8892c52802..8014d9f0d9 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -2249,37 +2249,6 @@ char* getfmsg(FILE *stream, ulong *outlen) return(fbuf); } -/****************************************************************************/ -/* Retrieve a message by FTN message-ID */ -/* Leaves message header in locked stated! */ -/****************************************************************************/ -BOOL DLLCALL get_msg_by_ftn_id(smb_t* smb, char* id, smbmsg_t* msg) -{ - ulong n; - - for(n=0;n<smb->status.total_msgs;n++) { - memset(msg,0,sizeof(smbmsg_t)); - msg->offset=n; - if(smb_getmsgidx(smb, msg)!=0) - break; - - if(smb_lockmsghdr(smb,msg)!=0) - continue; - - /* should this be case sensitive? */ - if(smb_getmsghdr(smb,msg)==SMB_SUCCESS - && msg->ftn_msgid!=NULL - && stricmp(msg->ftn_msgid,id)==0) - return(TRUE); - - smb_unlockmsghdr(smb,msg); - - smb_freemsgmem(msg); - } - - return(FALSE); -} - #define MAX_TAILLEN 1024 /****************************************************************************/ @@ -2646,9 +2615,9 @@ int fmsgtosmsg(uchar* fbuf, fmsghdr_t fmsghdr, uint user, uint subnum) if(msg.ftn_reply!=NULL) { /* auto-thread linkage */ if(smb_getstatus(smbfile)==SMB_SUCCESS - && get_msg_by_ftn_id(smbfile, msg.ftn_reply, &remsg)==TRUE) { + && smb_getmsghdr_by_ftnid(smbfile, &remsg, msg.ftn_reply)==SMB_SUCCESS) { - msg.hdr.thread_back=remsg.hdr.number; /* needed for threading backward */ + msg.hdr.thread_back=remsg.idx.number; /* needed for threading backward */ /* Add RFC-822 Reply-ID (generate if necessary) */ smb_hfield_str(&msg,RFC822REPLYID,get_msgid(&scfg,smbfile->subnum,&remsg)); -- GitLab