From af90e9d35b93489f48c80154ba00b2797f4a56fc Mon Sep 17 00:00:00 2001
From: "Rob Swindell (on Debian Linux)" <rob@synchro.net>
Date: Tue, 5 Nov 2024 19:27:32 -0800
Subject: [PATCH] If fail to create dirs.raw in lib parent dir, create in
 ctrl_dir instead

Fix for issue #809
---
 src/sbbs3/scfg/scfgxfr2.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/src/sbbs3/scfg/scfgxfr2.c b/src/sbbs3/scfg/scfgxfr2.c
index f45c9159a2..f09df723cb 100644
--- a/src/sbbs3/scfg/scfgxfr2.c
+++ b/src/sbbs3/scfg/scfgxfr2.c
@@ -252,17 +252,20 @@ static void append_dir_list(const char* parent, const char* dir, FILE* fp, int d
 	globfree(&g);
 }
 
-BOOL create_raw_dir_list(const char* list_file)
+BOOL create_raw_dir_list(char* list_file)
 {
 	char		path[MAX_PATH+1];
+	char		fname[MAX_PATH+1] = "dirs.raw";
 	char*		p;
 	int			k=0;
 	bool		include_empty_dirs;
 	FILE*		fp;
 
 	SAFECOPY(path, list_file);
-	if((p=getfname(path))!=NULL)
+	if((p=getfname(path))!=NULL) {
+		SAFECOPY(fname, p);
 		*p=0;
+	}
 	if(uifc.input(WIN_MID|WIN_SAV,0,0,"Parent Directory",path,sizeof(path)-1
 		,K_EDIT)<1)
 		return(FALSE);
@@ -276,9 +279,12 @@ BOOL create_raw_dir_list(const char* list_file)
 	if(k<0)
 		return(FALSE);
 	if((fp=fopen(list_file,"w"))==NULL) {
-		SAFEPRINTF2(path,"Create Failure (%u): %s", errno, list_file);
-		uifc.msg(path);
-		return(FALSE);
+		strcpy(list_file, fname);
+		if((fp=fopen(list_file,"w"))==NULL) {
+			SAFEPRINTF2(path,"Create Failure (%u): %s", errno, list_file);
+			uifc.msg(path);
+			return(FALSE);
+		}
 	}
 	backslash(path);
 	uifc.pop("Scanning Directories...");
-- 
GitLab