diff --git a/src/sbbs3/addfiles.c b/src/sbbs3/addfiles.c
index c7f2e782dd8a39556e570c68b310d52677b6097a..fb9bf4318f0647c5667c69517591f6703d5972d0 100644
--- a/src/sbbs3/addfiles.c
+++ b/src/sbbs3/addfiles.c
@@ -215,11 +215,18 @@ void addlist(char *inpath, file_t f, uint dskip, uint sskip)
 		dir=opendir(str);
 
 		while(dir!=NULL && (dirent=readdir(dir))!=NULL) {
-			sprintf(filepath,"%s%s",str,dirent->d_name);
+			sprintf(tmp,"%s%s",str,dirent->d_name);
+			if(isdir(tmp))
+				continue;
+#ifdef _WIN32
+			GetShortPathName(tmp, filepath, sizeof(filepath));
+#else
+			strcpy(filepath,tmp);
+#endif
 			f.misc=0;
 			f.desc[0]=0;
 			f.cdt=flength(filepath);
-			padfname(dirent->d_name,f.name);
+			padfname(getfname(filepath),f.name);
 			printf("%s  %10lu  %s\n"
 				,f.name,f.cdt,unixtodstr(&scfg,fdate(filepath),str));
 			exist=findfile(&scfg,f.dir,f.name);