From 5b935913c73e40f50cf76ebb9d4bb4bcb015f1a9 Mon Sep 17 00:00:00 2001 From: rswindell <> Date: Fri, 1 Nov 2002 00:05:25 +0000 Subject: [PATCH] Created ftn_msgid() function to return a FidoNet FTS-9 compliant message ID. When exporting a message that is a reply to another, but it doesn't have a FIDOREPLYID header field, the original FTN message ID is looked-up and used. --- src/sbbs3/sbbsecho.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index f9749b477f..ac9bf67cda 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -3741,13 +3741,9 @@ void export_echomail(char *sub_code,faddr_t addr) if(msg.ftn_flags!=NULL) f+=sprintf(fmsgbuf+f,"\1FLAGS %.256s\r", msg.ftn_flags); - if(msg.ftn_msgid!=NULL) /* use original MSGID */ - f+=sprintf(fmsgbuf+f,"\1MSGID: %.256s\r", msg.ftn_msgid); - else /* generate MSGID */ - f+=sprintf(fmsgbuf+f,"\1MSGID: %s %08lX\r" - ,faddrtoa(&scfg.sub[i]->faddr,NULL) - ,(msg.idx.time<<5) | (msg.idx.number&0x1f) - ); + f+=sprintf(fmsgbuf+f,"\1MSGID: %.256s\r" + ,msg.ftn_msgid!=NULL ? msg.ftn_msgid + : ftn_msgid(scfg.sub[i],&msg)); if(msg.ftn_reply!=NULL) /* use original REPLYID */ f+=sprintf(fmsgbuf+f,"\1REPLY: %.256s\r", msg.ftn_reply); @@ -3755,13 +3751,15 @@ void export_echomail(char *sub_code,faddr_t addr) memset(&orig_msg,0,sizeof(orig_msg)); orig_msg.hdr.number=msg.hdr.thread_orig; if(smb_getmsgidx(smb, &orig_msg)) - f+=sprintf(fmsgbuf+f,"\1REPLY: <%s>",smb->last_error); - else - f+=sprintf(fmsgbuf+f,"\1REPLY: <%lu.%s@%s> %08lX" - ,msg.hdr.thread_orig - ,scfg.sub[i]->code - ,faddrtoa(&scfg.sub[i]->faddr,NULL) - ,orig_msg.idx.time); + f+=sprintf(fmsgbuf+f,"\1REPLY: <%s>\r",smb->last_error); + else { + smb_lockmsghdr(&smb[cur_smb],&orig_msg); + smb_getmsghdr(&smb[cur_smb],&orig_msg); + smb_unlockmsghdr(&smb[cur_smb],&orig_msg); + f+=sprintf(fmsgbuf+f,"\1REPLY: %.256s\r" + ,orig_msg.ftn_msgid!=NULL ? orig_msg.ftn_msgid + : ftn_msgid(scfg.sub[i],&orig_msg)); + } } if(msg.ftn_pid!=NULL) /* use original PID */ f+=sprintf(fmsgbuf+f,"\1PID: %.256s\r", msg.ftn_pid); -- GitLab