diff --git a/src/sbbs3/un_qwk.cpp b/src/sbbs3/un_qwk.cpp
index 1a7af83530ef005dd49036a66dbe53d47ffface7..91c63daf81b527d9a2ccaec242c20aaa6e85bda7 100644
--- a/src/sbbs3/un_qwk.cpp
+++ b/src/sbbs3/un_qwk.cpp
@@ -45,6 +45,7 @@ bool sbbs_t::unpack_qwk(char *packet,uint hubnum)
 {
 	char	str[MAX_PATH+1],fname[MAX_PATH+1];
 	char 	tmp[512];
+	char	inbox[MAX_PATH+1];
 	uchar	block[QWK_BLOCK_LEN];
 	int 	k,file;
 	uint	i,j,n,lastsub=INVALID_SUB;
@@ -255,14 +256,16 @@ bool sbbs_t::unpack_qwk(char *packet,uint hubnum)
 
 	dir=opendir(cfg.temp_dir);
 	while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
-		// Create directory if necessary
-		sprintf(str,"%sqnet/%s.in",cfg.data_dir,cfg.qhub[hubnum]->id);
-		MKDIR(str);
 		sprintf(str,"%s%s",cfg.temp_dir,dirent->d_name);
 		if(isdir(str))	/* sub-dir */
 			continue;
+
+		// Create directory if necessary
+		sprintf(inbox,"%sqnet/%s.in",cfg.data_dir,cfg.qhub[hubnum]->id);
+		MKDIR(inbox);
+
 		// Copy files
-		sprintf(fname,"%sqnet/%s.in/%s",cfg.data_dir,cfg.qhub[hubnum]->id,dirent->d_name);
+		sprintf(fname,"%s/%s",inbox,dirent->d_name);
 		mv(str,fname,1 /* overwrite */);
 		sprintf(str,text[ReceivedFileViaQWK],dirent->d_name,cfg.qhub[hubnum]->id);
 		putsmsg(&cfg,1,str);
diff --git a/src/sbbs3/un_rep.cpp b/src/sbbs3/un_rep.cpp
index a6a2bfa9b6049523c8a81b1f1fb1b10ad4536e9d..4094bf1f30a09d672b25ef490761d79ab3a71bd9 100644
--- a/src/sbbs3/un_rep.cpp
+++ b/src/sbbs3/un_rep.cpp
@@ -46,6 +46,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 	char	str[MAX_PATH+1],fname[MAX_PATH+1]
 			,*AttemptedToUploadREPpacket="Attempted to upload REP packet";
 	char 	tmp[512];
+	char	inbox[MAX_PATH+1];
 	char	block[QWK_BLOCK_LEN];
 	int 	file;
 	uint	i,j,k,lastsub=INVALID_SUB;
@@ -415,14 +416,16 @@ bool sbbs_t::unpack_rep(char* repfile)
 
 		dir=opendir(cfg.temp_dir);
 		while(dir!=NULL && (dirent=readdir(dir))!=NULL) {				/* Extra files */
-			// Create directory if necessary
-			sprintf(str,"%sqnet/%s.in",cfg.data_dir,useron.alias);
-			MKDIR(str); 
 			// Move files
 			sprintf(str,"%s%s",cfg.temp_dir,dirent->d_name);
 			if(isdir(str))
 				continue;
-			sprintf(fname,"%sqnet/%s.in/%s",cfg.data_dir,useron.alias,dirent->d_name);
+
+			// Create directory if necessary
+			sprintf(inbox,"%sqnet/%s.in",cfg.data_dir,useron.alias);
+			MKDIR(inbox); 
+
+			sprintf(fname,"%s/%s",inbox,dirent->d_name);
 			mv(str,fname,1);
 			sprintf(str,text[ReceivedFileViaQWK],dirent->d_name,useron.alias);
 			putsmsg(&cfg,1,str);