diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp
index acb9858fd9b94cc390d3047077166912b80f7f85..f822a9fc0e99b0180e20fe319f5d0499750a91b5 100644
--- a/src/sbbs3/file.cpp
+++ b/src/sbbs3/file.cpp
@@ -214,7 +214,7 @@ char * sbbs_t::getfilespec(char *str)
 	bputs(text[FileSpecStarDotStar]);
 	if(!getstr(str,12,K_UPPER))
 		strcpy(str,ALLFILES);
-#ifndef __unix__
+#if 0
 	else if(!strchr(str,'.') && strlen(str)<=8)
 		strcat(str,".*");
 #endif
@@ -234,6 +234,8 @@ BOOL filematch(char *filename, char *filespec)
 		if(filespec[c]=='*') break;
 		else if(filespec[c]=='?') continue;
 		else if(toupper(filename[c])!=toupper(filespec[c])) return(FALSE);
+	if(filespec[8]==' ')	/* no extension specified */
+		return(TRUE);
 	for(c=9;c<12;c++)
 		if(filespec[c]=='*') break;
 		else if(filespec[c]=='?') continue;
diff --git a/src/sbbs3/filedat.c b/src/sbbs3/filedat.c
index e0a75204596253670963e65fd159070904be9a4e..98bb3ee557bf11ec676c160d98a4525672adba3d 100644
--- a/src/sbbs3/filedat.c
+++ b/src/sbbs3/filedat.c
@@ -532,13 +532,16 @@ char* DLLCALL padfname(char *filename, char *str)
 	d=c;
 	if(filename[c]=='.') c++;
 	while(d<8)
-		str[d++]=SP;
-	str[d++]='.';
+		str[d++]=' ';
+	if(filename[c]>' ')	/* Change "FILE" to "FILE        " */
+		str[d++]='.';	/* (don't add a dot if there's no extension) */
+	else
+		str[d++]=' ';
 	while(d<12)
 		if(!filename[c]) break;
 		else str[d++]=filename[c++];
 	while(d<12)
-		str[d++]=SP;
+		str[d++]=' ';
 	str[d]=0;
 	return(str);
 }
diff --git a/src/sbbs3/listfile.cpp b/src/sbbs3/listfile.cpp
index f32bd05a13887ed8f51acb694e1398da1f48eecf..fc5b168c1de619bfd7a1cedcfe55a02d39da6db6 100644
--- a/src/sbbs3/listfile.cpp
+++ b/src/sbbs3/listfile.cpp
@@ -151,7 +151,7 @@ int sbbs_t::listfiles(uint dirnum, char *filespec, int tofile, long mode)
 			FREE((char *)datbuf);
 			return(-1); }
 		for(j=0;j<12 && m<l;j++)
-			if(j==8)
+			if(j==8 && ixbbuf[8]>' ')
 				str[j]='.';
 			else
 				str[j]=ixbbuf[m++];		/* Turns FILENAMEEXT into FILENAME.EXT */
@@ -888,7 +888,7 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode)
 			found=-1;
 			break; }
 		for(i=0;i<12 && m<l;i++)
-			if(i==8)
+			if(i==8 && ixbbuf[8]>' ')
 				str[i]='.';
 			else
 				str[i]=ixbbuf[m++];     /* Turns FILENAMEEXT into FILENAME.EXT */