diff --git a/src/sbbs3/allusers.c b/src/sbbs3/allusers.c
index 978c7568355710aab9e3e5f404950ece1b3f0192..268b1cdea827717bb7d0c6ce113e51ff2fa3912c 100644
--- a/src/sbbs3/allusers.c
+++ b/src/sbbs3/allusers.c
@@ -13,6 +13,8 @@
 #include <stdlib.h>
 #include <sys/stat.h>
 
+#include "dirwrap.h"
+
 #include "sbbsdefs.h"
 
 int  min=0,max=99;
@@ -189,8 +191,8 @@ for(i=1;i<argc;i++) {
 				for(;argv[i][j];j++)
                     if(isalpha(argv[i][j]))
                         flags|=FLAG(toupper(argv[i][j]));
-				sprintf(str,"%sUSER.DAT",dir);
-				if((file=sopen(str,O_RDWR|O_BINARY,SH_DENYNO))==-1) {
+				sprintf(str,"%suser.dat",dir);
+				if(!fexistcase(str) || (file=sopen(str,O_RDWR|O_BINARY,SH_DENYNO))==-1) {
 					printf("Error opening %s\n",str);
 					exit(1); }
 				if((stream=fdopen(file,"w+b"))==NULL) {
@@ -246,8 +248,8 @@ for(i=1;i<argc;i++) {
 				for(;argv[i][j];j++)
                     if(isalpha(argv[i][j]))
                         flags|=FLAG(toupper(argv[i][j]));
-				sprintf(str,"%sUSER.DAT",dir);
-				if((file=sopen(str,O_RDWR|O_BINARY,SH_DENYNO))==-1) {
+				sprintf(str,"%suser.dat",dir);
+				if(!fexistcase(str) || (file=sopen(str,O_RDWR|O_BINARY,SH_DENYNO))==-1) {
 					printf("Error opening %s\n",str);
 					exit(1); }
 				if((stream=fdopen(file,"w+b"))==NULL) {
@@ -295,8 +297,8 @@ for(i=1;i<argc;i++) {
 					j=99;
 				if(j<0)
 					j=0;
-				sprintf(str,"%sUSER.DAT",dir);
-				if((file=sopen(str,O_RDWR|O_BINARY,SH_DENYNO))==-1) {
+				sprintf(str,"%suser.dat",dir);
+				if(!fexistcase(str) || (file=sopen(str,O_RDWR|O_BINARY,SH_DENYNO))==-1) {
 					printf("Error opening %s\n",str);
 					exit(1); }
 				if((stream=fdopen(file,"w+b"))==NULL) {
@@ -334,7 +336,6 @@ for(i=1;i<argc;i++) {
 				exit(1); }
 	else {
 		strcpy(dir,argv[i]);
-		if(dir[strlen(dir)-1]!='\\' && dir[strlen(dir)-1]!=':')
-			strcat(dir,"\\"); } }
+		backslash(dir);
 return(0);
 }