From bf941a655a6ab857542e924e46cc316cf4108daa Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Tue, 6 Aug 2019 20:32:58 +0000
Subject: [PATCH] Fix issue reported by Mark Lewis:  scfg  validates/creates
 directories when you save the file area config but they are  missing the '/'
 between "dirs" and the internal code...

So the Transfer File Path auto-default-value logic is actually in 3 places:
- load_cfg.c prep_cfg()
- scfgsave.c write_file_cfg()
- scfgxfr2.c dir_cfg() - for display purposes only

<sigh>
---
 src/sbbs3/scfgsave.c | 22 ++++++++++------------
 1 file changed, 10 insertions(+), 12 deletions(-)

diff --git a/src/sbbs3/scfgsave.c b/src/sbbs3/scfgsave.c
index cccc539625..9d5386c358 100644
--- a/src/sbbs3/scfgsave.c
+++ b/src/sbbs3/scfgsave.c
@@ -829,22 +829,20 @@ BOOL DLLCALL write_file_cfg(scfg_t* cfg, int backup_level)
 				if (cfg->dir[i]->misc&DIR_FCHK) {
 					SAFECOPY(path, cfg->dir[i]->path);
 					if (!path[0]) {		/* no file storage path specified */
-						if(cfg->dir[i]->data_dir[0])
-							SAFECOPY(path, cfg->dir[i]->data_dir);
-						else
-							SAFEPRINTF(path, "%sdirs", cfg->data_dir);
-						SAFEPRINTF2(str, "%s%s"
+						SAFEPRINTF2(path, "%s%s"
 							, cfg->lib[cfg->dir[i]->lib]->code_prefix
 							, cfg->dir[i]->code_suffix);
-						strlwr(str);
-						SAFECAT(path,str);
+						strlwr(path);
 					}
-					else if (cfg->lib[cfg->dir[i]->lib]->parent_path[0]) {
-						SAFECOPY(path, cfg->lib[cfg->dir[i]->lib]->parent_path);
-						backslash(path);
-						SAFECAT(path, cfg->dir[i]->path);
+					if(cfg->lib[cfg->dir[i]->lib]->parent_path[0])
+						prep_dir(cfg->lib[cfg->dir[i]->lib]->parent_path, path, sizeof(path));
+					else {
+						if(cfg->dir[i]->data_dir[0])
+							SAFECOPY(str, cfg->dir[i]->data_dir);
+						else
+							SAFEPRINTF(str, "%sdirs", cfg->data_dir);
+						prep_dir(str, path, sizeof(path));
 					}
-					prep_dir(cfg->ctrl_dir, path, sizeof(path));
 					mkpath(path);
 				}
 
-- 
GitLab