From bb5b9d8699528d8dab628af88ef124f6bac4fc7b Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on ChromeOS)" <rob@synchro.net>
Date: Sun, 5 Mar 2023 18:55:30 -0800
Subject: [PATCH] New module: msgscancfg.js to replace copy/pasta msg config
 menu in *.src

Also added 2 new menu options:
R - re-load msg scan config & pointers
W - save msg scan config & pointers

Leaving the menu file named "maincfg.msg" even though that's a pretty
badly named file - should rename that file at some point, but keep 8.3
format for DOS (e.g. TheDraw, AcidDraw) compatibility.
mscancfg.msg maybe? Ah, the fun of abbreviating things to 8 chars again.
---
 exec/default.src      | 58 ++++++-------------------------------------
 exec/major.src        | 37 +--------------------------
 exec/msgscancfg.js    | 44 ++++++++++++++++++++++++++++++++
 exec/renegade.src     | 52 +++-----------------------------------
 exec/sdos.src         | 47 ++---------------------------------
 exec/simple.src       | 35 +-------------------------
 exec/wildcat.src      | 42 +++----------------------------
 exec/wwiv.src         | 49 +++---------------------------------
 text/menu/maincfg.msg |  6 +++--
 9 files changed, 69 insertions(+), 301 deletions(-)
 create mode 100644 exec/msgscancfg.js

diff --git a/exec/default.src b/exec/default.src
index 9ec5c74d68..0f4fbf16af 100644
--- a/exec/default.src
+++ b/exec/default.src
@@ -214,7 +214,7 @@ if_true
 cmdkey A
 	auto_message
 	end_cmd
-    
+
 cmdkey /A
 	compare_ars ANSI and not GUEST
 	if_false
@@ -265,7 +265,7 @@ cmdkey I
 cmdkey J
 	msg_select_area
 	end_cmd
-    
+
 cmdkey L
     msg_list
     end_cmd
@@ -277,7 +277,7 @@ cmdkey /L
 cmdkey W
 	nodelist_users
 	end_cmd
-    
+
 cmdkey M
 	minute_bank
 	end_cmd
@@ -387,7 +387,7 @@ cmdkey /*
 	end_cmd
 
 cmdkey &
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey #
@@ -457,50 +457,6 @@ cmdkey Q
 cmd_pop
 return
 
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_user_misc UM_expert
-if_false
-	menu maincfg
-	end_if
-async
-print "\r\n\1y\1hConfig: \1n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_user_misc UM_expert
-	if_true
-		menu maincfg
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
-
 ########################### File Transfer Section #############################
 
 :file_transfers
@@ -753,11 +709,11 @@ cmdkey L
 cmdkey /L
 	nodelist_all
 	end_cmd
-    
+
 cmdkey W
 	nodelist_users
 	end_cmd
-   
+
 cmdkey N
 	print "\r\n\1c\1hNew File Scan\r\n"
 	file_new_scan
@@ -874,7 +830,7 @@ cmdkey &
                     end_if
                 crlf
 		end_cmd
-    
+
 	cmdkey E
                 crlf
 		toggle_user_misc UM_EXTDESC
diff --git a/exec/major.src b/exec/major.src
index 84b980aeb5..e00e694632 100644
--- a/exec/major.src
+++ b/exec/major.src
@@ -230,42 +230,7 @@ cmdkey Q
                 end_cmd
 
 	cmdstr C
-		cmd_home
-		menu maincfg
-		async
-		print "\r\n\x01y\x01hConfig: \x01n"
-		getcmd ?QNPIS
-		logkey
-
-		cmdkey ?
-			compare_ars expert
-			if_true
-				menu maincfg
-				end_if
-			end_cmd
-
-		cmdkey N
-			msg_new_scan_cfg
-			end_cmd
-
-		cmdkey S
-			msg_your_scan_cfg
-			end_cmd
-
-		cmdkey P
-			msg_ptrs_cfg
-			end_cmd
-
-		cmdkey I
-			msg_ptrs_reinit
-			end_cmd
-
-		cmdkey Q
-			cmd_pop
-			end_cmd
-
-		end_cmd
-        cmd_pop
+		exec_bin "msgscancfg"
         end_cmd
 
 cmdkey T
diff --git a/exec/msgscancfg.js b/exec/msgscancfg.js
new file mode 100644
index 0000000000..bcd159eebe
--- /dev/null
+++ b/exec/msgscancfg.js
@@ -0,0 +1,44 @@
+// Message Scan Configuration menu
+
+require("sbbsdefs.js", "USER_EXPERT");
+
+"use strict";
+
+const menufile = "maincfg";
+
+while(bbs.online) {
+	if(!(user.settings & USER_EXPERT))
+		bbs.menu(menufile);
+	bbs.nodesync();
+	console.print("\r\n\x01y\x01hConfig: \x01n");
+	var key = console.getkeys("?QNPISRW\r");
+	bbs.log_key(key);
+
+	switch(key) {
+		case '?':
+			if(user.settings & USER_EXPERT)
+				bbs.menu(menufile);
+			continue;
+		case 'N':
+			bbs.cfg_msg_scan(SCAN_CFG_NEW);
+			break;
+		case 'S':
+			bbs.cfg_msg_scan(SCAN_CFG_TOYOU);
+			break;
+		case 'P':
+			bbs.cfg_msg_ptrs();
+			break;
+		case 'I':
+			bbs.reinit_msg_ptrs();
+			break;
+		case 'R':
+			bbs.reload_msg_scan();
+			console.print("\r\nMessage scan configuration and pointers re-loaded.\r\n");
+			break;
+		case 'W':
+			bbs.save_msg_scan();
+			console.print("\r\nMessage scan configuration and pointers saved.\r\n");
+			break;
+	}
+	exit();
+}
diff --git a/exec/renegade.src b/exec/renegade.src
index 99cb064a3d..78e9dc2d74 100644
--- a/exec/renegade.src
+++ b/exec/renegade.src
@@ -281,7 +281,7 @@ cmdkey N
 		end_if
 	if_true
 		mail_send_netmail
-	else	
+	else
 		mail_send_netfile
 		end_if
 	end_cmd
@@ -316,50 +316,6 @@ if_true
 crlf
 end_cmd
 
-
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_ars expert
-if_false
-	menu maincfg
-	end_if
-async
-print "\r\n\x01y\x01hConfig: \x01n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_ars expert
-	if_true
-		menu maincfg
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
 ########################### File Transfer Section #############################
 
 :file_transfers
@@ -530,7 +486,7 @@ cmdkey L
 cmdkey /L
 	nodelist_all
 	end_cmd
-    
+
 cmdkey W
 	nodelist_users
 	end_cmd
@@ -748,7 +704,7 @@ cmdkey C
 cmdkey /L
 	nodelist_all
 	end_cmd
-    
+
 cmdkey W
 	nodelist_users
 	end_cmd
@@ -818,7 +774,7 @@ cmdkey Y
 	end_cmd
 
 cmdkey Z
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey #
diff --git a/exec/sdos.src b/exec/sdos.src
index 35db2e32cc..7e4bd7d319 100644
--- a/exec/sdos.src
+++ b/exec/sdos.src
@@ -468,7 +468,7 @@ if_true
 	nodelist_all
 	return
 	end_if
-    
+
 compare_word who
 if_true
 	nodelist_users
@@ -556,7 +556,7 @@ cmdstr "dir"
 	end_cmd
 
 cmdstr "config"
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdstr "send"
@@ -648,47 +648,4 @@ cmdstr "readmsgs"
 call global
 end_cmd
 
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_user_misc UM_expert
-if_false
-	menu maincfg
-	end_if
-async
-print "\r\n\x01y\x01hConfig: \x01n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_user_misc UM_expert
-	if_true
-		menu maincfg
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
 # End of SDOS.SRC
diff --git a/exec/simple.src b/exec/simple.src
index 3b97fccf4c..63d9d840ec 100644
--- a/exec/simple.src
+++ b/exec/simple.src
@@ -154,7 +154,7 @@ cmdstr R
 		end_cmd
 
 	cmdstr C
-	       call msg_cfg
+	       exec_bin "msgscancfg"
 	       end_cmd
 
       # Quit back to main menu
@@ -349,37 +349,4 @@ if_true
 	end_if
 return
 
-########################### Msg Config Section	##############################
-
-:msg_cfg
-
-menu maincfg
-async
-print "\r\n\x01y\x01hCommand: \x01n"
-getstrupr 10
-logkey
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
-
 #end of SIMPLE.SRC
diff --git a/exec/wildcat.src b/exec/wildcat.src
index 5d1479d2da..a72af51e7a 100644
--- a/exec/wildcat.src
+++ b/exec/wildcat.src
@@ -399,43 +399,7 @@ cmdkey C
         end_cmd
 
 cmdkey U
-	cmd_home
-	compare_ars expert
-	if_false
-		menu maincfg
-		end_if
-	async
-	print "\r\n\x01y\x01hConfig: \x01n"
-	getcmd ?QNPIS
-	logkey
-
-	cmdkey ?
-		compare_ars expert
-		if_true
-			menu maincfg
-			end_if
-		end_cmd
-
-	cmdkey N
-		msg_new_scan_cfg
-		end_cmd
-
-	cmdkey S
-		msg_your_scan_cfg
-		end_cmd
-
-	cmdkey P
-		msg_ptrs_cfg
-		end_cmd
-
-	cmdkey I
-		msg_ptrs_reinit
-		end_cmd
-
-	cmdkey Q
-		cmd_pop
-		end_cmd
-
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey H
@@ -531,9 +495,9 @@ cmdkey D
 	if_true
 		compare_ars "UNIX"
 		if_true
-			exec_int "%y -i"	
+			exec_int "%y -i"
 		else
-			exec_int "%y"	
+			exec_int "%y"
 			end_if
 		end_if
 	end_cmd
diff --git a/exec/wwiv.src b/exec/wwiv.src
index 9845796a08..22d1709286 100644
--- a/exec/wwiv.src
+++ b/exec/wwiv.src
@@ -170,7 +170,7 @@ cmdkey L
 cmdkey /L
 	nodelist_users
 	end_cmd
-    
+
 cmdkey W
     nodelist_all
     end_cmd
@@ -273,7 +273,7 @@ cmdkey /*
 	end_cmd
 
 cmdkey &
-	call main_cfg
+	exec_bin "msgscancfg"
 	end_cmd
 
 cmdkey #
@@ -342,49 +342,6 @@ cmdkey Q
 cmd_pop
 return
 
-########################### Main Config Section  ##############################
-
-:main_cfg
-
-compare_ars expert
-if_false
-	menu MAINCFG
-	end_if
-async
-print "\r\n\x01y\x01hConfig: \x01n"
-getcmd ?QNPIS\r
-logkey
-
-cmdkey ?
-	compare_ars expert
-	if_true
-		menu MAINCFG
-		end_if
-	goto main_cfg
-	end_cmd
-
-cmdkey N
-	msg_new_scan_cfg
-	return
-	end_cmd
-
-cmdkey S
-	msg_your_scan_cfg
-	return
-	end_cmd
-
-cmdkey P
-	msg_ptrs_cfg
-	return
-	end_cmd
-
-cmdkey I
-	msg_ptrs_reinit
-	return
-	end_cmd
-
-return
-
 ########################### File Transfer Section #############################
 
 :file_transfers
@@ -570,7 +527,7 @@ cmdkey L
 cmdkey /L
 	nodelist_users
 	end_cmd
-    
+
 cmdkey W
     nodelist_all
     end_cmd
diff --git a/text/menu/maincfg.msg b/text/menu/maincfg.msg
index 474ab204dd..e3a74006ee 100755
--- a/text/menu/maincfg.msg
+++ b/text/menu/maincfg.msg
@@ -6,7 +6,9 @@
 �W HCSY NCAreas to scan for your messagesW�B�
 � HCP NCSet new-scan pointersW�B�
 � HCI NCReinitialize new-scan pointersW�B�
+� HCR NCReload new-scan config & pointers WB�
+� HCW NCSave new-scan config & pointers   WB�
 ۲����������������������������������IJ�
-� HCQ NCQuit to Main menuW�B�
+� HCQ NCQuit to Main/Message menu         WB�
 ���������������������������������������
-Z
\ No newline at end of file
+Z
-- 
GitLab