From a7cd90d429600ceb50abfae0307397fedb8ad2cc Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Windows 11)" <rob@synchro.net>
Date: Mon, 4 Mar 2024 18:22:21 -0800
Subject: [PATCH] Combine First / Last Node settings on a single option:
 Serving Nodes

And make the PETSCII ports more aligned with the other protocol ports
visually. If set to 0, say "<disabled>".
---
 src/sbbs3/scfg/scfgsrvr.c | 55 ++++++++++++++++++++-------------------
 1 file changed, 28 insertions(+), 27 deletions(-)

diff --git a/src/sbbs3/scfg/scfgsrvr.c b/src/sbbs3/scfg/scfgsrvr.c
index c5dfca2e17..7bf526ec24 100644
--- a/src/sbbs3/scfg/scfgsrvr.c
+++ b/src/sbbs3/scfg/scfgsrvr.c
@@ -538,17 +538,19 @@ static void termsrvr_cfg(void)
 		int i = 0;
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Enabled", enabled ? "Yes" : "No");
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Log Level", iniLogLevelStringList()[startup.log_level]);
-		snprintf(opt[i++], MAX_OPLN, "%-30s%u", "First Node", startup.first_node);
-		snprintf(opt[i++], MAX_OPLN, "%-30s%u", "Last Node", startup.last_node);
+		snprintf(str, sizeof str, "%u-%u", startup.first_node, startup.last_node);
+		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Serving Nodes", str);
 		snprintf(str, sizeof str, "Port %u", startup.ssh_port);
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "SSH Support...", startup.options & BBS_OPT_ALLOW_SSH ? str : strDisabled);
 		snprintf(str, sizeof str, "Port %u", startup.telnet_port);
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Telnet Support...", startup.options & BBS_OPT_NO_TELNET ? strDisabled : str);
 		snprintf(str, sizeof str, "Port %u", startup.rlogin_port);
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "RLogin Support...", startup.options & BBS_OPT_ALLOW_RLOGIN ? str : strDisabled);
+		snprintf(str, sizeof str, "Port %u", startup.pet40_port);
+		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "40 Column PETSCII Support",startup.pet40_port ? str : strDisabled );
+		snprintf(str, sizeof str, "Port %u", startup.pet80_port);
+		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "80 Column PETSCII Support", startup.pet80_port  ? str : strDisabled);
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "DOS Program Support", startup.options & BBS_OPT_NO_DOS ? "No" : "Yes");
-		snprintf(opt[i++], MAX_OPLN, "%-30s%u", "40 Column PETSCII Port", startup.pet40_port);
-		snprintf(opt[i++], MAX_OPLN, "%-30s%u", "80 Column PETSCII Port", startup.pet80_port);
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Max Concurrent Connections", maximum(startup.max_concurrent_connections));
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Max Login Inactivity", vduration(startup.max_login_inactivity));
 		snprintf(opt[i++], MAX_OPLN, "%-30s%s", "Max New User Inactivity", vduration(startup.max_newuser_inactivity));
@@ -583,79 +585,78 @@ static void termsrvr_cfg(void)
 				break;
 			case 2:
 				SAFEPRINTF(str, "%u", startup.first_node);
-				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "First Node Available For Terminal Logins", str, 3, K_NUMBER|K_EDIT) > 0)
-					startup.first_node = atoi(str);
-				break;
-			case 3:
+				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "First Node Available For Terminal Logins", str, 3, K_NUMBER|K_EDIT) < 1)
+					break;
+				startup.first_node = atoi(str);
 				SAFEPRINTF(str, "%u", startup.last_node);
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Last Node Available For Terminal Logins", str, 3, K_NUMBER|K_EDIT) > 0)
 					startup.last_node = atoi(str);
 				break;
-			case 4:
+			case 3:
 				ssh_srvr_cfg(&startup);
 				break;
-			case 5:
+			case 4:
 				telnet_srvr_cfg(&startup);
 				break;
-			case 6:
+			case 5:
 				rlogin_srvr_cfg(&startup);
 				break;
-			case 7:
-				startup.options ^= BBS_OPT_NO_DOS;
-				break;
-			case 8:
+			case 6:
 				SAFEPRINTF(str, "%u", startup.pet40_port);
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "40 Column CBM/PETSCII TCP Port", str, 5, K_NUMBER|K_EDIT) > 0)
 					startup.pet40_port = atoi(str);
 				break;
-			case 9:
+			case 7:
 				SAFEPRINTF(str, "%u", startup.pet80_port);
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "80 Column CBM/PETSCII TCP Port", str, 5, K_NUMBER|K_EDIT) > 0)
 					startup.pet80_port = atoi(str);
 				break;
-			case 10:
+			case 8:
+				startup.options ^= BBS_OPT_NO_DOS;
+				break;
+			case 9:
 				SAFECOPY(str, maximum(startup.max_concurrent_connections));
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Maximum Concurrent (Unauthenticated) Connections", str, 10, K_EDIT) > 0)
 					startup.max_concurrent_connections = atoi(str);
 				break;
-			case 11:
+			case 10:
 				SAFECOPY(str, duration(startup.max_login_inactivity, false));
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Maximum Socket Inactivity at Login", str, 10, K_EDIT) > 0)
 					startup.max_login_inactivity = (uint16_t)parse_duration(str);
 				break;
-			case 12:
+			case 11:
 				SAFECOPY(str, duration(startup.max_newuser_inactivity, false));
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Maximum Socket Inactivity at New User Registration", str, 10, K_EDIT) > 0)
 					startup.max_newuser_inactivity = (uint16_t)parse_duration(str);
 				break;
-			case 13:
+			case 12:
 				SAFECOPY(str, duration(startup.max_session_inactivity, false));
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Maximum Socket Inactivity during User Session", str, 10, K_EDIT) > 0)
 					startup.max_session_inactivity = (uint16_t)parse_duration(str);
 				break;
-			case 14:
+			case 13:
 				SAFEPRINTF(str, "%u", startup.outbuf_drain_timeout);
 				if(uifc.input(WIN_MID|WIN_SAV, 0, 0, "Output Buffer Drain Timeout (milliseconds)", str, 5, K_NUMBER|K_EDIT) > 0)
 					startup.outbuf_drain_timeout = atoi(str);
 				break;
-			case 15:
+			case 14:
 				startup.options ^= BBS_OPT_NO_EVENTS;
 				break;
-			case 16:
+			case 15:
 				if(startup.options & BBS_OPT_NO_EVENTS)
 					break;
 				startup.options ^= BBS_OPT_NO_QWK_EVENTS;
 				break;
-			case 17:
+			case 16:
 				startup.options ^= BBS_OPT_NO_HOST_LOOKUP;
 				break;
-			case 18:
+			case 17:
 				getar("Terminal Server Login", startup.login_ars);
 				break;
-			case 19:
+			case 18:
 				js_startup_cfg(&startup.js);
 				break;
-			case 20:
+			case 19:
 				login_attempt_cfg(&startup.login_attempt);
 				break;
 			default:
-- 
GitLab