diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp index 9b8c6eecdf397b77b21699729fb415e3e9acc6cd..09ffa5aa9bbb7fb82390000461111c9c8bc1a933 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++;