From f68a24d61b8126de4b653bb6327d042aeac1b51b Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Debian Linux)" <rob@synchro.net>
Date: Tue, 20 Feb 2024 23:54:56 -0800
Subject: [PATCH] Allow UTF-8 sequences in message subjects (passing K_UTF8 to
 getstr)

This was the behavior for all string input in SBBS until recently
(Commit 5dec1519a290b08b), with this change, an exception is being
made for message subjects, but the vast majority of other string
input is still limited to single-byte (i.e. US-ASCII or CP437)
characters.

This should fix issue #720
---
 src/sbbs3/writemsg.cpp | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp
index 5ec6f86056..3eff43dce6 100644
--- a/src/sbbs3/writemsg.cpp
+++ b/src/sbbs3/writemsg.cpp
@@ -511,7 +511,7 @@ bool sbbs_t::writemsg(const char *fname, const char *top, char *subj, int mode,
 			max_title_len = LEN_TITLE;
 		if(draft_restored)
 			user_get_property(&cfg, useron.number, draft_desc, "subject", subj, max_title_len);
-		if(!getstr(subj,max_title_len,mode&WM_FILE ? K_LINE|K_TRIM : K_LINE|K_EDIT|K_AUTODEL|K_TRIM)
+		if(!getstr(subj,max_title_len,mode&WM_FILE ? K_LINE|K_TRIM : K_LINE|K_EDIT|K_AUTODEL|K_TRIM|K_UTF8)
 			&& useron_level && useron.logons) {
 			free(buf);
 			return(false);
@@ -1158,7 +1158,7 @@ uint sbbs_t::msgeditor(char *buf, const char *top, char *title, uint maxlines, u
 			else if(!stricmp(strin,"/T")) { /* Edit title/subject */
 				if(title != nulstr) { // hack
 					bputs(text[SubjectPrompt]);
-					getstr(title,LEN_TITLE,K_LINE|K_EDIT|K_AUTODEL|K_TRIM);
+					getstr(title,LEN_TITLE,K_LINE|K_EDIT|K_AUTODEL|K_TRIM|K_UTF8);
 					sync();
 					CRLF;
 				}
@@ -1449,7 +1449,7 @@ bool sbbs_t::forwardmsg(smb_t* smb, smbmsg_t* orgmsg, const char* to, const char
 		else {
 			SAFEPRINTF(subj, "Fwd: %s", orgmsg->subj);
 			bputs(text[SubjectPrompt]);
-			if(!getstr(subj, sizeof(subj) - 1, K_LINE | K_EDIT | K_AUTODEL | K_TRIM))
+			if(!getstr(subj, sizeof(subj) - 1, K_LINE | K_EDIT | K_AUTODEL | K_TRIM | K_UTF8))
 				return false;
 		}
 	}
-- 
GitLab