From c92c3d7581eebd0b4c6c87d00cba47a9476f29a2 Mon Sep 17 00:00:00 2001
From: Rob Swindell <rob@synchro.net>
Date: Wed, 2 Mar 2022 18:41:24 -0800
Subject: [PATCH] Show auto-generated newsgroup name and Fido area-tags

Also reversed the order of newsgroup name and area-tag options for a sub-board.

Updated help text too to specify that sub's area-tag can be derived from newsgroup name, if one is specified.
---
 src/sbbs3/scfg/scfgsub.c  | 41 +++++++++++++++++++++++++--------------
 src/sbbs3/scfg/scfgxfr2.c |  7 ++++++-
 2 files changed, 32 insertions(+), 16 deletions(-)

diff --git a/src/sbbs3/scfg/scfgsub.c b/src/sbbs3/scfg/scfgsub.c
index 6adee146fe..9ebc707a74 100644
--- a/src/sbbs3/scfg/scfgsub.c
+++ b/src/sbbs3/scfg/scfgsub.c
@@ -327,13 +327,23 @@ void sub_cfg(uint grpnum)
 		done=0;
 		while(!done) {
 			n=0;
+			char area_tag[sizeof(cfg.sub[i]->area_tag) + 2];
+			if(cfg.sub[i]->area_tag[0])
+				SAFECOPY(area_tag, cfg.sub[i]->area_tag);
+			else
+				SAFEPRINTF(area_tag, "[%s]", sub_area_tag(&cfg, cfg.sub[i], tmp, sizeof(tmp)));
+			char newsgroup_name[sizeof(cfg.sub[i]->newsgroup) + 2];
+			if(cfg.sub[i]->newsgroup[0])
+				SAFECOPY(newsgroup_name, cfg.sub[i]->newsgroup);
+			else
+				SAFEPRINTF(newsgroup_name, "[%s]", sub_newsgroup_name(&cfg, cfg.sub[i], tmp, sizeof(tmp)));
 			sprintf(opt[n++],"%-27.27s%s","Long Name",cfg.sub[i]->lname);
 			sprintf(opt[n++],"%-27.27s%s","Short Name",cfg.sub[i]->sname);
 			sprintf(opt[n++],"%-27.27s%s","QWK Name",cfg.sub[i]->qwkname);
 			sprintf(opt[n++],"%-27.27s%s%s","Internal Code"
 				,cfg.grp[cfg.sub[i]->grp]->code_prefix, cfg.sub[i]->code_suffix);
-			sprintf(opt[n++],"%-27.27s%s","FidoNet Area Tag", cfg.sub[i]->area_tag);
-			sprintf(opt[n++],"%-27.27s%s","Newsgroup Name",cfg.sub[i]->newsgroup);
+			sprintf(opt[n++],"%-27.27s%s","Newsgroup Name", newsgroup_name);
+			sprintf(opt[n++],"%-27.27s%s","FidoNet Area Tag", area_tag);
 			sprintf(opt[n++],"%-27.27s%s","Access Requirements"
 				,cfg.sub[i]->arstr);
 			sprintf(opt[n++],"%-27.27s%s","Reading Requirements"
@@ -425,19 +435,6 @@ void sub_cfg(uint grpnum)
 					}
 					break;
 				case 4:
-					uifc.helpbuf=
-						"`FidoNet Area Tag:`\n"
-						"\n"
-						"This field may be used to specify the FidoNet-style `Echo/Area Tag` for\n"
-						"this message area. If no tag name is configured here, a tag name will be\n"
-						"automatically generated from the Sub-board's `Short Name`.\n"
-						"\n"
-						"This tag should ~ not ~ contain spaces."
-					;
-					uifc.input(WIN_MID|WIN_SAV, 0, 17, "FidoNet Area Tag"
-						,cfg.sub[i]->area_tag, sizeof(cfg.sub[i]->area_tag)-1, K_EDIT|K_UPPER);
-					break;
-				case 5:
 					uifc.helpbuf=
 						"`Newsgroup Name:`\n"
 						"\n"
@@ -450,6 +447,20 @@ void sub_cfg(uint grpnum)
 					uifc.input(WIN_MID|WIN_SAV,0,17,""
 						,cfg.sub[i]->newsgroup,sizeof(cfg.sub[i]->newsgroup)-1,K_EDIT);
 					break;
+				case 5:
+					uifc.helpbuf=
+						"`FidoNet Area Tag:`\n"
+						"\n"
+						"This field may be used to specify the FidoNet-style `Echo/Area Tag` for\n"
+						"this message area. If no tag name is configured here, a tag name will be\n"
+						"automatically generated from the Sub-board's `Newsgroup Name` (if exists)\n"
+						"or the Sub-board's `Short Name`.\n"
+						"\n"
+						"This tag should ~ not ~ contain spaces."
+					;
+					uifc.input(WIN_MID|WIN_SAV, 0, 17, "FidoNet Area Tag"
+						,cfg.sub[i]->area_tag, sizeof(cfg.sub[i]->area_tag)-1, K_EDIT|K_UPPER);
+					break;
 				case 6:
 					sprintf(str,"%s Access",cfg.sub[i]->sname);
 					getar(str,cfg.sub[i]->arstr);
diff --git a/src/sbbs3/scfg/scfgxfr2.c b/src/sbbs3/scfg/scfgxfr2.c
index fbcd171cad..820eab3ab3 100644
--- a/src/sbbs3/scfg/scfgxfr2.c
+++ b/src/sbbs3/scfg/scfgxfr2.c
@@ -1177,11 +1177,16 @@ void dir_cfg(uint libnum)
 		done=0;
 		while(!done) {
 			n=0;
+			char area_tag[sizeof(cfg.dir[i]->area_tag) + 2];
+			if(cfg.dir[i]->area_tag[0])
+				SAFECOPY(area_tag, cfg.dir[i]->area_tag);
+			else
+				SAFEPRINTF(area_tag, "[%s]", dir_area_tag(&cfg, cfg.dir[i], tmp, sizeof(tmp)));
 			sprintf(opt[n++],"%-27.27s%s","Long Name",cfg.dir[i]->lname);
 			sprintf(opt[n++],"%-27.27s%s","Short Name",cfg.dir[i]->sname);
 			sprintf(opt[n++],"%-27.27s%s%s","Internal Code"
 				,cfg.lib[cfg.dir[i]->lib]->code_prefix, cfg.dir[i]->code_suffix);
-			sprintf(opt[n++],"%-27.27s%s","FidoNet Area Tag",cfg.dir[i]->area_tag);
+			sprintf(opt[n++],"%-27.27s%s","FidoNet Area Tag",area_tag);
 			sprintf(opt[n++],"%-27.27s%s","Access Requirements"
 				,cfg.dir[i]->arstr);
 			sprintf(opt[n++],"%-27.27s%s","Upload Requirements"
-- 
GitLab