From 79bdcece37886c34007870e54901b1eccd06ceab Mon Sep 17 00:00:00 2001 From: "Rob Swindell (on Windows 11)" <rob@synchro.net> Date: Fri, 25 Apr 2025 17:29:43 -0700 Subject: [PATCH] When listing mail messages with no "to" field, display SMTP forward path ... if there is one. --- src/sbbs3/readmail.cpp | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp index 9b8c6eecdf..09ffa5aa9b 100644 --- a/src/sbbs3/readmail.cpp +++ b/src/sbbs3/readmail.cpp @@ -57,6 +57,15 @@ static uint count_msgs(mail_t* mail, uint total) return count; } +static const char* msg_to(smbmsg_t* msg) +{ + if(msg->to != nullptr && *msg->to != '\0') + return msg->to; + if(msg->forward_path != nullptr) + return msg->forward_path; + return ""; +} + /****************************************************************************/ /* Reads mail waiting for usernumber. */ /****************************************************************************/ @@ -154,9 +163,7 @@ int sbbs_t::readmail(uint usernumber, int which, int lm_mode) smb_unlockmsghdr(&smb, &msg); bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailWaitingLstFmt), smb.curmsg + 1 - , which == MAIL_SENT ? msg.to - : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP ? text[Anonymous] - : msg.from + , which == MAIL_SENT ? msg_to(&msg) : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP ? text[Anonymous] : msg.from , mail_listing_flag(&msg) , msg.subj); smb_freemsgmem(&msg); @@ -528,15 +535,13 @@ int sbbs_t::readmail(uint usernumber, int which, int lm_mode) if (which == MAIL_ALL) bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailOnSystemLstFmt) - , u + 1, msg.from, msg.to + , u + 1, msg.from, msg_to(&msg) , mail_listing_flag(&msg) , msg.subj); else bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailWaitingLstFmt), u + 1 - , which == MAIL_SENT ? msg.to - : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP - ? text[Anonymous] : msg.from + , which == MAIL_SENT ? msg_to(&msg) : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP ? text[Anonymous] : msg.from , mail_listing_flag(&msg) , msg.subj); smb_freemsgmem(&msg); @@ -747,15 +752,13 @@ int sbbs_t::readmail(uint usernumber, int which, int lm_mode) if (which == MAIL_ALL) bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailOnSystemLstFmt) - , u + 1, msg.from, msg.to + , u + 1, msg.from, msg_to(&msg) , mail_listing_flag(&msg) , msg.subj); else bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailWaitingLstFmt), u + 1 - , which == MAIL_SENT ? msg.to - : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP - ? text[Anonymous] : msg.from + , which == MAIL_SENT ? msg_to(&msg) : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP ? text[Anonymous] : msg.from , mail_listing_flag(&msg) , msg.subj); smb_freemsgmem(&msg); @@ -919,15 +922,13 @@ int sbbs_t::searchmail(mail_t *mail, int start, int msgs, int which, const char if (which == MAIL_ALL) bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailOnSystemLstFmt) - , l + 1, msg.from, msg.to + , l + 1, msg.from, msg_to(&msg) , mail_listing_flag(&msg) , msg.subj); else bprintf(P_TRUNCATE | (msg.hdr.auxattr & MSG_HFIELDS_UTF8) , msghdr_text(&msg, MailWaitingLstFmt), l + 1 - , which == MAIL_SENT ? msg.to - : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP - ? text[Anonymous] : msg.from + , which == MAIL_SENT ? msg_to(&msg) : (msg.hdr.attr & MSG_ANONYMOUS) && !SYSOP ? text[Anonymous] : msg.from , mail_listing_flag(&msg) , msg.subj); found++; -- GitLab