diff --git a/src/sbbs3/addfiles.c b/src/sbbs3/addfiles.c
index 25699087db72b959188fe394da77927ba65e3721..7ba7426d042cb560d81a17d840281ae24198938b 100644
--- a/src/sbbs3/addfiles.c
+++ b/src/sbbs3/addfiles.c
@@ -519,7 +519,7 @@ int main(int argc, char **argv)
 	char error[512];
 	char str[MAX_PATH+1];
 	char tmp[MAX_PATH+1];
-	char *p;
+	const char *p;
 	char exist,listgiven=0,namegiven=0,ext[LEN_EXTDESC + 1]
 		,auto_name[MAX_PATH+1]="FILES.BBS";
 	int i,j;
diff --git a/src/sbbs3/delfiles.c b/src/sbbs3/delfiles.c
index 1b3ac87ebb03334550174833a3fd6a90df0ffd44..2d5dd54f00e01ee894f6ccf94584e3b6e0927164 100644
--- a/src/sbbs3/delfiles.c
+++ b/src/sbbs3/delfiles.c
@@ -91,7 +91,8 @@ bool delfile(const char *filename)
 
 int main(int argc, char **argv)
 {
-	char str[256],not[MAX_NOTS][LEN_EXTCODE + 1],nots=0,*p;
+	char str[256],not[MAX_NOTS][LEN_EXTCODE + 1],nots=0;
+	const char *p;
 	char fpath[MAX_PATH+1];
 	int i,j,dirnum,libnum;
 	size_t fi;
diff --git a/src/sbbs3/dupefind.c b/src/sbbs3/dupefind.c
index 405e3b1bb23dd9850f45d0761af3abc23b7e96c0..996c380d35d7baaab4e1880a74802ec5d84e516c 100644
--- a/src/sbbs3/dupefind.c
+++ b/src/sbbs3/dupefind.c
@@ -85,7 +85,8 @@ char *display_filename(scfg_t *cfg, uint dirnum, uint32_t fil_off)
 
 int main(int argc,char **argv)
 {
-	char str[256], *p;
+	char str[256];
+	const char *p;
 	uint32_t **fcrc,*foundcrc;
 	ulong total_found=0L;
 	ulong g;
diff --git a/src/sbbs3/echocfg.c b/src/sbbs3/echocfg.c
index 9f45d1c8832d0043246a807fdbbc9b3c34132398..30094773f65a83f187e58d06d4f83f7cd1c2a8bf 100644
--- a/src/sbbs3/echocfg.c
+++ b/src/sbbs3/echocfg.c
@@ -35,6 +35,7 @@
 #include "sbbsecho.h"
 #include "sockwrap.h"
 #include "str_util.h"
+#include "getctrl.h"
 
 char **opt;
 
diff --git a/src/sbbs3/gtkchat/main.c b/src/sbbs3/gtkchat/main.c
index de2484be5055031f0b21414643980a75f65e039d..61e83d64ab6f7a6e3482e9ca02c02841df2cd6ec 100644
--- a/src/sbbs3/gtkchat/main.c
+++ b/src/sbbs3/gtkchat/main.c
@@ -20,7 +20,7 @@ int
 main (int argc, char *argv[])
 {
   int		node;
-  char		*ctrl_dir;
+  const char	*ctrl_dir;
   GtkWidget *WaitWindow;
 
   setlocale(LC_ALL, "");
@@ -41,7 +41,7 @@ main (int argc, char *argv[])
   /*
    * Request a chat
    */
-  if(chat_open(node, ctrl_dir))
+  if(chat_open(node, (char*)ctrl_dir))
   	return(1);
 
   /*
diff --git a/src/sbbs3/gtkchat/objects.mk b/src/sbbs3/gtkchat/objects.mk
index a2bd02a1e22340488e87f6c880b1e7b65fddaf99..b5fcbeb5a7387ccb20d64e51d6ff4057e60fc1ab 100644
--- a/src/sbbs3/gtkchat/objects.mk
+++ b/src/sbbs3/gtkchat/objects.mk
@@ -2,6 +2,7 @@ OBJS	:=	\
 			$(MTOBJODIR)/ars$(OFILE) \
 			$(MTOBJODIR)/dat_rec$(OFILE) \
 			$(MTOBJODIR)/date_str$(OFILE) \
+			$(MTOBJODIR)/getctrl$(OFILE) \
 			$(MTOBJODIR)/load_cfg$(OFILE) \
 			$(MTOBJODIR)/readtext$(OFILE) \
 			$(MTOBJODIR)/text_defaults$(OFILE) \
@@ -9,6 +10,7 @@ OBJS	:=	\
 			$(MTOBJODIR)/scfglib1$(OFILE) \
 			$(MTOBJODIR)/scfglib2$(OFILE) \
 			$(MTOBJODIR)/userdat$(OFILE) \
+			$(MTOBJODIR)/findstr$(OFILE) \
 			$(MTOBJODIR)/getstats$(OFILE) \
 			$(MTOBJODIR)/msgdate$(OFILE) \
 			$(MTOBJODIR)/str_util$(OFILE) \
diff --git a/src/sbbs3/load_cfg.h b/src/sbbs3/load_cfg.h
index 63e256a123414de4935be92f0aded046a1be8ff5..88d4bb549bd2bc853d415caad82ee25335bb7b79 100644
--- a/src/sbbs3/load_cfg.h
+++ b/src/sbbs3/load_cfg.h
@@ -24,6 +24,7 @@
 
 #include "scfgdefs.h"	// scfg_t
 #include "smblib.h"
+#include "getctrl.h"
 #include "dllexport.h"
 
 #ifdef __cplusplus
diff --git a/src/sbbs3/makeuser.c b/src/sbbs3/makeuser.c
index fc2dd11360710925ce5c3a813e844d5e68830279..dbbe08defed1ad72f76209100e70d8e236e59cd8 100644
--- a/src/sbbs3/makeuser.c
+++ b/src/sbbs3/makeuser.c
@@ -70,7 +70,7 @@ char *usage="\nusage: makeuser [ctrl_dir] name [-param value] [...]\n"
 /*********************/
 int main(int argc, char **argv)
 {
-	char*	p;
+	const char*	p;
 	char	error[512];
 	char	revision[16];
 	int		i;
diff --git a/src/sbbs3/objects.mk b/src/sbbs3/objects.mk
index ebc35f4f43c3775842e591a0074d1f1ef39734ae..ce035bd232fba1ee01ea454303654afb6cb14ff3 100644
--- a/src/sbbs3/objects.mk
+++ b/src/sbbs3/objects.mk
@@ -180,6 +180,7 @@ SBBSECHO_OBJS = 	$(LOAD_CFG_OBJS) \
 
 ECHOCFG_OBJS = \
 			$(MTOBJODIR)/echocfg$(OFILE) \
+			$(MTOBJODIR)/getctrl$(OFILE) \
 			$(MTOBJODIR)/rechocfg$(OFILE) \
 			$(MTOBJODIR)/str_util$(OFILE) \
 			$(UIFC_OBJS) \
@@ -304,12 +305,14 @@ UPGRADE_TO_V319_OBJS  =	$(LOAD_CFG_OBJS) \
 			$(OBJODIR)/upgrade_to_v319$(OFILE)
 
 LOAD_CFG_OBJS = \
+			$(OBJODIR)/getctrl$(OFILE) \
 			$(OBJODIR)/load_cfg$(OFILE) \
 			$(OBJODIR)/readtext$(OFILE) \
 			$(OBJODIR)/text_defaults$(OFILE) \
 			$(OBJODIR)/scfglib1$(OFILE) \
 			$(OBJODIR)/scfglib2$(OFILE) \
 			$(OBJODIR)/str_util$(OFILE) \
+			$(OBJODIR)/findstr$(OFILE) \
 			$(OBJODIR)/ars$(OFILE) \
 			$(OBJODIR)/nopen$(OFILE)
 
diff --git a/src/sbbs3/sbbs_ini.c b/src/sbbs3/sbbs_ini.c
index 05060634b4fae2eeb45e1bf87bb6c5a4bd3b9dd4..3495e031066d5c17de5cb9ec394344f20f401817 100644
--- a/src/sbbs3/sbbs_ini.c
+++ b/src/sbbs3/sbbs_ini.c
@@ -72,7 +72,7 @@ static const char*	strFileIndexScript			="FileIndexScript";
 #define DEFAULT_BIND_RETRY_COUNT		2
 #define DEFAULT_BIND_RETRY_DELAY		15
 
-void sbbs_get_ini_fname(char* ini_file, char* ctrl_dir, char* pHostName)
+void sbbs_get_ini_fname(char* ini_file, const char* ctrl_dir)
 {
 	/* pHostName is no longer used since iniFileName calls gethostname() itself */
 
diff --git a/src/sbbs3/sbbs_ini.h b/src/sbbs3/sbbs_ini.h
index b6f063d9c6409d872a9c00d84aa2d5802fb17a99..2aaecba4b1e6b6af92790568f69638fd876f1e3e 100644
--- a/src/sbbs3/sbbs_ini.h
+++ b/src/sbbs3/sbbs_ini.h
@@ -1,7 +1,5 @@
 /* Synchronet initialization (.ini) file routines */
 
-/* $Id: sbbs_ini.h,v 1.13 2019/07/24 04:41:49 rswindell Exp $ */
-
 /****************************************************************************
  * @format.tab-size 4		(Plain Text/Source Code File Header)			*
  * @format.use-tabs true	(see http://www.synchro.net/ptsc_hdr.html)		*
@@ -15,21 +13,9 @@
  * See the GNU General Public License for more details: gpl.txt or			*
  * http://www.fsf.org/copyleft/gpl.html										*
  *																			*
- * Anonymous FTP access to the most recent released source is available at	*
- * ftp://vert.synchro.net, ftp://cvs.synchro.net and ftp://ftp.synchro.net	*
- *																			*
- * Anonymous CVS access to the development source and modification history	*
- * is available at cvs.synchro.net:/cvsroot/sbbs, example:					*
- * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs login			*
- *     (just hit return, no password is necessary)							*
- * cvs -d :pserver:anonymous@cvs.synchro.net:/cvsroot/sbbs checkout src		*
- *																			*
  * For Synchronet coding style and modification guidelines, see				*
  * http://www.synchro.net/source.html										*
  *																			*
- * You are encouraged to submit any modifications (preferably in Unix diff	*
- * format) via e-mail to mods@synchro.net									*
- *																			*
  * Note: If this box doesn't appear square, then you need to fix your tabs.	*
  ****************************************************************************/
 
@@ -50,8 +36,7 @@ extern "C" {
 
 void sbbs_get_ini_fname(
 	 char* ini_file
-	,char* ctrl_dir
-	,char* host_name
+	,const char* ctrl_dir
 	);
 
 void sbbs_read_ini(
diff --git a/src/sbbs3/sbbscon.c b/src/sbbs3/sbbscon.c
index 7b625dafb2edb238b410565bcc866cafa5c500f0..308fb6cfdc94f5d1257c1eb406cb61187197647e 100644
--- a/src/sbbs3/sbbscon.c
+++ b/src/sbbs3/sbbscon.c
@@ -1377,7 +1377,7 @@ int main(int argc, char** argv)
 	char	ch;
 	char*	p;
 	char*	arg;
-	char*	ctrl_dir;
+	const char*	ctrl_dir;
 	char	str[MAX_PATH+1];
     char	error[256];
 	char	host_name[128]="";
@@ -1419,7 +1419,7 @@ int main(int argc, char** argv)
 	if(!winsock_cleanup())
 		return(-1);
 
-	sbbs_get_ini_fname(ini_file, ctrl_dir, host_name);
+	sbbs_get_ini_fname(ini_file, ctrl_dir);
 	/* Initialize BBS startup structure */
     memset(&bbs_startup,0,sizeof(bbs_startup));
     bbs_startup.size=sizeof(bbs_startup);
diff --git a/src/sbbs3/scfg/objects.mk b/src/sbbs3/scfg/objects.mk
index a696612e60920156381cd8feee6dbd174305c855..93fe2bb5f91b55264ca6c1a4c74d4c370330b6ba 100644
--- a/src/sbbs3/scfg/objects.mk
+++ b/src/sbbs3/scfg/objects.mk
@@ -17,6 +17,7 @@ OBJS =	$(MTOBJODIR)/scfg$(OFILE)\
 	$(MTOBJODIR)/scfgsave$(OFILE)\
 	$(MTOBJODIR)/scfglib1$(OFILE)\
 	$(MTOBJODIR)/scfglib2$(OFILE)\
+	$(MTOBJODIR)/getctrl$(OFILE)\
 	$(MTOBJODIR)/load_cfg$(OFILE)\
 	$(MTOBJODIR)/readtext$(OFILE)\
 	$(MTOBJODIR)/text_defaults$(OFILE)\
@@ -27,4 +28,5 @@ OBJS =	$(MTOBJODIR)/scfg$(OFILE)\
 	$(MTOBJODIR)/getstats$(OFILE)\
 	$(MTOBJODIR)/msgdate$(OFILE)\
 	$(MTOBJODIR)/date_str$(OFILE)\
+	$(MTOBJODIR)/findstr$(OFILE)\
 	$(MTOBJODIR)/str_util$(OFILE)
diff --git a/src/sbbs3/smbactiv.c b/src/sbbs3/smbactiv.c
index f9c7f8b01d041345f64a2da8aca256b95bb5a174..06846bfa6402018da30d4d699b51f321e8d87f36 100644
--- a/src/sbbs3/smbactiv.c
+++ b/src/sbbs3/smbactiv.c
@@ -82,7 +82,8 @@ void bail(int code)
 
 int main(int argc, char **argv)
 {
-	char str[256],*p;
+	char str[256];
+	const char *p;
 	int i,j,file;
 	off_t length;
 	ulong max_users=0xffffffff;
diff --git a/src/sbbs3/uedit/objects.mk b/src/sbbs3/uedit/objects.mk
index a2a174569578f4242775056fbd472008e6bd83a0..5b45c1326066eaa7accd272e079a65671b9b6fd2 100644
--- a/src/sbbs3/uedit/objects.mk
+++ b/src/sbbs3/uedit/objects.mk
@@ -4,6 +4,7 @@ OBJS	=	\
 			$(MTOBJODIR)$(DIRSEP)date_str$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)getmail$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)getstats$(OFILE) \
+			$(MTOBJODIR)$(DIRSEP)getctrl$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)load_cfg$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)readtext$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)text_defaults$(OFILE) \
@@ -13,5 +14,6 @@ OBJS	=	\
 			$(MTOBJODIR)$(DIRSEP)scfglib1$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)scfglib2$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)str_util$(OFILE) \
+			$(MTOBJODIR)$(DIRSEP)findstr$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)uedit$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)userdat$(OFILE)
diff --git a/src/sbbs3/uedit/uedit.c b/src/sbbs3/uedit/uedit.c
index 12a3d0973c59dc0734e4041a5868e416eae94ad2..e524fa184b784e0a78a5b8c4642d94c9c8a61c09 100644
--- a/src/sbbs3/uedit/uedit.c
+++ b/src/sbbs3/uedit/uedit.c
@@ -1898,9 +1898,7 @@ int main(int argc, char** argv)  {
 
 	SAFECOPY(ctrl_dir, get_ctrl_dir(/* warn: */TRUE));
 
-	gethostname(str,sizeof(str)-1);
-
-	sbbs_get_ini_fname(ini_file, ctrl_dir, str);
+	sbbs_get_ini_fname(ini_file, ctrl_dir);
 
 	/* Initialize BBS startup structure */
     memset(&bbs_startup,0,sizeof(bbs_startup));
diff --git a/src/sbbs3/umonitor/objects.mk b/src/sbbs3/umonitor/objects.mk
index 38e0aabd658b5a32529cd68195e60b5baaf53f4e..3ea722420c1946d1a3304399f10e360b802c888e 100644
--- a/src/sbbs3/umonitor/objects.mk
+++ b/src/sbbs3/umonitor/objects.mk
@@ -5,6 +5,7 @@ OBJS	:=	\
 			$(MTOBJODIR)$(DIRSEP)date_str$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)getmail$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)getstats$(OFILE) \
+			$(MTOBJODIR)$(DIRSEP)getctrl$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)load_cfg$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)readtext$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)text_defaults$(OFILE) \
@@ -15,5 +16,6 @@ OBJS	:=	\
 			$(MTOBJODIR)$(DIRSEP)scfglib2$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)spyon$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)str_util$(OFILE) \
+			$(MTOBJODIR)$(DIRSEP)findstr$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)umonitor$(OFILE) \
 			$(MTOBJODIR)$(DIRSEP)userdat$(OFILE)
diff --git a/src/sbbs3/umonitor/umonitor.c b/src/sbbs3/umonitor/umonitor.c
index f63dde9bc2fc7d98db3b5a0a513433165170bfac..cade6dadaa7c538cf1629da13d13194c669eef0e 100644
--- a/src/sbbs3/umonitor/umonitor.c
+++ b/src/sbbs3/umonitor/umonitor.c
@@ -844,9 +844,7 @@ int main(int argc, char** argv)  {
 	SAFECOPY(ctrl_dir, get_ctrl_dir(/* warn: */TRUE));
 	backslash(ctrl_dir);
 
-	gethostname(str,sizeof(str)-1);
-
-	sbbs_get_ini_fname(ini_file, ctrl_dir, str);
+	sbbs_get_ini_fname(ini_file, ctrl_dir);
 
 	/* Initialize BBS startup structure */
 	memset(&bbs_startup,0,sizeof(bbs_startup));