From 86ee9c7b44d5c6dbe1d157b5ccac186b385d9ead Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on ChromeOS)" <rob@synchro.net>
Date: Sun, 26 Jan 2025 20:21:18 -0800
Subject: [PATCH] Replace SUB_HDRMOD sub_t.misc flag with bool cfg_modified

No reason waste a (stored) config/settings flag (bit) for this purpose
---
 src/sbbs3/sbbsdefs.h     |  1 -
 src/sbbs3/scfg/scfgmsg.c |  3 ++-
 src/sbbs3/scfg/scfgsub.c | 12 ++++++------
 src/sbbs3/scfgdefs.h     |  1 +
 src/sbbs3/scfgsave.c     |  4 ++--
 5 files changed, 11 insertions(+), 10 deletions(-)

diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index 9672f683a6..573732f60b 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -240,7 +240,6 @@
 #define SUB_EDIT        (1 << 28)     /* Users can edit message text after posting */
 #define SUB_EDITLAST    (1 << 29)     /* Users can edit last message only */
 #define SUB_NOUSERSIG   (1 << 30)     /* Suppress user signatures */
-#define SUB_HDRMOD      (1U << 31)    /* Modified sub-board header info (SCFG) */
 
 /* Bit values for lib[x].misc */
 #define LIB_DIRS    (1 << 0)          /* Local directory (sub-directory of lib parent) access */
diff --git a/src/sbbs3/scfg/scfgmsg.c b/src/sbbs3/scfg/scfgmsg.c
index 087f5cbb47..7b16545ffd 100644
--- a/src/sbbs3/scfg/scfgmsg.c
+++ b/src/sbbs3/scfg/scfgmsg.c
@@ -810,7 +810,7 @@ void msgs_cfg()
 									template = cfg.sub[j];
 								else if (cfg.sub[j] != template) {
 									uifc.changes = 1;
-									cfg.sub[j]->misc = template->misc | SUB_HDRMOD;
+									cfg.sub[j]->misc = template->misc;
 									cfg.sub[j]->misc &= ~SUB_TEMPLATE;
 									SAFECOPY(cfg.sub[j]->post_arstr, template->post_arstr);
 									SAFECOPY(cfg.sub[j]->read_arstr, template->read_arstr);
@@ -826,6 +826,7 @@ void msgs_cfg()
 									cfg.sub[j]->pmode   = template->pmode;
 									cfg.sub[j]->n_pmode = template->n_pmode;
 									cfg.sub[j]->faddr   = template->faddr;
+									cfg.sub[j]->cfg_modified = true;
 								}
 							}
 					}
diff --git a/src/sbbs3/scfg/scfgsub.c b/src/sbbs3/scfg/scfgsub.c
index c43295cf41..9152d66742 100644
--- a/src/sbbs3/scfg/scfgsub.c
+++ b/src/sbbs3/scfg/scfgsub.c
@@ -50,7 +50,7 @@ bool new_sub(int new_subnum, int group_num, sub_t* pasted_sub, long misc)
 				break;
 		}
 	}
-	new_subboard->misc |= SUB_HDRMOD;
+	new_subboard->cfg_modified = true;
 	if (pasted_sub != NULL) {
 		*new_subboard = *pasted_sub;
 		if (cut_qhub_sub != NULL && (*cut_qhub_sub) == NULL) {
@@ -539,7 +539,7 @@ void sub_cfg(int grpnum)
 					uifc.input(WIN_MID | WIN_SAV, 0, 17, "Maximum Number of Messages (0=Unlimited)"
 					           , str, 9, K_EDIT | K_NUMBER);
 					cfg.sub[i]->maxmsgs = atoi(str);
-					cfg.sub[i]->misc |= SUB_HDRMOD;
+					cfg.sub[i]->cfg_modified = true;
 					break;
 				case 12:
 					sprintf(str, "%u", cfg.sub[i]->maxage);
@@ -561,7 +561,7 @@ void sub_cfg(int grpnum)
 					uifc.input(WIN_MID | WIN_SAV, 0, 17, "Maximum Age of Messages (in days)"
 					           , str, 5, K_EDIT | K_NUMBER);
 					cfg.sub[i]->maxage = atoi(str);
-					cfg.sub[i]->misc |= SUB_HDRMOD;
+					cfg.sub[i]->cfg_modified = true;
 					break;
 				case 13:
 					sprintf(str, "%" PRIu32, cfg.sub[i]->maxcrcs);
@@ -582,7 +582,7 @@ void sub_cfg(int grpnum)
 					uifc.input(WIN_MID | WIN_SAV, 0, 17, "Maximum Number of CRCs"
 					           , str, 9, K_EDIT | K_NUMBER);
 					cfg.sub[i]->maxcrcs = atol(str);
-					cfg.sub[i]->misc |= SUB_HDRMOD;
+					cfg.sub[i]->cfg_modified = true;
 					break;
 				case 14:
 					while (1) {
@@ -1585,7 +1585,7 @@ void sub_cfg(int grpnum)
 									uifc.changes = TRUE;
 									cfg.sub[i]->misc |= SUB_HYPER;
 									cfg.sub[i]->misc &= ~SUB_FAST;
-									cfg.sub[i]->misc |= SUB_HDRMOD;
+									cfg.sub[i]->cfg_modified = true;
 									break;
 								}
 								if (!n)
@@ -1610,7 +1610,7 @@ void sub_cfg(int grpnum)
 								}
 
 								if (cfg.sub[i]->misc & SUB_HYPER)
-									cfg.sub[i]->misc |= SUB_HDRMOD;
+									cfg.sub[i]->cfg_modified = true;
 								if (n == 1 && !(cfg.sub[i]->misc & SUB_FAST)) {
 									uifc.changes = TRUE;
 									cfg.sub[i]->misc |= SUB_FAST;
diff --git a/src/sbbs3/scfgdefs.h b/src/sbbs3/scfgdefs.h
index d20df71015..bc7baf2880 100644
--- a/src/sbbs3/scfgdefs.h
+++ b/src/sbbs3/scfgdefs.h
@@ -57,6 +57,7 @@ typedef struct {							/* Message sub board info */
 	int32_t		pmode;						/* printfile()/putmsg() mode flags */
 	int32_t		n_pmode;					/* set of negated pmode flags */
 	faddr_t		faddr;						/* FidoNet address */
+	bool		cfg_modified;               /* Update SMB header for this sub */
 
 } sub_t;
 
diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c
index 6fb3b58ce0..d59e333c58 100644
--- a/src/sbbs3/scfgsave.c
+++ b/src/sbbs3/scfgsave.c
@@ -411,7 +411,7 @@ bool write_msgs_cfg(scfg_t* cfg)
 			iniSetString(&section, name, "read_ars", cfg->sub[i]->read_arstr, &ini_style);
 			iniSetString(&section, name, "post_ars", cfg->sub[i]->post_arstr, &ini_style);
 			iniSetString(&section, name, "operator_ars", cfg->sub[i]->op_arstr, &ini_style);
-			iniSetHexInt(&section, name, "settings", cfg->sub[i]->misc & (~SUB_HDRMOD), &ini_style);    /* Don't write mod bit */
+			iniSetHexInt(&section, name, "settings", cfg->sub[i]->misc, &ini_style);    /* Don't write mod bit */
 			iniSetString(&section, name, "qwknet_tagline", cfg->sub[i]->tagline, &ini_style);
 			iniSetString(&section, name, "fidonet_origin", cfg->sub[i]->origline, &ini_style);
 			iniSetString(&section, name, "post_sem", cfg->sub[i]->post_sem, &ini_style);
@@ -429,7 +429,7 @@ bool write_msgs_cfg(scfg_t* cfg)
 			strListMerge(&ini, section);
 			free(section);
 
-			if (all_msghdr || (cfg->sub[i]->misc & SUB_HDRMOD && !no_msghdr)) {
+			if (all_msghdr || (cfg->sub[i]->cfg_modified && !no_msghdr)) {
 				if (!cfg->sub[i]->data_dir[0])
 					SAFEPRINTF(smb.file, "%ssubs", cfg->data_dir);
 				else
-- 
GitLab