From 0ce5ed8527c75f549ae1e6e4c1e4b645161f8aa1 Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows)" <rob@synchro.net>
Date: Wed, 13 Sep 2023 18:55:47 -0700
Subject: [PATCH] Add new @-code: PROTNAME for full name of default transfer
 protocol (or None)

---
 src/sbbs3/atcodes.cpp  | 3 +++
 src/sbbs3/sbbs.h       | 1 +
 src/sbbs3/str.cpp      | 9 +++++++++
 src/sbbs3/useredit.cpp | 9 +--------
 4 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/src/sbbs3/atcodes.cpp b/src/sbbs3/atcodes.cpp
index 0a0e8d5aeb..5f2f9ef9c3 100644
--- a/src/sbbs3/atcodes.cpp
+++ b/src/sbbs3/atcodes.cpp
@@ -655,6 +655,9 @@ const char* sbbs_t::atcode(char* sp, char* str, size_t maxlen, int* pmode, bool
 		safe_snprintf(str, maxlen, "%c", useron.prot);
 		return str;
 	}
+	if(strcmp(sp, "PROTNAME") == 0)
+		return protname(useron.prot);
+
 	if(strcmp(sp, "SEX") == 0) {
 		safe_snprintf(str, maxlen, "%c", useron.sex);
 		return str;
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index 6acfc4081b..41c053cc3b 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -748,6 +748,7 @@ public:
 	char	cmdstr_output[512]{};
 	char*	ultoac(uint32_t, char*, char sep=',');
 	char*	u64toac(uint64_t, char*, char sep=',');
+	const char* protname(char prot);
 
 	void	subinfo(int subnum);
 	void	dirinfo(int dirnum);
diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index a3b286d47d..ac08911d6a 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -1303,3 +1303,12 @@ char* sbbs_t::u64toac(uint64_t val, char* str, char sep)
 {
 	return ::u64toac(val, str, sep);
 }
+
+const char* sbbs_t::protname(char prot)
+{
+	for(int i=0; i < cfg.total_prots; ++i) {
+		if(prot == cfg.prot[i]->mnemonic)
+			return cfg.prot[i]->name;
+	}
+	return text[None];
+}
diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp
index 709bd16796..da042207b9 100644
--- a/src/sbbs3/useredit.cpp
+++ b/src/sbbs3/useredit.cpp
@@ -788,15 +788,8 @@ void sbbs_t::maindflts(user_t* user)
 			bprintf(text[UserDefaultsQuiet]
 				,user->misc&QUIET ? text[On] : text[Off]);
 		}
-		SAFECOPY(str, text[None]);
-		for(i=0;i<cfg.total_prots;i++) {
-			if(user->prot==cfg.prot[i]->mnemonic) {
-				SAFECOPY(str,cfg.prot[i]->name);
-				break;
-			}
-		}
 		add_hotspot('Z');
-		bprintf(text[UserDefaultsProtocol],str
+		bprintf(text[UserDefaultsProtocol], protname(user->prot)
 			,user->misc&AUTOHANG ? "(Auto-Hangup)":nulstr);
 		add_hotspot('W');
 		if(cfg.sys_misc&SM_PWEDIT && !(user->rest&FLAG('G')))
-- 
GitLab