diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index 2432862919e2d32fd14ac26b69843636d6673103..df09298060284d7c3520bd396730f89b4a8390e4 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -781,6 +781,7 @@ extern "C" { DLLEXPORT size_t DLLCALL strip_invalid_attr(char *str); DLLEXPORT ushort DLLCALL subject_crc(char *subj); DLLEXPORT char * DLLCALL ftn_msgid(sub_t* sub, smbmsg_t* msg); + DLLEXPORT char * DLLCALL gen_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg); /* date_str.c */ DLLEXPORT char * DLLCALL zonestr(short zone); diff --git a/src/sbbs3/str_util.c b/src/sbbs3/str_util.c index 799a561f858bb16b9260ff642b46488a6cfcd176..ff2b3e9a1ae448979fa9b2863a082c617d94d53f 100644 --- a/src/sbbs3/str_util.c +++ b/src/sbbs3/str_util.c @@ -336,7 +336,7 @@ static ulong msgid_serialno(smbmsg_t* msg) } /****************************************************************************/ -/* Returns a FidoNet FTS-9 compliant message-ID */ +/* Returns a FidoNet (FTS-9) message-ID */ /****************************************************************************/ char* DLLCALL ftn_msgid(sub_t *sub, smbmsg_t* msg) { @@ -354,6 +354,30 @@ char* DLLCALL ftn_msgid(sub_t *sub, smbmsg_t* msg) return(msgid); } +/****************************************************************************/ +/* Return a general purpose (RFC-822) message-ID */ +/****************************************************************************/ +char* DLLCALL gen_msgid(scfg_t* cfg, uint subnum, smbmsg_t* msg) +{ + static char msgid[256]; + + if(subnum>=cfg->total_subs) + snprintf(msgid,sizeof(msgid) + ,"<%08lX.%lu@%s>" + ,msg->idx.time + ,msg->idx.number + ,cfg->sys_inetaddr); + else + snprintf(msgid,sizeof(msgid) + ,"<%08lX.%lu.%s@%s>" + ,msg->idx.time + ,msg->idx.number + ,cfg->sub[subnum]->code + ,cfg->sys_inetaddr); + + return(msgid); +} + /****************************************************************************/ /* Returns string for 2 digit hex+ numbers up to 575 */ /****************************************************************************/