From adb05e50ffca63c403382ea8f62601ffa7186d53 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Debian Linux)" <rob@synchro.net>
Date: Fri, 27 Jan 2023 21:11:34 -0800
Subject: [PATCH] New user terminal settings weren't display/settable durin
 sign-up

The interactive prompting for terminal capabilities worked fine,
but the default configuration menu settings did not reflect the
user's previous choices and changes they made (e.g. toggle mouse
support or BS/DEL key swap) were not reflected in the menu. Once
logged in, the normal user defaults menu worked as expected. This
is all because term_supports() keyed off of SS_USERON which isn't
set during new user sign-up, so let's key off SS_USERON|SS_NEWUSER
now.
---
 src/sbbs3/con_out.cpp | 4 ++--
 src/sbbs3/newuser.cpp | 3 ++-
 2 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/sbbs3/con_out.cpp b/src/sbbs3/con_out.cpp
index 9a12afb431..81e585f88b 100644
--- a/src/sbbs3/con_out.cpp
+++ b/src/sbbs3/con_out.cpp
@@ -505,9 +505,9 @@ void sbbs_t::backspace(int count)
 /****************************************************************************/
 long sbbs_t::term_supports(long cmp_flags)
 {
-	long flags = ((sys_status&SS_USERON) && !(useron.misc&AUTOTERM)) ? useron.misc : autoterm;
+	long flags = ((sys_status&(SS_USERON|SS_NEWUSER)) && !(useron.misc&AUTOTERM)) ? useron.misc : autoterm;
 
-	if((sys_status&SS_USERON) && (useron.misc&AUTOTERM))
+	if((sys_status&(SS_USERON|SS_NEWUSER)) && (useron.misc&AUTOTERM))
 		flags |= useron.misc & (NO_EXASCII | SWAP_DELETE | COLOR | ICE_COLOR | MOUSE);
 
 	return(cmp_flags ? ((flags&cmp_flags)==cmp_flags) : (flags&TERM_FLAGS));
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index 44aeb022bc..decd830eb8 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -453,6 +453,8 @@ BOOL sbbs_t::newuser()
 		SAFEPRINTF2(str,"%suser/%4.4u.dat",cfg.data_dir,useron.number);
 		create_sif_dat(cfg.new_sif,str); 
 	}
+	sys_status|=SS_NEWUSER;
+
 	if(!(cfg.uq&UQ_NODEF))
 		maindflts(&useron);
 
@@ -492,7 +494,6 @@ BOOL sbbs_t::newuser()
 	user_event(EVENT_NEWUSER);
 	getuserdat(&cfg,&useron);	// In case event(s) modified user data
 	logline("N+","Successful new user logon");
-	sys_status|=SS_NEWUSER;
 
 	return(TRUE);
 }
-- 
GitLab