diff --git a/src/sbbs3/answer.cpp b/src/sbbs3/answer.cpp
index de2cb7573e1822e7abfd3f066c8a38ed120d00b9..60b8b29122bed2f505f76e310d75d15a321ac7e8 100644
--- a/src/sbbs3/answer.cpp
+++ b/src/sbbs3/answer.cpp
@@ -200,15 +200,15 @@ bool sbbs_t::answer()
 	if(!useron.number) {	/* manual/regular logon */
 
 		/* Display ANSWER screen */
-		sprintf(str,"%sANSWER",cfg.text_dir);
-		sprintf(tmp,"%s.%s",str,autoterm&WIP ? "WIP":"RIP");
-		sprintf(str2,"%s.ANS",str);
+		sprintf(str,"%sanswer",cfg.text_dir);
+		sprintf(tmp,"%s.%s",str,autoterm&WIP ? "wip":"rip");
+		sprintf(str2,"%s.ans",str);
 		if(autoterm&(RIP|WIP) && fexist(tmp))
-			strcat(str,autoterm&WIP ? ".WIP":".RIP");
+			strcat(str,autoterm&WIP ? ".wip":".rip");
 		else if(autoterm&ANSI && fexist(str2))
-			strcat(str,".ANS");
+			strcat(str,".ans");
 		else
-			strcat(str,".ASC");
+			strcat(str,".asc");
 		rioctl(IOSM|PAUSE);
 		sys_status|=SS_PAUSEON;
 		printfile(str,P_NOABORT);
diff --git a/src/sbbs3/baja.c b/src/sbbs3/baja.c
index 3eff179d78dbd0b426bbacb53936d0b6b8a788b9..a9617bc1c04ab53820659e795690d71917729be9 100644
--- a/src/sbbs3/baja.c
+++ b/src/sbbs3/baja.c
@@ -3170,13 +3170,13 @@ int main(int argc, char **argv)
 
 	strcpy(str,src);
 	if(!strchr(str,'.'))
-		sprintf(src,"%s.SRC",str);
+		sprintf(src,"%s.src",str);
 
 	strcpy(str,src);
 	p=strrchr(str,'.');
 	if(p)
 		*p=0;
-	strcat(str,".BIN");
+	strcat(str,".bin");
 
 	if(outdir[0]) {
 		p=strrchr(str,'\\');
diff --git a/src/sbbs3/bat_xfer.cpp b/src/sbbs3/bat_xfer.cpp
index 0256b69d488d93e3ac698ae6322041eda1873aa2..3c70fe1691c27042e86e015bbb57aa8117dc2694 100644
--- a/src/sbbs3/bat_xfer.cpp
+++ b/src/sbbs3/bat_xfer.cpp
@@ -52,7 +52,7 @@ void sbbs_t::batchmenu()
 		bputs(text[NoFilesInBatchQueue]);
 		return; }
 	if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT))
-		menu("BATCHXFR");
+		menu("batchxfer");
 	lncntr=0;
 	while(online && !done && (batdn_total || batup_total
 		|| cfg.upload_dir!=INVALID_DIR)) {
@@ -63,7 +63,7 @@ void sbbs_t::batchmenu()
 				CRLF;
 				if(lncntr)          /* CRLF or SYNC can cause pause */
 					pause(); }
-			menu("BATCHXFR"); }
+			menu("batchxfr"); }
 		ASYNC;
 		bputs(text[BatchMenuPrompt]);
 		ch=(char)getkeys("BCDLQRU?\r",0);
@@ -72,7 +72,7 @@ void sbbs_t::batchmenu()
 		switch(ch) {
 			case '?':
 				if(useron.misc&(EXPERT|RIP|WIP))
-					menu("BATCHXFR");
+					menu("batchxfr");
 				break;
 			case CR:
 			case 'Q':
@@ -106,7 +106,7 @@ void sbbs_t::batchmenu()
 				if(!(useron.exempt&FLAG('T')) && !SYSOP && totaltime>timeleft) {
 					bputs(text[NotEnoughTimeToDl]);
 					break; }
-				menu("BIPROT");
+				menu("biprot");
 				if(!create_batchdn_lst())
 					break;
 				if(!create_batchup_lst())
@@ -258,7 +258,7 @@ void sbbs_t::batchmenu()
 				if(!batup_total && cfg.upload_dir==INVALID_DIR) {
 					bputs(text[UploadQueueIsEmpty]);
 					break; }
-				menu("BATUPROT");
+				menu("batuprot");
 				if(!create_batchup_lst())
 					break;
 				if(!create_bimodem_pth())
@@ -374,7 +374,7 @@ void sbbs_t::start_batch_download()
 	if(!(useron.exempt&FLAG('T')) && !SYSOP && totaltime>timeleft) {
 		bputs(text[NotEnoughTimeToDl]);
 		return; }
-	menu("BATDPROT");
+	menu("batdprot");
 	if(!create_batchdn_lst())
 		return;
 	if(!create_bimodem_pth())
diff --git a/src/sbbs3/bulkmail.cpp b/src/sbbs3/bulkmail.cpp
index 489f709c6bdb65984fcae402de417fead72bedaa..232413c254aaec2b59f245af291c5809262df937 100644
--- a/src/sbbs3/bulkmail.cpp
+++ b/src/sbbs3/bulkmail.cpp
@@ -72,7 +72,7 @@ void sbbs_t::bulkmail(uchar *ar)
 	if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) {
 		errormsg(WHERE,ERR_OPEN,"MAIL",i);
 		return; }
-	sprintf(smb.file,"%sMAIL",cfg.data_dir);
+	sprintf(smb.file,"%smail",cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		smb_stack(&smb,SMB_STACK_POP);
diff --git a/src/sbbs3/chat.cpp b/src/sbbs3/chat.cpp
index 4187e8f839bf38030f79567c0b9685b28f2ec12d..998f5203145a3d657924c9c4549fcbc00eed3d39 100644
--- a/src/sbbs3/chat.cpp
+++ b/src/sbbs3/chat.cpp
@@ -59,7 +59,7 @@ void sbbs_t::chatsection()
 
 	action=NODE_CHAT;
 	if(useron.misc&(RIP|WIP) || !(useron.misc&EXPERT))
-		menu("CHAT");
+		menu("chat");
 	ASYNC;
 	bputs(text[ChatPrompt]);
 	while(online) {
@@ -101,7 +101,7 @@ void sbbs_t::chatsection()
 				if(!chan_access(0))
 					break;
 				if(useron.misc&(RIP|WIP) ||!(useron.misc&EXPERT))
-					menu("MULTCHAT");
+					menu("multchat");
 				getnodedat(cfg.node_num,&thisnode,1);
 				bputs(text[WelcomeToMultiChat]);
 				channel=1;
@@ -113,7 +113,7 @@ void sbbs_t::chatsection()
 					gurubuf=NULL; }
 				if(cfg.chan[0]->misc&CHAN_GURU && cfg.chan[0]->guru<cfg.total_gurus
 					&& chk_ar(cfg.guru[cfg.chan[0]->guru]->ar,&useron)) {
-					sprintf(str,"%s%s.DAT",cfg.ctrl_dir,cfg.guru[cfg.chan[0]->guru]->code);
+					sprintf(str,"%s%s.dat",cfg.ctrl_dir,cfg.guru[cfg.chan[0]->guru]->code);
 					if((file=nopen(str,O_RDONLY))==-1) {
 						errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 						break; }
@@ -249,7 +249,7 @@ void sbbs_t::chatsection()
 									&& cfg.chan[savch-1]->guru<cfg.total_gurus
 									&& chk_ar(cfg.guru[cfg.chan[savch-1]->guru]->ar,&useron
 									)) {
-									sprintf(str,"%s%s.DAT",cfg.ctrl_dir
+									sprintf(str,"%s%s.dat",cfg.ctrl_dir
 										,cfg.guru[cfg.chan[savch-1]->guru]->code);
 									if((file=nopen(str,O_RDONLY))==-1) {
 										errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
@@ -372,9 +372,9 @@ void sbbs_t::chatsection()
 									done=1;
 									break;
 								case '*':
-									sprintf(str,"%sMENU/CHAN.*",cfg.text_dir);
+									sprintf(str,"%smenu/chan.*",cfg.text_dir);
 									if(fexist(str))
-										menu("CHAN");
+										menu("chan");
 									else {
 										bputs(text[ChatChanLstHdr]);
 										bputs(text[ChatChanLstTitles]);
@@ -408,7 +408,7 @@ void sbbs_t::chatsection()
 										CRLF; }
 									break;
 								case '?':	/* menu */
-									menu("MULTCHAT");
+									menu("multchat");
 									break;	} }
 						else {
 							ungetkey(ch);
@@ -562,7 +562,7 @@ void sbbs_t::chatsection()
 						break; }
 				if(gurubuf)
 					FREE(gurubuf);
-				sprintf(str,"%s%s.DAT",cfg.ctrl_dir,cfg.guru[i]->code);
+				sprintf(str,"%s%s.dat",cfg.ctrl_dir,cfg.guru[i]->code);
 				if((file=nopen(str,O_RDONLY))==-1) {
 					errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 					return; }
@@ -580,7 +580,7 @@ void sbbs_t::chatsection()
 				break;
 			case '?':
 				if(useron.misc&EXPERT)
-					menu("CHAT");
+					menu("chat");
 				break;
 			default:	/* 'Q' or <CR> */
 				lncntr=0;
@@ -598,7 +598,7 @@ void sbbs_t::chatsection()
 				if(lncntr)			/* CRLF or SYNC can cause pause */
 					pause(); }
 	#endif
-			menu("CHAT"); }
+			menu("chat"); }
 		ASYNC;
 		bputs(text[ChatPrompt]); }
 	if(gurubuf)
@@ -734,7 +734,7 @@ void sbbs_t::privchat(bool local)
 		sys_status|=SS_SPLITP;
 	/*
 	if(!(useron.misc&EXPERT))
-		menu("PRIVCHAT");
+		menu("privchat");
 	*/
 
 	if(!(sys_status&SS_SPLITP)) {
@@ -744,15 +744,15 @@ void sbbs_t::privchat(bool local)
 			bputs(text[WelcomeToPrivateChat]);
 	}
 
-	sprintf(str,"%sCHAT.DAB",cfg.node_dir);
+	sprintf(str,"%schat.dab",cfg.node_dir);
 	if((out=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYNO))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_DENYNONE|O_CREAT);
 		return; }
 
 	if(local)
-		sprintf(str,"%sLCHAT.DAB",cfg.node_dir);
+		sprintf(str,"%slchat.dab",cfg.node_dir);
 	else
-		sprintf(str,"%sCHAT.DAB",cfg.node_path[n-1]);
+		sprintf(str,"%schat.dab",cfg.node_path[n-1]);
 	if(!fexist(str))		/* Wait while it's created for the first time */
 		mswait(2000);
 	if((in=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYNO))==-1) {
diff --git a/src/sbbs3/chksmb.c b/src/sbbs3/chksmb.c
index 25254d72cb34406ea8a2701d8b37024c4a14d536..4358a5483f98a777c49ea560d915a1e91ce5fcac 100644
--- a/src/sbbs3/chksmb.c
+++ b/src/sbbs3/chksmb.c
@@ -157,9 +157,8 @@ int main(int argc, char **argv)
 	p=strrchr(smb.file,'.');
 	s=strrchr(smb.file,'\\');
 	if(p>s) *p=0;
-	strupr(smb.file);
 
-	sprintf(str,"%s.SHD",smb.file);
+	sprintf(str,"%s.shd",smb.file);
 	if(!fexist(str)) {
 		printf("\n%s doesn't exist.\n",smb.file);
 		continue; }
diff --git a/src/sbbs3/data.cpp b/src/sbbs3/data.cpp
index 702e388675316317bd00cba9a8014ef44f7e7209..8b64958937b5371a1dc07f0339dafcc9eb7c3494 100644
--- a/src/sbbs3/data.cpp
+++ b/src/sbbs3/data.cpp
@@ -61,7 +61,7 @@ uint sbbs_t::finduser(char *instr)
 			return(i); }
 	strcpy(str,instr);
 	strupr(str);
-	sprintf(str3,"%sUSER/NAME.DAT",cfg.data_dir);
+	sprintf(str3,"%suser/name.dat",cfg.data_dir);
 	if(flength(str3)<1L)
 		return(0);
 	if((stream=fnopen(&file,str3,O_RDONLY))==NULL) {
@@ -113,7 +113,7 @@ int sbbs_t::getfiles(uint dirnum)
 	char str[256];
 	long l;
 
-	sprintf(str,"%s%s.IXB",cfg.dir[dirnum]->data_dir, cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.ixb",cfg.dir[dirnum]->data_dir, cfg.dir[dirnum]->code);
 	l=flength(str);
 	if(l>0L)
 		return(l/F_IXBSIZE);
@@ -130,7 +130,7 @@ int sbbs_t::getuserxfers(int fromuser, int destuser, char *fname)
 	int file,found=0;
 	FILE *stream;
 
-	sprintf(str,"%sXFER.IXT",cfg.data_dir);
+	sprintf(str,"%sxfer.ixt",cfg.data_dir);
 	if(!fexist(str))
 		return(0);
 	if(!flength(str)) {
@@ -160,7 +160,7 @@ uint sbbs_t::gettotalfiles(uint dirnum)
 {
 	char str[81];
 
-	sprintf(str,"%s%s.IXB", cfg.dir[dirnum]->data_dir, cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.ixb", cfg.dir[dirnum]->data_dir, cfg.dir[dirnum]->code);
 	return((uint)(flength(str)/F_IXBSIZE));
 }
 
diff --git a/src/sbbs3/data_ovl.cpp b/src/sbbs3/data_ovl.cpp
index 28b615810f9c2d09bb623b77c1ceae3c1b8eb0ec..01e5bb04dd24ff90f496b3d68b592ecb1f78e26c 100644
--- a/src/sbbs3/data_ovl.cpp
+++ b/src/sbbs3/data_ovl.cpp
@@ -38,7 +38,7 @@
 #include "sbbs.h"
 
 /****************************************************************************/
-/* Puts 'name' into slot 'number' in USER/NAME.DAT							*/
+/* Puts 'name' into slot 'number' in user/name.dat							*/
 /****************************************************************************/
 void sbbs_t::putusername(int number, char *name)
 {
@@ -50,7 +50,7 @@ void sbbs_t::putusername(int number, char *name)
 		errormsg(WHERE,ERR_CHK,"user number",number);
 		return; }
 
-	sprintf(str,"%sUSER/NAME.DAT", cfg.data_dir);
+	sprintf(str,"%suser/name.dat", cfg.data_dir);
 	if((file=nopen(str,O_RDWR|O_CREAT))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_CREAT);
 		return; }
@@ -90,7 +90,7 @@ void sbbs_t::getmsgptrs()
 	if(!useron.number)
 		return;
 	bputs(text[LoadingMsgPtrs]);
-	sprintf(str,"%sUSER/PTRS/%4.4u.IXB", cfg.data_dir,useron.number);
+	sprintf(str,"%suser/ptrs/%4.4u.ixb", cfg.data_dir,useron.number);
 	if((stream=fnopen(&file,str,O_RDONLY))==NULL) {
 		for(i=0;i<cfg.total_subs;i++) {
 			sub_ptr[i]=sav_sub_ptr[i]=0;
@@ -142,7 +142,7 @@ void sbbs_t::putmsgptrs()
 
 	if(!useron.number)
 		return;
-	sprintf(str,"%sUSER/PTRS/%4.4u.IXB", cfg.data_dir,useron.number);
+	sprintf(str,"%suser/ptrs/%4.4u.ixb", cfg.data_dir,useron.number);
 	if((file=nopen(str,O_WRONLY|O_CREAT))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT);
 		return; }
@@ -195,7 +195,7 @@ uint sbbs_t::userdatdupe(uint usernumber, uint offset, uint datlen, char *dat
     long	l,length;
 
 	truncsp(dat);
-	sprintf(str,"%sUSER/USER.DAT", cfg.data_dir);
+	sprintf(str,"%suser/user.dat", cfg.data_dir);
 	if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1)
 		return(0);
 	length=filelength(file);
@@ -213,7 +213,7 @@ uint sbbs_t::userdatdupe(uint usernumber, uint offset, uint datlen, char *dat
 
 		if(i>=LOOP_NODEDAB) {
 			close(file);
-			errormsg(WHERE,ERR_LOCK,"USER.DAT",l);
+			errormsg(WHERE,ERR_LOCK,"user.dat",l);
 			return(0); }
 
 		read(file,str,datlen);
diff --git a/src/sbbs3/download.cpp b/src/sbbs3/download.cpp
index 0087e5ce1a5ce91ec04e881a0835c604ed199853..03f2f31a183c714bc72d10d4338d6a18ef7810fe 100644
--- a/src/sbbs3/download.cpp
+++ b/src/sbbs3/download.cpp
@@ -96,7 +96,7 @@ void sbbs_t::downloadfile(file_t* f)
 	/* Update IXB File */
 	/*******************/
 	f->datedled=time(NULL);
-	sprintf(str,"%s%s.IXB",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
+	sprintf(str,"%s%s.ixb",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
 	if((file=nopen(str,O_RDWR))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDWR);
 		return; }
diff --git a/src/sbbs3/email.cpp b/src/sbbs3/email.cpp
index 0f57977232e465a407700f794ee07b202e1242f9..fbd34f13850548c8a17b5a509ed10ee47b2a01d9 100644
--- a/src/sbbs3/email.cpp
+++ b/src/sbbs3/email.cpp
@@ -110,9 +110,9 @@ bool sbbs_t::email(int usernumber, char *top, char *subj, long mode)
 		return(false); }
 
 	if(mode&WM_FILE) {
-		sprintf(str2,"%sFILE/%04u.IN", cfg.data_dir,usernumber);
+		sprintf(str2,"%sfile/%04u.in", cfg.data_dir,usernumber);
 		_mkdir(str2);
-		sprintf(str2,"%sFILE/%04u.IN/%s", cfg.data_dir,usernumber,title);
+		sprintf(str2,"%sfile/%04u.in/%s", cfg.data_dir,usernumber,title);
 		if(fexist(str2)) {
 			bputs(text[FileAlreadyThere]);
 			remove(msgpath);
@@ -127,7 +127,7 @@ bool sbbs_t::email(int usernumber, char *top, char *subj, long mode)
 			strcat(str,title);
 			mv(str,str2,1); }
 		else { /* Remote */
-			menu("ULPROT");
+			menu("ulprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(str,"Q");
 			for(x=0;x<cfg.total_prots;x++)
@@ -158,7 +158,7 @@ bool sbbs_t::email(int usernumber, char *top, char *subj, long mode)
 	if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) {
 		errormsg(WHERE,ERR_OPEN,"MAIL",i);
 		return(false); }
-	sprintf(smb.file,"%sMAIL", cfg.data_dir);
+	sprintf(smb.file,"%smail", cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		smb_stack(&smb,SMB_STACK_POP);
diff --git a/src/sbbs3/exec.cpp b/src/sbbs3/exec.cpp
index 5ff81259c513e77b449cce17c6d86eed78844351..6e74aef12ae9ff265f3a75dee20f4d0ba8cbce34 100644
--- a/src/sbbs3/exec.cpp
+++ b/src/sbbs3/exec.cpp
@@ -511,7 +511,7 @@ long sbbs_t::exec_bin(char *mod, csi_t *csi)
 	memcpy(&bin,csi,sizeof(csi_t));
 	clearvars(&bin);
 
-	sprintf(str,"%s%s.BIN",cfg.exec_dir,mod);
+	sprintf(str,"%s%s.bin",cfg.exec_dir,mod);
 	if((file=nopen(str,O_RDONLY|O_BINARY))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDONLY|O_BINARY);
 		return(-1); }
@@ -836,7 +836,7 @@ int sbbs_t::exec(csi_t *csi)
 								if(text[i]!=nulstr)
 									FREE(text[i]);
 								text[i]=text_sav[i]; }
-						sprintf(str,"%s%s.DAT"
+						sprintf(str,"%s%s.dat"
 							,cfg.ctrl_dir,cmdstr((char*)csi->ip,path,csi->str,(char*)buf));
 						if((stream=fnopen(&file,str,O_RDONLY))==NULL) {
 							errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
diff --git a/src/sbbs3/execfile.cpp b/src/sbbs3/execfile.cpp
index 1a7dd6f0855636208d5640a2edbaed3d6f87f05a..c7e76422858ce2a83e68c34e71e58978eff8f3d8 100644
--- a/src/sbbs3/execfile.cpp
+++ b/src/sbbs3/execfile.cpp
@@ -53,9 +53,9 @@ int sbbs_t::execfile(csi_t *csi)
 			while(online) {
 				j=0;
 				if(usrlibs>1) {
-					sprintf(str,"%sMENU/LIBS.*", cfg.text_dir);
+					sprintf(str,"%smenu/libs.*", cfg.text_dir);
 					if(fexist(str))
-						menu("LIBS");
+						menu("libs");
 					else {
 						bputs(text[CfgLibLstHdr]);
 						for(i=0;i<usrlibs && !msgabort();i++) {
@@ -75,9 +75,9 @@ int sbbs_t::execfile(csi_t *csi)
 						j=curlib;
 					else
 						j--; }
-				sprintf(str,"%sMENU/DIRS%u.*", cfg.text_dir, usrlib[j]+1);
+				sprintf(str,"%smenu/dirs%u.*", cfg.text_dir, usrlib[j]+1);
 				if(fexist(str)) {
-					sprintf(str,"DIRS%u",usrlib[j]+1);
+					sprintf(str,"dirs%u",usrlib[j]+1);
 					menu(str); }
 				else {
 					CLS;
@@ -183,9 +183,9 @@ int sbbs_t::execfile(csi_t *csi)
 
 		case CS_FILE_SHOW_LIBRARIES:
 			if(!usrlibs) return(0);
-			sprintf(str,"%sMENU/LIBS.*", cfg.text_dir);
+			sprintf(str,"%smenu/libs.*", cfg.text_dir);
 			if(fexist(str)) {
-				menu("LIBS");
+				menu("libs");
 				return(0); }
 			bputs(text[LibLstHdr]);
 			for(i=0;i<usrlibs && !msgabort();i++) {
@@ -199,9 +199,9 @@ int sbbs_t::execfile(csi_t *csi)
 
 		case CS_FILE_SHOW_DIRECTORIES:
 			if(!usrlibs) return(0);
-			sprintf(str,"%sMENU/DIRS%u.*", cfg.text_dir, usrlib[curlib]+1);
+			sprintf(str,"%smenu/dirs%u.*", cfg.text_dir, usrlib[curlib]+1);
 			if(fexist(str)) {
-				sprintf(str,"DIRS%u",usrlib[curlib]+1);
+				sprintf(str,"dirs%u",usrlib[curlib]+1);
 				menu(str);
 				return(0); }
 			CRLF;
diff --git a/src/sbbs3/execfunc.cpp b/src/sbbs3/execfunc.cpp
index 686db6a9d70e03c361fda7b8eaaabe64be0dc23d..8dc4c690a4226053ff8038f74bd70f522490875d 100644
--- a/src/sbbs3/execfunc.cpp
+++ b/src/sbbs3/execfunc.cpp
@@ -154,11 +154,11 @@ int sbbs_t::exec_function(csi_t *csi)
 			ver();
 			if(yesno(text[ViewSysInfoFileQ])) {
 				CLS;
-				sprintf(str,"%sSYSTEM.MSG", cfg.text_dir);
+				sprintf(str,"%ssystem.msg", cfg.text_dir);
 				printfile(str,0); }
 			if(yesno(text[ViewLogonMsgQ])) {
 				CLS;
-				menu("LOGON"); }
+				menu("logon"); }
 			return(0);
 		case CS_INFO_SUBBOARD:	 /* Sub-board information */
 			if(!usrgrps) return(0);
@@ -212,9 +212,9 @@ int sbbs_t::exec_function(csi_t *csi)
 			return(0);
 		case CS_INFO_XFER_POLICY:
 			if(!usrlibs) return(0);
-			sprintf(str,"%sMENU/TPOLICY.*", cfg.text_dir);
+			sprintf(str,"%smenu/tpolicy.*", cfg.text_dir);
 			if(fexist(str))
-				menu("TPOLICY");
+				menu("tpolicy");
 			else {
 				bprintf(text[TransferPolicyHdr],cfg.sys_name);
 				bprintf(text[TpUpload]
@@ -244,7 +244,7 @@ int sbbs_t::exec_function(csi_t *csi)
 				if(cfg.logoff_mod[0])
 					exec_bin(cfg.logoff_mod,csi);
 				user_event(EVENT_LOGOFF);
-				menu("LOGOFF");
+				menu("logoff");
 				SYNC;
 				hangup(); }
 			return(0);
@@ -297,7 +297,7 @@ int sbbs_t::exec_function(csi_t *csi)
 					break;
 			if(i>=cfg.total_gurus)
 				return(0);
-			sprintf(str,"%s%s.DAT", cfg.ctrl_dir, cfg.guru[i]->code);
+			sprintf(str,"%s%s.dat", cfg.ctrl_dir, cfg.guru[i]->code);
 			if((file=nopen(str,O_RDONLY))==-1) {
 				errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 				return(0); }
@@ -470,7 +470,7 @@ int sbbs_t::exec_function(csi_t *csi)
 			tm=gmtime(&now);
 			if(tm==NULL)
 				return(0);
-			sprintf(str,"%sLOGS/%2.2d%2.2d%2.2d.LOG", cfg.data_dir
+			sprintf(str,"%slogs/%2.2d%2.2d%2.2d.LOG", cfg.data_dir
 				,tm->tm_mon+1,tm->tm_mday,TM_YEAR(tm->tm_year));
 			printfile(str,0);
 			return(0);
@@ -481,7 +481,7 @@ int sbbs_t::exec_function(csi_t *csi)
 			tm=gmtime(&now);
 			if(tm==NULL)
 				return(0);
-			sprintf(str,"%sLOGS/%2.2d%2.2d%2.2d.LOG",cfg.data_dir
+			sprintf(str,"%slogs/%2.2d%2.2d%2.2d.LOG",cfg.data_dir
 				,tm->tm_mon+1,tm->tm_mday,TM_YEAR(tm->tm_year));
 			printfile(str,0);
 			return(0);
@@ -649,7 +649,7 @@ int sbbs_t::exec_function(csi_t *csi)
 
 		case CS_FILE_SEND:
 
-			menu("DLPROT");
+			menu("dlprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(str,"Q");
 			for(i=0;i<cfg.total_prots;i++)
@@ -670,7 +670,7 @@ int sbbs_t::exec_function(csi_t *csi)
 		case CS_FILE_PUT:
 			if(!chksyspass(0))
 				return(0);
-			menu("ULPROT");
+			menu("ulprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(str,"Q");
 			for(i=0;i<cfg.total_prots;i++)
diff --git a/src/sbbs3/execmsg.cpp b/src/sbbs3/execmsg.cpp
index 040065849350ed54ddfe0d708c9ca745ae6c7f0c..ed95d565d3712fd83c0b7c82e7a3dacfe227391f 100644
--- a/src/sbbs3/execmsg.cpp
+++ b/src/sbbs3/execmsg.cpp
@@ -51,9 +51,9 @@ int sbbs_t::execmsg(csi_t *csi)
 			while(online) {
 				j=0;
 				if(usrgrps>1) {
-					sprintf(str,"%sMENU/GRPS.*", cfg.text_dir);
+					sprintf(str,"%smenu/grps.*", cfg.text_dir);
 					if(fexist(str))
-						menu("GRPS");
+						menu("grps");
 					else {
 						bputs(text[CfgGrpLstHdr]);
 						for(i=0;i<usrgrps && !msgabort();i++) {
@@ -73,9 +73,9 @@ int sbbs_t::execmsg(csi_t *csi)
 						j=curgrp;
 					else
 						j--; }
-				sprintf(str,"%sMENU/SUBS%u.*", cfg.text_dir, usrgrp[j]+1);
+				sprintf(str,"%smenu/subs%u.*", cfg.text_dir, usrgrp[j]+1);
 				if(fexist(str)) {
-					sprintf(str,"SUBS%u",usrgrp[j]+1);
+					sprintf(str,"subs%u",usrgrp[j]+1);
 					menu(str); }
 				else {
 					CLS;
@@ -192,9 +192,9 @@ int sbbs_t::execmsg(csi_t *csi)
 
 		case CS_MSG_SHOW_GROUPS:
 			if(!usrgrps) return(0);
-			sprintf(str,"%sMENU/GRPS.*", cfg.text_dir);
+			sprintf(str,"%smenu/grps.*", cfg.text_dir);
 			if(fexist(str)) {
-				menu("GRPS");
+				menu("grps");
 				return(0); }
 			bputs(text[GrpLstHdr]);
 			for(i=0;i<usrgrps && !msgabort();i++) {
@@ -208,9 +208,9 @@ int sbbs_t::execmsg(csi_t *csi)
 
 		case CS_MSG_SHOW_SUBBOARDS:
 			if(!usrgrps) return(0);
-			sprintf(str,"%sMENU/SUBS%u.*", cfg.text_dir, usrgrp[curgrp]+1);
+			sprintf(str,"%smenu/subs%u.*", cfg.text_dir, usrgrp[curgrp]+1);
 			if(fexist(str)) {
-				sprintf(str,"SUBS%u",usrgrp[curgrp]+1);
+				sprintf(str,"subs%u",usrgrp[curgrp]+1);
 				menu(str);
 				return(0); }
 			CRLF;
diff --git a/src/sbbs3/fido.cpp b/src/sbbs3/fido.cpp
index 648a57f811150608f81aa8905a81b9b700c65b5a..1ace8395b89346cfd64aa0049d9d3074ae7d1c0c 100644
--- a/src/sbbs3/fido.cpp
+++ b/src/sbbs3/fido.cpp
@@ -69,7 +69,7 @@ bool sbbs_t::lookup_netuser(char *into)
 		return(false);
 	strcpy(to,into);
 	strupr(to);
-	sprintf(str,"%sQNET/USERS.DAT", cfg.data_dir);
+	sprintf(str,"%sqnet/users.dat", cfg.data_dir);
 	if((stream=fnopen(&i,str,O_RDONLY))==NULL)
 		return(false);
 	while(!feof(stream)) {
@@ -208,12 +208,12 @@ bool sbbs_t::netmail(char *into, char *title, long mode)
 
 	if(mode&WM_FILE) {
 		strcpy(fname,subj);
-		sprintf(str,"%sFILE/%04u.OUT", cfg.data_dir, useron.number);
+		sprintf(str,"%sfile/%04u.out", cfg.data_dir, useron.number);
 		_mkdir(str);
 		strcpy(tmp, cfg.data_dir);
 		if(tmp[0]=='.')    /* Relative path */
 			sprintf(tmp,"%s%s", cfg.node_dir, cfg.data_dir);
-		sprintf(str,"%sFILE/%04u.OUT/%s",tmp,useron.number,fname);
+		sprintf(str,"%sfile/%04u.out/%s",tmp,useron.number,fname);
 		strcpy(subj,str);
 		if(fexist(str)) {
 			bputs(text[FileAlreadyThere]);
@@ -228,7 +228,7 @@ bool sbbs_t::netmail(char *into, char *title, long mode)
 			if(mv(str,subj,1))
 				return(false); }
 		else { /* Remote */
-			menu("ULPROT");
+			menu("ulprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(str,"Q");
 			for(x=0;x<cfg.total_prots;x++)
@@ -294,7 +294,7 @@ bool sbbs_t::netmail(char *into, char *title, long mode)
 	cc_sent=0;
 	while(1) {
 		for(i=1;i;i++) {
-			sprintf(str,"%s%u.MSG", cfg.netmail_dir,i);
+			sprintf(str,"%s%u.msg", cfg.netmail_dir,i);
 			if(!fexist(str))
 				break; }
 		if(!i) {
@@ -608,7 +608,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 			FREE(qwkbuf);
 			smb_freemsgmem(&msg);
 			return; }
-		sprintf(smb.file,"%sMAIL", cfg.data_dir);
+		sprintf(smb.file,"%smail", cfg.data_dir);
 		smb.retry_time=cfg.smb_retry_time;
 		if((i=smb_open(&smb))!=0) {
 			smb_stack(&smb,SMB_STACK_POP);
@@ -807,7 +807,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 	sprintf(hdr.subj,"%.71s",p);
 
 	for(i=1;i;i++) {
-		sprintf(str,"%s%u.MSG", cfg.netmail_dir,i);
+		sprintf(str,"%s%u.msg", cfg.netmail_dir,i);
 		if(!fexist(str))
 			break; }
 	if(!i) {
diff --git a/src/sbbs3/file.cpp b/src/sbbs3/file.cpp
index 128869a6035e50542aa4a51e02bbf929e69caf75..8732762b52909925e12aeeada4c6da5a95d49e94 100644
--- a/src/sbbs3/file.cpp
+++ b/src/sbbs3/file.cpp
@@ -43,7 +43,7 @@ void sbbs_t::getextdesc(uint dirnum, ulong datoffset, char *ext)
 	int file;
 
 	memset(ext,0,513);
-	sprintf(str,"%s%s.EXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.exb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if((file=nopen(str,O_RDONLY))==-1)
 		return;
 	lseek(file,(datoffset/F_LEN)*512L,SEEK_SET);
@@ -57,7 +57,7 @@ void sbbs_t::getextdesc(uint dirnum, ulong datoffset, char *ext)
 		int file;
 
 	memset(nulbuf,0,512);
-	sprintf(str,"%s%s.EXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.exb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if((file=nopen(str,O_WRONLY|O_CREAT))==-1)
 		return;
 	lseek(file,0L,SEEK_END);
@@ -131,7 +131,7 @@ void sbbs_t::openfile(file_t* f)
 	/************************************/
 	/* Increment open count in dat file */
 	/************************************/
-	sprintf(str1,"%s%s.DAT",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
+	sprintf(str1,"%s%s.dat",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
 	if((file=nopen(str1,O_RDWR))==-1) {
 		errormsg(WHERE,ERR_OPEN,str1,O_RDWR);
 		return; }
@@ -152,7 +152,7 @@ void sbbs_t::openfile(file_t* f)
 	/**********************************/
 	/* Add transaction to BACKOUT.DAB */
 	/**********************************/
-	sprintf(str1,"%sBACKOUT.DAB",cfg.node_dir);
+	sprintf(str1,"%sbackout.dab",cfg.node_dir);
 	if((file=nopen(str1,O_WRONLY|O_APPEND|O_CREAT))==-1) {
 		errormsg(WHERE,ERR_OPEN,str1,O_WRONLY|O_APPEND|O_CREAT);
 		return; }
@@ -177,7 +177,7 @@ void sbbs_t::closefile(file_t* f)
 	/************************************/
 	/* Decrement open count in dat file */
 	/************************************/
-	sprintf(str1,"%s%s.DAT",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
+	sprintf(str1,"%s%s.dat",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
 	if((file=nopen(str1,O_RDWR))==-1) {
 		errormsg(WHERE,ERR_OPEN,str1,O_RDWR);
 		return; }
@@ -200,7 +200,7 @@ void sbbs_t::closefile(file_t* f)
 	/*****************************************/
 	/* Removing transaction from BACKOUT.DAB */
 	/*****************************************/
-	sprintf(str1,"%sBACKOUT.DAB",cfg.node_dir);
+	sprintf(str1,"%sbackout.dab",cfg.node_dir);
 	if(flength(str1)<1L)	/* file is not there or empty */
 		return;
 	if((file=nopen(str1,O_RDONLY))==-1) {
diff --git a/src/sbbs3/filedat.c b/src/sbbs3/filedat.c
index b6b283244bd224cd3afc18073c5b366fa19de73c..b415b3747494174f7e184d9a5bce8c58eca7ee7f 100644
--- a/src/sbbs3/filedat.c
+++ b/src/sbbs3/filedat.c
@@ -48,7 +48,7 @@ BOOL DLLCALL getfiledat(scfg_t* cfg, file_t* f)
 	int file;
 	long length;
 
-	sprintf(str,"%s%s.DAT",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.dat",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_RDONLY|O_BINARY,SH_DENYWR))==-1) {
 	//	errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 		return(FALSE); 
@@ -132,7 +132,7 @@ BOOL DLLCALL putfiledat(scfg_t* cfg, file_t* f)
 	buf[F_MISC]=f->misc+SP;
 	putrec(buf,F_ALTPATH,2,hexplus(f->altpath,tmp));
 	putrec(buf,F_ALTPATH+2,2,crlf);
-	sprintf(str,"%s%s.DAT",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.dat",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_WRONLY|O_BINARY,SH_DENYRW))==-1) {
 //		errormsg(WHERE,ERR_OPEN,str,O_WRONLY);
 		return(FALSE); 
@@ -181,7 +181,7 @@ BOOL DLLCALL addfiledat(scfg_t* cfg, file_t* f)
 	/************************/
 	/* Add data to DAT File */
 	/************************/
-	sprintf(str,"%s%s.DAT",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.dat",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_RDWR|O_BINARY|O_CREAT,SH_DENYRW))==-1) {
 //		errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_CREAT);
 		return(FALSE); 
@@ -243,7 +243,7 @@ BOOL DLLCALL addfiledat(scfg_t* cfg, file_t* f)
 	/*******************************************/
 	/* Update last upload date/time stamp file */
 	/*******************************************/
-	sprintf(str,"%s%s.DAB",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.dab",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_WRONLY|O_CREAT|O_BINARY,SH_DENYRW))!=-1) {
 		now=time(NULL);
 		write(file,&now,4);
@@ -256,7 +256,7 @@ BOOL DLLCALL addfiledat(scfg_t* cfg, file_t* f)
 	strcpy(fname,f->name);
 	for(i=8;i<12;i++)   /* Turn FILENAME.EXT into FILENAMEEXT */
 		fname[i]=fname[i+1];
-	sprintf(str,"%s%s.IXB",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.ixb",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYRW))==-1) {
 //		errormsg(WHERE,ERR_OPEN,str,O_RDWR|O_CREAT);
 		return(FALSE); 
@@ -351,7 +351,7 @@ BOOL DLLCALL addfiledat(scfg_t* cfg, file_t* f)
 }
 
 /****************************************************************************/
-/* Gets file data from dircode.IXB file										*/
+/* Gets file data from dircode.ixb file										*/
 /* Need fields .name and .dir filled.                                       */
 /* only fills .offset, .dateuled, and .datedled                             */
 /****************************************************************************/
@@ -362,7 +362,7 @@ BOOL DLLCALL getfileixb(scfg_t* cfg, file_t* f)
 	int				file;
 	long			l,length;
 
-	sprintf(str,"%s%s.IXB",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.ixb",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_RDONLY|O_BINARY,SH_DENYWR))==-1) {
 	//	errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 		return(FALSE); 
@@ -420,7 +420,7 @@ BOOL DLLCALL removefiledat(scfg_t* cfg, file_t* f)
 	strcpy(fname,f->name);
 	for(c=8;c<12;c++)   /* Turn FILENAME.EXT into FILENAMEEXT */
 		fname[c]=fname[c+1];
-	sprintf(str,"%s%s.IXB",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.ixb",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_RDONLY|O_BINARY,SH_DENYWR))==-1) {
 //		errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 		return(FALSE); 
@@ -460,7 +460,7 @@ BOOL DLLCALL removefiledat(scfg_t* cfg, file_t* f)
 	}
 	FREE((char *)ixbbuf);
 	close(file);
-	sprintf(str,"%s%s.DAT",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
+	sprintf(str,"%s%s.dat",cfg->dir[f->dir]->data_dir,cfg->dir[f->dir]->code);
 	if((file=sopen(str,O_WRONLY|O_BINARY,SH_DENYRW))==-1) {
 //		errormsg(WHERE,ERR_OPEN,str,O_WRONLY);
 		return(FALSE); 
@@ -493,7 +493,7 @@ BOOL DLLCALL findfile(scfg_t* cfg, uint dirnum, char *filename)
 	strupr(fname);
 	for(c=8;c<12;c++)   /* Turn FILENAME.EXT into FILENAMEEXT */
 		fname[c]=fname[c+1];
-	sprintf(str,"%s%s.IXB",cfg->dir[dirnum]->data_dir,cfg->dir[dirnum]->code);
+	sprintf(str,"%s%s.ixb",cfg->dir[dirnum]->data_dir,cfg->dir[dirnum]->code);
 	if((file=sopen(str,O_RDONLY|O_BINARY,SH_DENYWR))==-1) return(FALSE);
 	length=filelength(file);
 	if(!length) {
@@ -581,7 +581,7 @@ BOOL DLLCALL rmuserxfers(scfg_t* cfg, int fromuser, int destuser, char *fname)
     int file;
     long l,length;
 
-	sprintf(str,"%sXFER.IXT", cfg->data_dir);
+	sprintf(str,"%sxfer.ixt", cfg->data_dir);
 	if(!fexist(str))
 		return(FALSE);
 	if(!flength(str)) {
diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index 47d0c75628be3efd0a4775c4bc87e24766c88aa3..5d2adc976b5f1d1bd1810fa75757d511720c87cd 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -354,7 +354,7 @@ BOOL upload_stats(ulong bytes)
 	int		file;
 	ulong	val;
 
-	sprintf(str,"%sDSTS.DAB",scfg.ctrl_dir);
+	sprintf(str,"%sdsts.dab",scfg.ctrl_dir);
 	if((file=nopen(str,O_RDWR))==-1) 
 		return(FALSE);
 
@@ -377,7 +377,7 @@ BOOL download_stats(ulong bytes)
 	int		file;
 	ulong	val;
 
-	sprintf(str,"%sDSTS.DAB",scfg.ctrl_dir);
+	sprintf(str,"%sdsts.dab",scfg.ctrl_dir);
 	if((file=nopen(str,O_RDWR))==-1) 
 		return(FALSE);
 
@@ -1059,7 +1059,7 @@ BOOL alias(char* fullalias, char* filename, user_t* user, int* curdir)
 	FILE*	fp;
 	BOOL	result=FALSE;
 
-	sprintf(aliasfile,"%sFTPALIAS.CFG",scfg.ctrl_dir);
+	sprintf(aliasfile,"%sftpalias.cfg",scfg.ctrl_dir);
 	if((fp=fopen(aliasfile,"r"))==NULL) 
 		return(result);
 
@@ -1306,7 +1306,7 @@ static void ctrl_thread(void* arg)
 
 	sockprintf(sock,"220-%s (%s)",scfg.sys_name, scfg.sys_inetaddr);
 	sockprintf(sock," Synchronet FTP Server v%s Ready",FTP_VERSION);
-	sprintf(str,"%sFTPLOGIN.TXT",scfg.text_dir);
+	sprintf(str,"%sftplogin.txt",scfg.text_dir);
 	if((fp=fopen(str,"rb"))!=NULL) {
 		while(!feof(fp)) {
 			if(!fgets(buf,sizeof(buf),fp))
@@ -1375,7 +1375,7 @@ static void ctrl_thread(void* arg)
 			continue;
 		}
 		if(!stricmp(cmd, "QUIT")) {
-			sprintf(str,"%sFTPBYE.TXT",scfg.text_dir);
+			sprintf(str,"%sftpbye.txt",scfg.text_dir);
 			if((fp=fopen(str,"rb"))!=NULL) {
 				i=0;
 				while(!feof(fp)) {
@@ -1486,7 +1486,7 @@ static void ctrl_thread(void* arg)
 			lprintf("%04d %s logged in.",sock,user.alias);
 			logintime=time(NULL);
 			timeleft=gettimeleft(&scfg,&user,logintime);
-			sprintf(str,"%sFTPHELLO.TXT",scfg.text_dir);
+			sprintf(str,"%sftphello.txt",scfg.text_dir);
 			if((fp=fopen(str,"rb"))!=NULL) {
 				i=0;
 				while(!feof(fp)) {
@@ -1509,7 +1509,7 @@ static void ctrl_thread(void* arg)
 					,user.cdt+user.freecdt);
 			sockprintf(sock,"230 You are allowed %ld minutes of use for this session."
 				,timeleft/60);
-			sprintf(qwkfile,"%sFILE/%04d.QWK",scfg.data_dir,user.number);
+			sprintf(qwkfile,"%sfile/%04d.qwk",scfg.data_dir,user.number);
 
 			/* Adjust User Total Logons/Logons Today */
 			adjustuserrec(&scfg,user.number,U_LOGONS,5,1);
@@ -2068,7 +2068,7 @@ static void ctrl_thread(void* arg)
 				} 
 
 				/* File Aliases */
-				sprintf(aliasfile,"%sFTPALIAS.CFG",scfg.ctrl_dir);
+				sprintf(aliasfile,"%sftpalias.cfg",scfg.ctrl_dir);
 				if((alias_fp=fopen(aliasfile,"r"))!=NULL) {
 
 					while(!feof(alias_fp)) {
@@ -2327,7 +2327,7 @@ static void ctrl_thread(void* arg)
 			if(lib<0 && startup->options&FTP_OPT_ALLOW_QWK 
 				&& !stricmp(p,str) && !delecmd) {
 				lprintf("%04d %s creating/updating QWK packet...",sock,user.alias);
-				sprintf(str,"%sPACK%04u.NOW",scfg.data_dir,user.number);
+				sprintf(str,"%spack%04u.now",scfg.data_dir,user.number);
 				if((file=open(str,O_WRONLY|O_CREAT,S_IWRITE))==-1) {
 					lprintf("%04d !ERROR %d opening %s",sock, errno, str);
 					sockprintf(sock, "451 !ERROR %d creating semaphore file",errno);
@@ -2381,7 +2381,7 @@ static void ctrl_thread(void* arg)
 				if(lib<0) {
 
 					/* File Aliases */
-					sprintf(aliasfile,"%sFTPALIAS.CFG",scfg.ctrl_dir);
+					sprintf(aliasfile,"%sftpalias.cfg",scfg.ctrl_dir);
 					if((alias_fp=fopen(aliasfile,"r"))!=NULL) {
 
 						while(!feof(alias_fp)) {
@@ -2659,7 +2659,7 @@ static void ctrl_thread(void* arg)
 					sockprintf(sock,"553 Invalid directory.");
 					continue;
 				}
-				sprintf(fname,"%sFILE/%04d.REP",scfg.data_dir,user.number);
+				sprintf(fname,"%sfile/%04d.rep",scfg.data_dir,user.number);
 				lprintf("%04d %s uploading %s"
 					,sock,user.alias,fname);
 			} else {
diff --git a/src/sbbs3/getkey.cpp b/src/sbbs3/getkey.cpp
index dc1e1114206d2769995b31116f088e1f69fa4d49..9e7850f6515cabdbd2145b07f1027ed5c842f347 100644
--- a/src/sbbs3/getkey.cpp
+++ b/src/sbbs3/getkey.cpp
@@ -338,7 +338,7 @@ bool sbbs_t::yesno(char *str)
 	SYNC;
 	if(useron.misc&WIP) {
 		strip_ctrl(question);
-		menu("YESNO"); }
+		menu("yesno"); }
 	else
 		bprintf(text[YesNoQuestion],str);
 	while(online) {
@@ -372,7 +372,7 @@ bool sbbs_t::noyes(char *str)
 	SYNC;
 	if(useron.misc&WIP) {
 		strip_ctrl(question);
-		menu("NOYES"); }
+		menu("noyes"); }
 	else
 		bprintf(text[NoYesQuestion],str);
 	while(online) {
diff --git a/src/sbbs3/getmsg.cpp b/src/sbbs3/getmsg.cpp
index 66155febb16c078418539c19d2f362dc22b0dab2..e1e2d6f6c5199f6d529d7c5a411b19f2787c81e7 100644
--- a/src/sbbs3/getmsg.cpp
+++ b/src/sbbs3/getmsg.cpp
@@ -314,7 +314,7 @@ ulong sbbs_t::getposts(uint subnum)
 	char str[128];
 	ulong l;
 
-	sprintf(str,"%s%s.SID",cfg.sub[subnum]->data_dir,cfg.sub[subnum]->code);
+	sprintf(str,"%s%s.sid",cfg.sub[subnum]->data_dir,cfg.sub[subnum]->code);
 	l=flength(str);
 	if((long)l==-1)
 		return(0);
diff --git a/src/sbbs3/getnode.cpp b/src/sbbs3/getnode.cpp
index 1c9110196c8dc242c9b4c816f4efbb924a01d8ed..fb066204fb6b2c33b2321311801a8bb462424813 100644
--- a/src/sbbs3/getnode.cpp
+++ b/src/sbbs3/getnode.cpp
@@ -69,7 +69,7 @@ void sbbs_t::getnodedat(uint number, node_t *node, char lockit)
 		sprintf(str,"NODE.DAB COLLISION - Count: %d",count);
 		logline("!!",str); }
 	if(count==LOOP_NODEDAB) {
-		errormsg(WHERE,ERR_READ,"NODE.DAB",number+1);
+		errormsg(WHERE,ERR_READ,"node.dab",number+1);
 		return; }
 }
 
@@ -165,16 +165,7 @@ void sbbs_t::getnmsg()
 	thisnode.misc&=~NODE_NMSG;          /* clear the NMSG flag */
 	putnodedat(cfg.node_num,&thisnode);
 
-	#if 0	/* Only for v1b rev 2-5 and XSDK v2.1x compatibility */
-	sprintf(str,"%sMSGS/N%3.3u.IXB",cfg.data_dir,cfg.node_num);
-	if((ixb=nopen(str,O_RDONLY))!=-1) {
-		read(ixb,&offset,4);
-		chsize(ixb,0L);
-		close(ixb);
-		remove(str); }
-	#endif
-
-	sprintf(str,"%sMSGS/N%3.3u.MSG",cfg.data_dir,cfg.node_num);
+	sprintf(str,"%smsgs/n%3.3u.msg",cfg.data_dir,cfg.node_num);
 	if(flength(str)<1L)
 		return;
 	if((file=nopen(str,O_RDWR))==-1) {
@@ -250,7 +241,7 @@ void sbbs_t::getsmsg(int usernumber)
     int file;
     long length;
 
-	sprintf(str,"%sMSGS/%4.4u.MSG",cfg.data_dir,usernumber);
+	sprintf(str,"%smsgs/%4.4u.msg",cfg.data_dir,usernumber);
 	if(flength(str)<1L)
 		return;
 	if((file=nopen(str,O_RDWR))==-1) {
diff --git a/src/sbbs3/listfile.cpp b/src/sbbs3/listfile.cpp
index 863778144ff5f256875dbb3274df48c2a56a5334..5ddca37909c589eebe96aa8993497b8873847e9a 100644
--- a/src/sbbs3/listfile.cpp
+++ b/src/sbbs3/listfile.cpp
@@ -60,13 +60,13 @@ int sbbs_t::listfiles(uint dirnum, char *filespec, int tofile, long mode)
 
 	if(mode&FL_ULTIME) {
 		last_ns_time=now;
-		sprintf(str,"%s%s.DAB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+		sprintf(str,"%s%s.dab",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 		if((file=nopen(str,O_RDONLY))!=-1) {
 			read(file,&l,4);
 			close(file);
 			if(ns_time>(time_t)l)
 				return(0); } }
-	sprintf(str,"%s%s.IXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.ixb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if((file=nopen(str,O_RDONLY))==-1)
 		return(0);
 	l=filelength(file);
@@ -83,7 +83,7 @@ int sbbs_t::listfiles(uint dirnum, char *filespec, int tofile, long mode)
 		FREE((char *)ixbbuf);
 		return(0); }
 	close(file);
-	sprintf(str,"%s%s.DAT",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.dat",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if((file=nopen(str,O_RDONLY))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 		FREE((char *)ixbbuf);
@@ -201,7 +201,7 @@ int sbbs_t::listfiles(uint dirnum, char *filespec, int tofile, long mode)
 					break;						/* big header */
 			if((!mode || !(useron.misc&EXPERT)) && !tofile && (!filespec[0]
 				|| (strchr(filespec,'*') || strchr(filespec,'?')))) {
-				sprintf(hdr,"%s%s.HDR",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+				sprintf(hdr,"%s%s.hdr",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 				if(fexist(hdr))
 					printfile(hdr,0);	/* Use DATA\DIRS\<CODE>.HDR */
 				else {
@@ -583,7 +583,7 @@ int sbbs_t::batchflagprompt(uint dirnum, file_t* bf, uint total
 		ch=getkey(K_UPPER);
 		clearline();
 		if(ch=='?') {
-			menu("BATFLAG");
+			menu("batflag");
 			if(lncntr)
 				pause();
 			return(2); }
@@ -828,7 +828,7 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode)
     file_t	f;
 	struct	tm * tm;
 
-	sprintf(str,"%sXFER.IXT",cfg.data_dir);
+	sprintf(str,"%sxfer.ixt",cfg.data_dir);
 	if(mode==FI_USERXFER && flength(str)>0L) {
 		if((file=nopen(str,O_RDONLY))==-1) {
 			errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
@@ -844,7 +844,7 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode)
 			errormsg(WHERE,ERR_READ,str,usrxfrlen);
 			return(0); }
 		close(file); }
-	sprintf(str,"%s%s.IXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.ixb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if((file=nopen(str,O_RDONLY))==-1)
 		return(0);
 	l=filelength(file);
@@ -863,7 +863,7 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode)
 			FREE(usrxfrbuf);
 		return(0); }
 	close(file);
-	sprintf(str,"%s%s.DAT",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.dat",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if((file=nopen(str,O_RDONLY))==-1) {
 		errormsg(WHERE,ERR_READ,str,O_RDONLY);
 		FREE((char *)ixbbuf);
@@ -1168,7 +1168,7 @@ int sbbs_t::listfileinfo(uint dirnum, char *filespec, long mode)
 					found=-1;
 					break; }
 				continue; }
-			menu("DLPROT");
+			menu("dlprot");
 			openfile(&f);
 			SYNC;
 			mnemonics(text[ProtocolBatchQuitOrNext]);
diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c
index 0b67115358adb116a9403020f36e1f40e63a6b48..d7d53ec26ff0dafc9b7748785619b9e1ec61a9c8 100644
--- a/src/sbbs3/load_cfg.c
+++ b/src/sbbs3/load_cfg.c
@@ -74,7 +74,7 @@ BOOL DLLCALL load_cfg(scfg_t* cfg, char* text[])
 		return(FALSE);
 
 	if(text!=NULL) {
-		strcpy(fname,"TEXT.DAT");
+		strcpy(fname,"text.dat");
 		sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 		if((instream=fopen(str,"rb"/*O_RDONLY*/))==NULL) {
 			lprintf(txt.openerr,str);
@@ -145,7 +145,7 @@ char *readtext(long *line,FILE *stream)
 	p=strrchr(buf,'"');
 	if(!p) {
 		if(line) {
-			lprintf("No quotation marks in line %d of TEXT.DAT",*line);
+			lprintf("No quotation marks in line %d of text.dat",*line);
 			return(NULL); }
 		return(NULL); }
 	if(*(p+1)=='\\')	/* merge multiple lines */
@@ -222,7 +222,7 @@ char *readtext(long *line,FILE *stream)
 		str[j]=buf[i++]; }
 	str[j]=0;
 	if((p=(char *)MALLOC(j+1))==NULL) {
-		lprintf("Error allocating %u bytes of memory from TEXT.DAT",j);
+		lprintf("Error allocating %u bytes of memory from text.dat",j);
 		return(NULL); }
 	strcpy(p,str);
 	return(p);
@@ -238,7 +238,7 @@ BOOL read_attr_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 	long	offset=0;
     FILE    *instream;
 
-	strcpy(fname,"ATTR.CFG");
+	strcpy(fname,"attr.cfg");
 	sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 	if((instream=fopen(str,"rb" /*O_RDONLY*/))==NULL) {	/* was fnopen */
 		lprintf(txt->openerr,str);
diff --git a/src/sbbs3/logon.cpp b/src/sbbs3/logon.cpp
index 83048f0c100e9c8b81069c2806114d10752549d9..58ca08047653504ae343e20bf0268733ded8117f 100644
--- a/src/sbbs3/logon.cpp
+++ b/src/sbbs3/logon.cpp
@@ -73,7 +73,7 @@ bool sbbs_t::logon()
 		return(false);
 	if(cur_rate<cfg.node_minbps && !(useron.exempt&FLAG('M'))) {
 		bprintf(text[MinimumModemSpeed],cfg.node_minbps);
-		sprintf(str,"%sTOOSLOW.MSG",cfg.text_dir);
+		sprintf(str,"%stooslow.msg",cfg.text_dir);
 		if(fexist(str))
 			printfile(str,0);
 		sprintf(str,"(%04u)  %-25s  Modem speed: %u<%u"
@@ -196,9 +196,9 @@ bool sbbs_t::logon()
 	last_ns_time=ns_time=useron.ns_time;
 	// ns_time-=(useron.tlast*60); /* file newscan time == last logon time */
 	delfiles(cfg.temp_dir,"*.*");
-	sprintf(str,"%sMSGS/N%3.3u.MSG",cfg.data_dir,cfg.node_num);
+	sprintf(str,"%smsgs/n%3.3u.msg",cfg.data_dir,cfg.node_num);
 	remove(str);            /* remove any pending node messages */
-	sprintf(str,"%sMSGS/N%3.3u.IXB",cfg.data_dir,cfg.node_num);
+	sprintf(str,"%smsgs/n%3.3u.ixb",cfg.data_dir,cfg.node_num);
 	remove(str);			/* remove any pending node message indices */
 
 	if(!SYSOP && online==ON_REMOTE) {
@@ -225,7 +225,7 @@ bool sbbs_t::logon()
 		useron.ltoday++;
 
 	gettimeleft();
-	sprintf(str,"%sFILE/%04u.DWN",cfg.data_dir,useron.number);
+	sprintf(str,"%sfile/%04u.dwn",cfg.data_dir,useron.number);
 	batch_add_list(str);
 	if(!qwklogon) { 	 /* QWK Nodes don't go through this */
 
@@ -362,7 +362,7 @@ bool sbbs_t::logon()
 					useron.misc&=~NETMAIL;
 			}
 			if(cfg.new_sif[0]) {
-				sprintf(str,"%sUSER/%4.4u.DAT",cfg.data_dir,useron.number);
+				sprintf(str,"%suser/%4.4u.dat",cfg.data_dir,useron.number);
 				if(flength(str)<1L)
 					create_sif_dat(cfg.new_sif,str); } 
 		}
@@ -496,9 +496,9 @@ bool sbbs_t::logon()
 }
 
 /****************************************************************************/
-/* Checks the system DSTS.DAB to see if it is a new day, if it is, all the  */
-/* nodes' and the system's CSTS.DAB are added to, and the DSTS.DAB's daily  */
-/* stats are cleared. Also increments the logon values in DSTS.DAB if       */
+/* Checks the system dsts.dab to see if it is a new day, if it is, all the  */
+/* nodes' and the system's csts.dab are added to, and the dsts.dab's daily  */
+/* stats are cleared. Also increments the logon values in dsts.dab if       */
 /* applicable.                                                              */
 /****************************************************************************/
 ulong sbbs_t::logonstats()
@@ -511,7 +511,7 @@ ulong sbbs_t::logonstats()
     node_t node;
 	struct tm * tm, update_tm;
 
-	sprintf(str,"%sDSTS.DAB",cfg.ctrl_dir);
+	sprintf(str,"%sdsts.dab",cfg.ctrl_dir);
 	if((dsts=nopen(str,O_RDWR))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDWR);
 		return(0L); }
@@ -544,10 +544,10 @@ ulong sbbs_t::logonstats()
 				getnodedat(i,&node,1);
 				node.misc|=NODE_EVENT;
 				putnodedat(i,&node); }
-			sprintf(str,"%sDSTS.DAB",i ? cfg.node_path[i-1] : cfg.ctrl_dir);
+			sprintf(str,"%sdsts.dab",i ? cfg.node_path[i-1] : cfg.ctrl_dir);
 			if((dsts=nopen(str,O_RDWR))==-1) /* node doesn't have stats yet */
 				continue;
-			sprintf(str,"%sCSTS.DAB",i ? cfg.node_path[i-1] : cfg.ctrl_dir);
+			sprintf(str,"%scsts.dab",i ? cfg.node_path[i-1] : cfg.ctrl_dir);
 			if((csts=nopen(str,O_WRONLY|O_APPEND|O_CREAT))==-1) {
 				close(dsts);
 				errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_APPEND|O_CREAT);
@@ -599,7 +599,7 @@ ulong sbbs_t::logonstats()
 		return(0);
 
 	for(i=0;i<2;i++) {
-		sprintf(str,"%sDSTS.DAB",i ? cfg.ctrl_dir : cfg.node_dir);
+		sprintf(str,"%sdsts.dab",i ? cfg.ctrl_dir : cfg.node_dir);
 		if((dsts=nopen(str,O_RDWR))==-1) {
 			errormsg(WHERE,ERR_OPEN,str,O_RDWR);
 			return(0L); }
diff --git a/src/sbbs3/logout.cpp b/src/sbbs3/logout.cpp
index 38b4d5ccd8db91e41bb18b31157f4e2c71b68347..695797c758d4e0b138bd6c57b962539977849c64 100644
--- a/src/sbbs3/logout.cpp
+++ b/src/sbbs3/logout.cpp
@@ -86,7 +86,7 @@ void sbbs_t::logout()
 		batdn_total=0; }
 
 	if(batdn_total) {
-		sprintf(str,"%sFILE/%04u.DWN",cfg.data_dir,useron.number);
+		sprintf(str,"%sfile/%04u.dwn",cfg.data_dir,useron.number);
 		if((stream=fnopen(NULL,str,O_WRONLY|O_TRUNC|O_CREAT))!=NULL) {
 			for(i=0;i<(int)batdn_total;i++)
 				fprintf(stream,"%s\r\n",batdn_name[i]);
@@ -130,7 +130,7 @@ void sbbs_t::logout()
 	if(cfg.logout_mod[0])
 		exec_bin(cfg.logout_mod,&main_csi);
 	backout();
-	sprintf(str,"%sMSGS/%4.4u.MSG",cfg.data_dir,useron.number);
+	sprintf(str,"%smsgs/%4.4u.msg",cfg.data_dir,useron.number);
 	if(!flength(str))		/* remove any 0 byte message files */
 		remove(str);
 
@@ -217,7 +217,7 @@ void sbbs_t::backout()
 	long length,l;
 	file_t f;
 
-	sprintf(str,"%sBACKOUT.DAB",cfg.node_dir);
+	sprintf(str,"%sbackout.dab",cfg.node_dir);
 	if(flength(str)<1L) {
 		remove(str);
 		return; }
@@ -270,7 +270,7 @@ void sbbs_t::logofflist()
 	tm=gmtime(&logontime);
 	if(tm==NULL)
 		return;
-	sprintf(str,"%sLOGS/%2.2d%2.2d%2.2d.LOL",cfg.data_dir,tm->tm_mon+1,tm->tm_mday
+	sprintf(str,"%slogs/%2.2d%2.2d%2.2d.LOL",cfg.data_dir,tm->tm_mon+1,tm->tm_mday
 		,TM_YEAR(tm->tm_year));
 	if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_APPEND);
diff --git a/src/sbbs3/mail.cpp b/src/sbbs3/mail.cpp
index 1a922ed10c8878bbffa54f86c5700b2f2f1bb38a..0ad1b8a7e3d76903e32ea55daa1a3df74b864de0 100644
--- a/src/sbbs3/mail.cpp
+++ b/src/sbbs3/mail.cpp
@@ -50,9 +50,9 @@ int DLLCALL getmail(scfg_t* cfg, int usernumber, BOOL sent)
     idxrec_t idx;
 	smb_t	smb;
 
-	sprintf(smb.file,"%sMAIL",cfg->data_dir);
+	sprintf(smb.file,"%smail",cfg->data_dir);
 	smb.retry_time=cfg->smb_retry_time;
-	sprintf(str,"%s.SID",smb.file);
+	sprintf(str,"%s.sid",smb.file);
 	l=flength(str);
 	if(l<sizeof(idxrec_t))
 		return(0);
@@ -89,13 +89,13 @@ void sbbs_t::delfattach(uint to, char *title)
 		sp=strrchr(tp,'/');              /* sp is slash pointer */
 		if(!sp) sp=strrchr(tp,'\\');
 		if(sp) tp=sp+1;
-		sprintf(str2,"%sFILE/%04u.IN/%s"  /* str2 is path/fname */
+		sprintf(str2,"%sfile/%04u.in/%s"  /* str2 is path/fname */
 			,cfg.data_dir,to,tp);
 		remove(str2);
 		if(!p)
 			break;
 		tp=p+1; }
-	sprintf(str,"%sFILE/%04u.IN",cfg.data_dir,to);
+	sprintf(str,"%sfile/%04u.in",cfg.data_dir,to);
 	rmdir(str);                     /* remove the dir if it's empty */
 }
 
@@ -279,7 +279,7 @@ void sbbs_t::delallmail(uint usernumber)
 	if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) {
 		errormsg(WHERE,ERR_OPEN,"MAIL",i);
 		return; }
-	sprintf(smb.file,"%sMAIL",cfg.data_dir);
+	sprintf(smb.file,"%smail",cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error);
diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c
index 7f10cc4d8f5b3fe8de17b436a4733f346adfd9ad..7f462e18840dec9f706d827f4a34ad76404fce2d 100644
--- a/src/sbbs3/mailsrvr.c
+++ b/src/sbbs3/mailsrvr.c
@@ -313,7 +313,7 @@ static char* alias(char* name, char* alias)
 	char	fname[MAX_PATH];
 	FILE*	fp;
 
-	sprintf(fname,"%sALIAS.CFG",scfg.ctrl_dir);
+	sprintf(fname,"%salias.cfg",scfg.ctrl_dir);
 	if((file=sopen(fname,O_RDONLY|O_BINARY,SH_DENYNO))==-1)
 		return(name);
 
@@ -586,7 +586,7 @@ static void pop3_thread(void* arg)
 		memset(&smb,0,sizeof(smb));
 		memset(&msg,0,sizeof(msg));
 
-		sprintf(smb.file,"%sMAIL",scfg.data_dir);
+		sprintf(smb.file,"%smail",scfg.data_dir);
 		if((i=smb_open(&smb))!=0) {
 			lprintf("Error %d (%s) opening %s",i,smb.last_error,smb.file);
 			sockprintf(socket,"-ERR %d opening %s",i,smb.file);
@@ -1210,7 +1210,7 @@ static void smtp_thread(void* arg)
 
 				if(msgtxt!=NULL) {
 					rewind(msgtxt);
-					sprintf(smb.file,"%sMAIL", scfg.data_dir);
+					sprintf(smb.file,"%smail", scfg.data_dir);
 					smb.retry_time=scfg.smb_retry_time;
 					if((i=smb_open(&smb))!=0) {
 						lprintf("%04d !SMTP ERROR %d (%s) opening %s"
@@ -1245,7 +1245,7 @@ static void smtp_thread(void* arg)
 					if((i=smb_open_da(&smb))!=0) {
 						smb_unlocksmbhdr(&smb);
 						smb_close(&smb);
-						lprintf("%04d !SMTP ERROR %d (%s) opening %s.SDA"
+						lprintf("%04d !SMTP ERROR %d (%s) opening %s.sda"
 							,socket, i, smb.last_error, smb.file);
 						sockprintf(socket, "452 Insufficient system storage");
 						continue; }
@@ -1943,7 +1943,7 @@ static void sendmail_thread(void* arg)
 
 		mswait(3000);
 
-		sprintf(smb.file,"%sMAIL",scfg.data_dir);
+		sprintf(smb.file,"%smail",scfg.data_dir);
 		if((i=smb_open(&smb))!=0) 
 			continue;
 		if((i=smb_locksmbhdr(&smb))!=0)
diff --git a/src/sbbs3/netmail.cpp b/src/sbbs3/netmail.cpp
index c3aad868025d3053b70b8eb92935d7b78e94d70c..eb569e1360e077930cb46463c7d102c9d3686860 100644
--- a/src/sbbs3/netmail.cpp
+++ b/src/sbbs3/netmail.cpp
@@ -98,15 +98,15 @@ bool sbbs_t::inetmail(char *into, char *subj, long mode)
 	action=NODE_SMAL;
 	nodesync();
 
-	sprintf(msgpath,"%sNETMAIL.MSG",cfg.node_dir);
+	sprintf(msgpath,"%snetmail.msg",cfg.node_dir);
 	if(!writemsg(msgpath,nulstr,title,mode,0,into)) {
 		bputs(text[Aborted]);
 		return(false); }
 
 	if(mode&WM_FILE) {
-		sprintf(str2,"%sFILE/%04u.OUT",cfg.data_dir,useron.number);
+		sprintf(str2,"%sfile/%04u.out",cfg.data_dir,useron.number);
 		_mkdir(str2);
-		sprintf(str2,"%sFILE/%04u.OUT/%s",cfg.data_dir,useron.number,title);
+		sprintf(str2,"%sfile/%04u.out/%s",cfg.data_dir,useron.number,title);
 		if(fexist(str2)) {
 			bputs(text[FileAlreadyThere]);
 			remove(msgpath);
@@ -121,7 +121,7 @@ bool sbbs_t::inetmail(char *into, char *subj, long mode)
 			strcat(str,title);
 			mv(str,str2,1); }
 		else { /* Remote */
-			menu("ULPROT");
+			menu("ulprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(str,"Q");
 			for(x=0;x<cfg.total_prots;x++)
@@ -150,7 +150,7 @@ bool sbbs_t::inetmail(char *into, char *subj, long mode)
 	if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) {
 		errormsg(WHERE,ERR_OPEN,"MAIL",i);
 		return(false); }
-	sprintf(smb.file,"%sMAIL",cfg.data_dir);
+	sprintf(smb.file,"%smail",cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		smb_stack(&smb,SMB_STACK_POP);
@@ -329,7 +329,7 @@ bool sbbs_t::qnetmail(char *into, char *subj, long mode)
 	action=NODE_SMAL;
 	nodesync();
 
-	sprintf(msgpath,"%sNETMAIL.MSG",cfg.node_dir);
+	sprintf(msgpath,"%snetmali.msg",cfg.node_dir);
 	if(!writemsg(msgpath,nulstr,title,mode|WM_QWKNET,0,to)) {
 		bputs(text[Aborted]);
 		return(false); }
@@ -337,7 +337,7 @@ bool sbbs_t::qnetmail(char *into, char *subj, long mode)
 	if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) {
 		errormsg(WHERE,ERR_OPEN,"MAIL",i);
 		return(false); }
-	sprintf(smb.file,"%sMAIL",cfg.data_dir);
+	sprintf(smb.file,"%smail",cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		smb_stack(&smb,SMB_STACK_POP);
diff --git a/src/sbbs3/newuser.cpp b/src/sbbs3/newuser.cpp
index eeca15271431b465a7fd711d973708ffedc24c67..48a3bd51e3f4e75ddfcfbb4982ea7ac969d3296c 100644
--- a/src/sbbs3/newuser.cpp
+++ b/src/sbbs3/newuser.cpp
@@ -53,7 +53,7 @@ void sbbs_t::newuser()
 
 	if(cur_rate<cfg.node_minbps) {
 		bprintf(text[MinimumModemSpeed],cfg.node_minbps);
-		sprintf(str,"%sTOOSLOW.MSG",cfg.text_dir);
+		sprintf(str,"%stooslow.msg",cfg.text_dir);
 		if(fexist(str))
 			printfile(str,0);
 		sprintf(str,"New user modem speed: %lu<%u"
@@ -88,7 +88,7 @@ void sbbs_t::newuser()
 			sprintf(tmp,"NUP Attempted: '%s'",str);
 			logline("N!",tmp); }
 		if(c==4) {
-			sprintf(str,"%sNUPGUESS.MSG",cfg.text_dir);
+			sprintf(str,"%snupguess.msg",cfg.text_dir);
 			if(fexist(str))
 				printfile(str,P_NOABORT);
 			hangup();
@@ -272,17 +272,17 @@ void sbbs_t::newuser()
 	logline("N",str);
 	if(!online) return;
 	CLS;
-	sprintf(str,"%sSBBS.MSG",cfg.text_dir);
+	sprintf(str,"%ssbbs.msg",cfg.text_dir);
 	printfile(str,P_NOABORT);
 	if(lncntr)
 		pause();
 	CLS;
-	sprintf(str,"%sSYSTEM.MSG",cfg.text_dir);
+	sprintf(str,"%ssystem.msg",cfg.text_dir);
 	printfile(str,P_NOABORT);
 	if(lncntr)
 		pause();
 	CLS;
-	sprintf(str,"%sNEWUSER.MSG",cfg.text_dir);
+	sprintf(str,"%snewuser.msg",cfg.text_dir);
 	printfile(str,P_NOABORT);
 	if(lncntr)
 		pause();
@@ -358,7 +358,7 @@ void sbbs_t::newuser()
 
 	i=1;
 	bputs(text[CheckingSlots]);
-	sprintf(str,"%s/USER/NAME.DAT",cfg.data_dir);
+	sprintf(str,"%s/user/name.dat",cfg.data_dir);
 	if(fexist(str)) {
 		if((stream=fnopen(&file,str,O_RDONLY))==NULL) {
 			errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
@@ -392,7 +392,7 @@ void sbbs_t::newuser()
 	putusername(useron.number,useron.alias);
 	logline(nulstr,"Wrote user data");
 	if(cfg.new_sif[0]) {
-		sprintf(str,"%sUSER/%4.4u.DAT",cfg.data_dir,useron.number);
+		sprintf(str,"%suser/%4.4u.dat",cfg.data_dir,useron.number);
 		create_sif_dat(cfg.new_sif,str); }
 	if(!(cfg.uq&UQ_NODEF))
 		maindflts(&useron);
@@ -400,7 +400,7 @@ void sbbs_t::newuser()
 	delallmail(useron.number);
 
 	if(useron.number!=1 && cfg.node_valuser) {
-		sprintf(str,"%sFEEDBACK.MSG",cfg.text_dir);
+		sprintf(str,"%sfeedback.msg",cfg.text_dir);
 		CLS;
 		printfile(str,P_NOABORT);
 		sprintf(str,text[NewUserFeedbackHdr]
@@ -422,19 +422,19 @@ void sbbs_t::newuser()
 				putusername(useron.number,nulstr);
 				return; } } }
 
-	sprintf(str,"%sFILE/%04u.IN",cfg.data_dir,useron.number);  /* delete any files */
+	sprintf(str,"%sfile/%04u.IN",cfg.data_dir,useron.number);  /* delete any files */
 	delfiles(str,"*.*");                                    /* waiting for user */
 	rmdir(str);
 	sprintf(tmp,"%04u.*",useron.number);
-	sprintf(str,"%sFILE",cfg.data_dir);
+	sprintf(str,"%sfile",cfg.data_dir);
 	delfiles(str,tmp);
 
 	answertime=starttime=time(NULL);	  /* set answertime to now */
-	sprintf(str,"%sUSER/PTRS/%04u.IXB",cfg.data_dir,useron.number); /* msg ptrs */
+	sprintf(str,"%suser/ptrs/%04u.ixb",cfg.data_dir,useron.number); /* msg ptrs */
 	remove(str);
-	sprintf(str,"%sMSGS/%04u.MSG",cfg.data_dir,useron.number); /* delete short msg */
+	sprintf(str,"%smsgs/%04u.msg",cfg.data_dir,useron.number); /* delete short msg */
 	remove(str);
-	sprintf(str,"%sUSER/%04u.MSG",cfg.data_dir,useron.number); /* delete ex-comment */
+	sprintf(str,"%suser/%04u.msg",cfg.data_dir,useron.number); /* delete ex-comment */
 	remove(str);
 	if(cfg.newuser_mod[0])
 		exec_bin(cfg.newuser_mod,&main_csi);
diff --git a/src/sbbs3/nodedefs.h b/src/sbbs3/nodedefs.h
index 2a177d266f33aaa2c7ba358b22030fe335ee92b9..430755cf6c8d4f1c6a1e64647e10a10515ebd577 100644
--- a/src/sbbs3/nodedefs.h
+++ b/src/sbbs3/nodedefs.h
@@ -110,7 +110,7 @@ enum {                              /* Node Action */
 
 #define SIZEOF_NODE_T 15			/* Must == sizeof(node_t) */
 
-typedef struct {					/* Node information kept in NODE.DAB */
+typedef struct {					/* Node information kept in node.dab */
     uchar   status,                 /* Current Status of Node */
             errors,                 /* Number of Critical Errors */
             action;                 /* Action User is doing on Node */
diff --git a/src/sbbs3/pack_qwk.cpp b/src/sbbs3/pack_qwk.cpp
index 619bee8057a70b8699462ad1006b891341ad8c8b..17d48a35f7e7179ea0bfa9a2d50086fef4b78b1e 100644
--- a/src/sbbs3/pack_qwk.cpp
+++ b/src/sbbs3/pack_qwk.cpp
@@ -70,7 +70,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 		ex|=EX_OFFLINE;
 
 	delfiles(cfg.temp_dir,"*.*");
-	sprintf(str,"%sFILE/%04u.QWK",cfg.data_dir,useron.number);
+	sprintf(str,"%sfile/%04u.qwk",cfg.data_dir,useron.number);
 	if(fexist(str)) {
 		for(k=0;k<cfg.total_fextrs;k++)
 			if(!stricmp(cfg.fextr[k]->ext,useron.tmpext)
@@ -150,7 +150,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 			"%sFILES\r\n"
 			"%sATTACH\r\n"
 			"%sOWN\r\n"
-			"%sMAIL\r\n"
+			"%smail\r\n"
 			"%sDELMAIL\r\n"
 			"%sCTRL-A\r\n"
 			"%sFREQ\r\n"
@@ -221,7 +221,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 		personal=NULL;
 
 	if(useron.qwk&(QWK_EMAIL|QWK_ALLMAIL) /* && !prepack */) {
-		sprintf(smb.file,"%sMAIL",cfg.data_dir);
+		sprintf(smb.file,"%smail",cfg.data_dir);
 		smb.retry_time=cfg.smb_retry_time;
 		if((i=smb_open(&smb))!=0) {
 			fclose(qwk);
@@ -266,7 +266,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 					continue;
 
 				if(msg.hdr.auxattr&MSG_FILEATTACH && useron.qwk&QWK_ATTACH) {
-					sprintf(str,"%sFILE/%04u.IN/%s"
+					sprintf(str,"%sfile/%04u.in/%s"
 						,cfg.data_dir,useron.number,msg.subj);
 					sprintf(tmp,"%s%s",cfg.temp_dir,msg.subj);
 					if(fexist(str) && !fexist(tmp))
@@ -443,10 +443,10 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 		return(false);
 
 	if(/*!prepack && */ useron.rest&FLAG('Q')) { /* If QWK Net node, check for files */
-		sprintf(str,"%sQNET/%s.OUT/",cfg.data_dir,useron.alias);
+		sprintf(str,"%sqnet/%s.out/",cfg.data_dir,useron.alias);
 		dir=opendir(str);
 		while((dirent=readdir(dir))!=NULL) {    /* Move files into temp dir */
-			sprintf(str,"%sQNET/%s.OUT/%s",cfg.data_dir,useron.alias,dirent->d_name);
+			sprintf(str,"%sqnet/%s.out/%s",cfg.data_dir,useron.alias,dirent->d_name);
 			if(isdir(str))
 				continue;
 			sprintf(tmp2,"%s%s",cfg.temp_dir,dirent->d_name);
@@ -553,7 +553,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 		return(true);
 
 	l=flength(packet);
-	sprintf(str,"%s.QWK",cfg.sys_id);
+	sprintf(str,"%s.qwk",cfg.sys_id);
 	bprintf(text[FiFilename],str);
 	bprintf(text[FiFileSize],ultoac(l,tmp));
 	if(l>0L && cur_cps)
@@ -568,7 +568,7 @@ bool sbbs_t::pack_qwk(char *packet, ulong *msgcnt, bool prepack)
 	}
 
 	if(useron.rest&FLAG('Q')) {
-		sprintf(str,"%s.QWK",cfg.sys_id);
+		sprintf(str,"%s.qwk",cfg.sys_id);
 		dir=opendir(cfg.temp_dir);
 		while((dirent=readdir(dir))!=NULL) {
 			if(!stricmp(str,dirent->d_name))	/* QWK packet */
diff --git a/src/sbbs3/pack_rep.cpp b/src/sbbs3/pack_rep.cpp
index a2317c7d473a5769e3e9c63414b96cc566c17c9f..0d1f222b70e451ac3e924088c230352f56a2dd18 100644
--- a/src/sbbs3/pack_rep.cpp
+++ b/src/sbbs3/pack_rep.cpp
@@ -60,7 +60,7 @@ bool sbbs_t::pack_rep(uint hubnum)
 
 	msgcnt=0L;
 	delfiles(cfg.temp_dir,"*.*");
-	sprintf(str,"%s%s.REP",cfg.data_dir,cfg.qhub[hubnum]->id);
+	sprintf(str,"%s%s.rep",cfg.data_dir,cfg.qhub[hubnum]->id);
 	if(fexist(str)) {
 		lprintf("Updating %s", str);
 		external(cmdstr(cfg.qhub[hubnum]->unpack,str,"*.*",NULL),EX_OFFLINE);
@@ -69,7 +69,7 @@ bool sbbs_t::pack_rep(uint hubnum)
 	/*************************************************/
 	/* Create SYSID.MSG, write header and leave open */
 	/*************************************************/
-	sprintf(str,"%s%s.MSG",cfg.temp_dir,cfg.qhub[hubnum]->id);
+	sprintf(str,"%s%s.msg",cfg.temp_dir,cfg.qhub[hubnum]->id);
 	if((rep=fnopen(&file,str,O_CREAT|O_WRONLY))==NULL) {
 		errormsg(WHERE,ERR_OPEN,str,O_CREAT|O_WRONLY);
 		return(false); }
@@ -82,7 +82,7 @@ bool sbbs_t::pack_rep(uint hubnum)
 	/*********************/
 	console|=CON_L_ECHO;
 
-	sprintf(smb.file,"%sMAIL",cfg.data_dir);
+	sprintf(smb.file,"%smail",cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		fclose(rep);
@@ -193,10 +193,12 @@ bool sbbs_t::pack_rep(uint hubnum)
 	fclose(rep);			/* close MESSAGE.DAT */
 	CRLF;
 							/* Look for extra files to send out */
-	sprintf(str,"%sQNET/%s.OUT",cfg.data_dir,cfg.qhub[hubnum]->id);
+	sprintf(str,"%sqnet/%s.out",cfg.data_dir,cfg.qhub[hubnum]->id);
+	strlwr(str);
 	dir=opendir(str);
 	while((dirent=readdir(dir))!=NULL) {
-		sprintf(str,"%sQNET/%s.OUT/%s",cfg.data_dir,cfg.qhub[hubnum]->id,dirent->d_name);
+		sprintf(str,"%sqnet/%s.out/%s",cfg.data_dir,cfg.qhub[hubnum]->id,dirent->d_name);
+		strlwr(str);
 		if(isdir(str))
 			continue;
 		sprintf(tmp2,"%s%s",cfg.temp_dir,dirent->d_name);
@@ -215,7 +217,7 @@ bool sbbs_t::pack_rep(uint hubnum)
 	/*******************/
 	/* Compress Packet */
 	/*******************/
-	sprintf(str,"%s%s.REP",cfg.data_dir,cfg.qhub[hubnum]->id);
+	sprintf(str,"%s%s.rep",cfg.data_dir,cfg.qhub[hubnum]->id);
 	sprintf(tmp2,"%s*.*",cfg.temp_dir);
 	i=external(cmdstr(cfg.qhub[hubnum]->pack,str,tmp2,NULL),EX_OFFLINE);
 	if(!fexist(str)) {
@@ -225,11 +227,12 @@ bool sbbs_t::pack_rep(uint hubnum)
 		else
 			errorlog("Couldn't compress REP packet");
 		return(false); }
-	sprintf(str,"%sQNET/%s.OUT/",cfg.data_dir,cfg.qhub[hubnum]->id);
+	sprintf(str,"%sqnet/%s.out/",cfg.data_dir,cfg.qhub[hubnum]->id);
+	strlwr(str);
 	delfiles(str,"*.*");
 
 	if(packedmail) {						/* Delete NetMail */
-		sprintf(smb.file,"%sMAIL",cfg.data_dir);
+		sprintf(smb.file,"%smail",cfg.data_dir);
 		smb.retry_time=cfg.smb_retry_time;
 		if((i=smb_open(&smb))!=0) {
 			errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error);
diff --git a/src/sbbs3/prntfile.cpp b/src/sbbs3/prntfile.cpp
index 801b9e625510e62c6778b48daa617389ffba22fe..d8723dbb3f2f9211a7feb3ad3675b78308f287c7 100644
--- a/src/sbbs3/prntfile.cpp
+++ b/src/sbbs3/prntfile.cpp
@@ -102,7 +102,6 @@ void sbbs_t::printtail(char *str, int lines, long mode)
 			rioctl(IOCM|ABORT);
 			rioctl(IOCS|ABORT); }
 		sys_status&=~SS_ABORT; }
-	strupr(str);
 	if(!tos) {
 		CRLF; }
 	if((file=nopen(str,O_RDONLY))==-1) {
@@ -148,19 +147,19 @@ void sbbs_t::menu(char *code)
 	if(menu_file[0])
 		strcpy(path,menu_file);
 	else {
-		sprintf(str,"%sMENU/",cfg.text_dir);
+		sprintf(str,"%smenu/",cfg.text_dir);
 		if(menu_dir[0]) {
 			strcat(str,menu_dir);
 			strcat(str,"/"); }
 		strcat(str,code);
 		strcat(str,".");
-		sprintf(path,"%s%s",str,useron.misc&WIP ? "WIP":"RIP");
+		sprintf(path,"%s%s",str,useron.misc&WIP ? "wip":"rip");
 		if(!(useron.misc&(RIP|WIP)) || !fexist(path)) {
-			sprintf(path,"%sMON",str);
+			sprintf(path,"%smon",str);
 			if((useron.misc&(COLOR|ANSI))!=ANSI || !fexist(path)) {
-				sprintf(path,"%sANS",str);
+				sprintf(path,"%sans",str);
 				if(!(useron.misc&ANSI) || !fexist(path))
-					sprintf(path,"%sASC",str); } } }
+					sprintf(path,"%sasc",str); } } }
 
 	printfile(path,P_OPENCLOSE);
 }
diff --git a/src/sbbs3/putnode.cpp b/src/sbbs3/putnode.cpp
index f9924d926b0cc55caf6703107563539df01d0788..2f201d7c043c62665f438ef613aac776b3c49b9d 100644
--- a/src/sbbs3/putnode.cpp
+++ b/src/sbbs3/putnode.cpp
@@ -38,7 +38,7 @@
 #include "sbbs.h"
 
 /****************************************************************************/
-/* Write the data from the structure 'node' into NODE.DAB  					*/
+/* Write the data from the structure 'node' into node.dab  					*/
 /* getnodedat(num,&node,1); must have been called before calling this func  */
 /*          NOTE: ------^   the indicates the node record has been locked   */
 /****************************************************************************/
@@ -89,7 +89,7 @@ void sbbs_t::putnmsg(int num, char *strin)
     int file,i;
     node_t node;
 
-	sprintf(str,"%sMSGS/N%3.3u.MSG",cfg.data_dir,num);
+	sprintf(str,"%smsgs/n%3.3u.msg",cfg.data_dir,num);
 	if((file=nopen(str,O_WRONLY|O_CREAT))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT);
 		return; }
diff --git a/src/sbbs3/qwk.cpp b/src/sbbs3/qwk.cpp
index 000f73cf8179e6b8d371f4e1f996417707390cfb..c658c4287bce3169d13886117152899454808c1e 100644
--- a/src/sbbs3/qwk.cpp
+++ b/src/sbbs3/qwk.cpp
@@ -148,7 +148,7 @@ int sbbs_t::qwk_route(char *inaddr, char *fulladdr)
 	p=strchr(node,SP);
 	if(p) *p=0;
 
-	sprintf(str,"%sQNET/ROUTE.DAT",cfg.data_dir);
+	sprintf(str,"%sqnet/route.dat",cfg.data_dir);
 	if((stream=fnopen(&file,str,O_RDONLY))==NULL)
 		return(0);
 
@@ -204,7 +204,7 @@ void sbbs_t::update_qwkroute(char *via)
 	if(via==NULL) {
 		if(!total_nodes)
 			return;
-		sprintf(str,"%sQNET/ROUTE.DAT",cfg.data_dir);
+		sprintf(str,"%sqnet/route.dat",cfg.data_dir);
 		if((stream=fnopen(&file,str,O_WRONLY|O_CREAT|O_TRUNC))!=NULL) {
 			t=time(NULL);
 			t-=(90L*24L*60L*60L);
@@ -231,7 +231,7 @@ void sbbs_t::update_qwkroute(char *via)
 		return; }
 
 	if(!total_nodes) {
-		sprintf(str,"%sQNET/ROUTE.DAT",cfg.data_dir);
+		sprintf(str,"%sqnet/route.dat",cfg.data_dir);
 		if((stream=fnopen(&file,str,O_RDONLY))!=NULL) {
 			while(!feof(stream)) {
 				if(!fgets(str,255,stream))
@@ -323,7 +323,8 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack)
 	smbmsg_t msg;
 
 	if(useron.rest&FLAG('Q')) {	// Was if(!prepack) only
-		sprintf(str,"%sQNET/%.8s.OUT/",cfg.data_dir,useron.alias);
+		sprintf(str,"%sqnet/%.8s.out/",cfg.data_dir,useron.alias);
+		strlwr(str);
 		delfiles(str,"*.*"); 
 	}
 
@@ -331,7 +332,7 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack)
 		logline("D-","Downloaded QWK packet");
 		posts_read+=msgcnt;
 
-		sprintf(str,"%sFILE/%04u.QWK",cfg.data_dir,useron.number);
+		sprintf(str,"%sfile/%04u.qwk",cfg.data_dir,useron.number);
 		remove(str);
 
 		if(!bi) {
@@ -341,7 +342,7 @@ void sbbs_t::qwk_success(ulong msgcnt, char bi, char prepack)
 	if(useron.rest&FLAG('Q'))
 		useron.qwk|=(QWK_EMAIL|QWK_ALLMAIL|QWK_DELMAIL);
 	if(useron.qwk&(QWK_EMAIL|QWK_ALLMAIL)) {
-		sprintf(smb.file,"%sMAIL",cfg.data_dir);
+		sprintf(smb.file,"%smail",cfg.data_dir);
 		smb.retry_time=cfg.smb_retry_time;
 		if((i=smb_open(&smb))!=0) {
 			errormsg(WHERE,ERR_OPEN,smb.file,i,smb.last_error);
@@ -426,7 +427,7 @@ void sbbs_t::qwk_sec()
 	while(online) {
 		if((useron.misc&(WIP|RIP) || !(useron.misc&EXPERT))
 			&& (useron.logons<2 || !(useron.rest&FLAG('Q'))))
-			menu("QWK");
+			menu("qwk");
 		action=NODE_TQWK;
 		ASYNC;
 		bputs(text[QWKPrompt]);
@@ -442,7 +443,7 @@ void sbbs_t::qwk_sec()
 			if((useron.misc&(WIP|RIP) || !(useron.misc&EXPERT))
 				&& !(useron.rest&FLAG('Q')))
 				continue;
-			menu("QWK");
+			menu("qwk");
 			continue; }
 		if(ch=='S') {
 			new_scan_cfg(SUB_CFG_NSCAN);
@@ -556,7 +557,7 @@ void sbbs_t::qwk_sec()
 
 
 		if(ch=='B') {   /* Bidirectional QWK and REP packet transfer */
-			sprintf(str,"%s%s.QWK",cfg.temp_dir,cfg.sys_id);
+			sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id);
 			if(!fexist(str) && !pack_qwk(str,&msgcnt,0)) {
 				for(i=0;i<cfg.total_subs;i++)
 					sub_ptr[i]=sav_ptr[i];
@@ -564,7 +565,7 @@ void sbbs_t::qwk_sec()
 				last_ns_time=ns_time;
 				continue; }
 			bprintf(text[UploadingREP],cfg.sys_id);
-			menu("BIPROT");
+			menu("biprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(tmp2,"Q");
 			for(i=0;i<cfg.total_prots;i++)
@@ -584,16 +585,16 @@ void sbbs_t::qwk_sec()
 			if(i<cfg.total_prots) {
 				batup_total=1;
 				batup_dir[0]=cfg.total_dirs;
-				sprintf(batup_name[0],"%s.REP",cfg.sys_id);
+				sprintf(batup_name[0],"%s.rep",cfg.sys_id);
 				batdn_total=1;
 				batdn_dir[0]=cfg.total_dirs;
-				sprintf(batdn_name[0],"%s.QWK",cfg.sys_id);
+				sprintf(batdn_name[0],"%s.qwk",cfg.sys_id);
 				if(!create_batchdn_lst() || !create_batchup_lst()
 					|| !create_bimodem_pth()) {
 					batup_total=batdn_total=0;
 					continue; }
-				sprintf(str,"%s%s.QWK",cfg.temp_dir,cfg.sys_id);
-				sprintf(tmp2,"%s.QWK",cfg.sys_id);
+				sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id);
+				sprintf(tmp2,"%s.qwk",cfg.sys_id);
 				padfname(tmp2,fd.name);
 				sprintf(str,"%sBATCHDN.LST",cfg.node_dir);
 				sprintf(tmp2,"%sBATCHUP.LST",cfg.node_dir);
@@ -618,7 +619,7 @@ void sbbs_t::qwk_sec()
 					qwk_success(msgcnt,1,0);
 					for(i=0;i<cfg.total_subs;i++)
 						sav_ptr[i]=sub_ptr[i]; }
-				sprintf(str,"%s%s.QWK",cfg.temp_dir,cfg.sys_id);
+				sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id);
 				remove(str);
 				unpack_rep();
 				delfiles(cfg.temp_dir,"*.*");
@@ -630,7 +631,7 @@ void sbbs_t::qwk_sec()
 					sub_ptr[i]=sav_ptr[i]; } }
 
 		else if(ch=='D') {   /* Download QWK Packet of new messages */
-			sprintf(str,"%s%s.QWK",cfg.temp_dir,cfg.sys_id);
+			sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id);
 			if(!fexist(str) && !pack_qwk(str,&msgcnt,0)) {
 				for(i=0;i<cfg.total_subs;i++)
 					sub_ptr[i]=sav_ptr[i];
@@ -645,7 +646,7 @@ void sbbs_t::qwk_sec()
 					last_ns_time=ns_time;
 					continue; }
 				backslashcolon(str);
-				sprintf(tmp2,"%s%s.QWK",str,cfg.sys_id);
+				sprintf(tmp2,"%s%s.qwk",str,cfg.sys_id);
 				if(fexist(tmp2)) {
 					for(i=0;i<10;i++) {
 						sprintf(tmp2,"%s%s.QW%d",str,cfg.sys_id,i);
@@ -657,7 +658,7 @@ void sbbs_t::qwk_sec()
 						for(i=0;i<cfg.total_subs;i++)
 							sub_ptr[i]=sav_ptr[i];
 						continue; } }
-				sprintf(tmp,"%s%s.QWK",cfg.temp_dir,cfg.sys_id);
+				sprintf(tmp,"%s%s.qwk",cfg.temp_dir,cfg.sys_id);
 				if(mv(tmp,tmp2,0)) { /* unsuccessful */
 					for(i=0;i<cfg.total_subs;i++)
 						sub_ptr[i]=sav_ptr[i];
@@ -672,7 +673,7 @@ void sbbs_t::qwk_sec()
 			/***************/
 			/* Send Packet */
 			/***************/
-			menu("DLPROT");
+			menu("dlprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(tmp2,"Q");
 			for(i=0;i<cfg.total_prots;i++)
@@ -691,8 +692,8 @@ void sbbs_t::qwk_sec()
 					&& chk_ar(cfg.prot[i]->ar,&useron))
 					break;
 			if(i<cfg.total_prots) {
-				sprintf(str,"%s%s.QWK",cfg.temp_dir,cfg.sys_id);
-				sprintf(tmp2,"%s.QWK",cfg.sys_id);
+				sprintf(str,"%s%s.qwk",cfg.temp_dir,cfg.sys_id);
+				sprintf(tmp2,"%s.qwk",cfg.sys_id);
 				padfname(tmp2,fd.name);
 				j=protocol(cmdstr(cfg.prot[i]->dlcmd,str,nulstr,NULL),0);
 				if(cfg.prot[i]->misc&PROT_DSZLOG) {
@@ -742,9 +743,9 @@ void sbbs_t::qwk_sec()
 				if(!getstr(str,60,K_LINE|K_UPPER))
 					continue;
 				backslashcolon(str);
-				sprintf(tmp,"%s.REP",cfg.sys_id);
+				sprintf(tmp,"%s.rep",cfg.sys_id);
 				strcat(str,tmp);
-				sprintf(tmp,"%s%s.REP",cfg.temp_dir,cfg.sys_id);
+				sprintf(tmp,"%s%s.rep",cfg.temp_dir,cfg.sys_id);
 				if(!mv(str,tmp,0))
 					unpack_rep();
 				delfiles(cfg.temp_dir,"*.*");
@@ -753,7 +754,7 @@ void sbbs_t::qwk_sec()
 			/******************/
 			/* Receive Packet */
 			/******************/
-			menu("ULPROT");
+			menu("ulprot");
 			mnemonics(text[ProtocolOrQuit]);
 			strcpy(tmp2,"Q");
 			for(i=0;i<cfg.total_prots;i++)
@@ -769,7 +770,7 @@ void sbbs_t::qwk_sec()
 					break;
 			if(i>=cfg.total_prots)	/* This shouldn't happen */
 				continue;
-			sprintf(str,"%s%s.REP",cfg.temp_dir,cfg.sys_id);
+			sprintf(str,"%s%s.rep",cfg.temp_dir,cfg.sys_id);
 			protocol(cmdstr(cfg.prot[i]->ulcmd,str,nulstr,NULL),0);
 			unpack_rep();
 			delfiles(cfg.temp_dir,"*.*");
diff --git a/src/sbbs3/qwknodes.c b/src/sbbs3/qwknodes.c
index 6575fab9110f34b3e2c69d00e7f8aef3034c49a1..f141ab82411f7676478a845f252ec0fec83c7c67 100644
--- a/src/sbbs3/qwknodes.c
+++ b/src/sbbs3/qwknodes.c
@@ -1,6 +1,6 @@
 /* QWKNODES.C */
 
-/* Synchronet QWKnet node list or ROUTE.DAT file generator */
+/* Synchronet QWKnet node list or route.dat file generator */
 
 /* $Id$ */
 
@@ -323,14 +323,14 @@ FREE(buf);
 
 char *usage="\nusage: qwknodes [/opts] cmds"
 			"\n"
-			"\n cmds: r  =  create ROUTE.DAT"
-			"\n       u  =  create USERS.DAT"
-			"\n       n  =  create NODES.DAT"
+			"\n cmds: r  =  create route.dat"
+			"\n       u  =  create users.dat"
+			"\n       n  =  create nodes.dat
 			"\n"
 			"\n opts: f  =  format addresses for nodes that feed from this system"
 			"\n       a  =  append existing output files"
-			"\n       t  =  include tag lines in NODES.DAT"
-			"\n       l  =  include local users in USERS.DAT"
+			"\n       t  =  include tag lines in nodes.dat
+			"\n       l  =  include local users in users.dat
 			"\n       m# =  maximum message age set to # days"
 			"\n";
 
@@ -407,18 +407,18 @@ else
 	o_mode=O_WRONLY|O_CREAT|O_TRUNC;
 
 if(cmd&NODES)
-	if((nodes=fnopen(&i,"NODES.DAT",o_mode))==NULL) {
-		printf("\7\nError opening NODES.DAT\n");
+	if((nodes=fnopen(&i,"nodes.dat",o_mode))==NULL) {
+		printf("\7\nError opening nodes.dat\n");
 		exit(1); }
 
 if(cmd&USERS)
-	if((users=fnopen(&i,"USERS.DAT",o_mode))==NULL) {
-		printf("\7\nError opening USERS.DAT\n");
+	if((users=fnopen(&i,"users.dat",o_mode))==NULL) {
+		printf("\7\nError opening users.dat\n");
         exit(1); }
 
 if(cmd&ROUTE)
-	if((route=fnopen(&i,"ROUTE.DAT",o_mode))==NULL) {
-		printf("\7\nError opening ROUTE.DAT\n");
+	if((route=fnopen(&i,"route.dat",o_mode))==NULL) {
+		printf("\7\nError opening route.dat\n");
         exit(1); }
 
 if(!node_dir[0]) {
@@ -428,8 +428,6 @@ if(!node_dir[0]) {
 		exit(1); }
 	strcpy(node_dir,p); }
 
-strupr(node_dir);
-
 if(node_dir[strlen(node_dir)-1]!='\\')
 	strcat(node_dir,"\\");
 
diff --git a/src/sbbs3/readmail.cpp b/src/sbbs3/readmail.cpp
index 770af888b9dea10c2a820ae0466f161ef31d834d..dee2ebcf87b24b5c1c7d6648f41ab8fe004170b4 100644
--- a/src/sbbs3/readmail.cpp
+++ b/src/sbbs3/readmail.cpp
@@ -61,7 +61,7 @@ void sbbs_t::readmail(uint usernumber, int which)
 	if((i=smb_stack(&smb,SMB_STACK_PUSH))!=0) {
 		errormsg(WHERE,ERR_OPEN,"MAIL",i);
 		return; }
-	sprintf(smb.file,"%sMAIL",cfg.data_dir);
+	sprintf(smb.file,"%smail",cfg.data_dir);
 	smb.retry_time=cfg.smb_retry_time;
 	if((i=smb_open(&smb))!=0) {
 		smb_stack(&smb,SMB_STACK_POP);
@@ -214,7 +214,7 @@ void sbbs_t::readmail(uint usernumber, int which)
 					if(!sp) sp=strrchr(tp,'\\');
 					if(sp) tp=sp+1;
 					padfname(tp,fd.name);
-					sprintf(str2,"%sFILE/%04u.IN/%s"  /* str2 is path/fname */
+					sprintf(str2,"%sfile/%04u.in/%s"  /* str2 is path/fname */
 						,cfg.data_dir,msg.idx.to,tp);
 					length=flength(str2);
 					if(length<1)
@@ -242,7 +242,7 @@ void sbbs_t::readmail(uint usernumber, int which)
 											,fd.name,ultoac(length,tmp)); } } }
 
 							else {	/* Remote User */
-								menu("DLPROT");
+								menu("dlprot");
 								mnemonics(text[ProtocolOrQuit]);
 								strcpy(str3,"Q");
 								for(i=0;i<cfg.total_prots;i++)
@@ -280,7 +280,7 @@ void sbbs_t::readmail(uint usernumber, int which)
 							break;
 						tp=p+1;
 						while(*tp==SP) tp++; }
-				sprintf(str,"%sFILE/%04u.IN",cfg.data_dir,usernumber);
+				sprintf(str,"%sfile/%04u.in",cfg.data_dir,usernumber);
 				rmdir(str); }
 			if(which==MAIL_YOUR && !(msg.hdr.attr&MSG_READ)) {
 				mail[curmsg].attr|=MSG_READ;
@@ -653,9 +653,9 @@ void sbbs_t::readmail(uint usernumber, int which)
 						? "ALLMAIL" : "SENTMAIL");
 				menu(str);
 				if(SYSOP && which==MAIL_SENT)
-					menu("SYSSMAIL");
+					menu("syssmail");
 				else if(SYSOP && which==MAIL_YOUR)
-					menu("SYSMAILR");   /* Sysop Mail Read */
+					menu("sysmailr");   /* Sysop Mail Read */
 				domsg=0;
 				break;
 				} }
diff --git a/src/sbbs3/readmsgs.cpp b/src/sbbs3/readmsgs.cpp
index cd0fd387254e8bfa7b7eae32064bfe8f473422a0..b9d6d2de4126639a3165fcd5a5d3ffad4517adc9 100644
--- a/src/sbbs3/readmsgs.cpp
+++ b/src/sbbs3/readmsgs.cpp
@@ -352,7 +352,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 			domsg=1; } }
 
 	if(useron.misc&RIP)
-		menu("MSGSCAN");
+		menu("msgscan");
 
 	if((i=smb_locksmbhdr(&smb))!=0) {
 		smb_close(&smb);
@@ -507,7 +507,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 				else done=1;
 			continue; }
 		if(useron.misc&WIP)
-			menu("MSGSCAN");
+			menu("msgscan");
 		ASYNC;
 		bprintf(text[ReadingSub],ugrp,cfg.grp[cfg.sub[subnum]->grp]->sname
 			,usub,cfg.sub[subnum]->sname,curpost+1,posts);
@@ -730,7 +730,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 			case 'O':   /* Operator commands */
 				while(online) {
 					if(!(useron.misc&EXPERT))
-						menu("SYSMSCAN");
+						menu("sysmscan");
 					bprintf("\r\n\1y\1hOperator: \1w");
 					strcpy(str,"?CEHMPQUV");
 					if(SYSOP)
@@ -738,7 +738,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 					switch(getkeys(str,0)) {
 						case '?':
 							if(useron.misc&EXPERT)
-								menu("SYSMSCAN");
+								menu("sysmscan");
 							continue;
 						case 'P':   /* Purge user */
 							purgeuser(cfg.sub[subnum]->misc&SUB_NAME
@@ -910,7 +910,7 @@ int sbbs_t::scanposts(uint subnum, long mode, char *find)
 				else done=1;
 				break;
 			case '?':
-				menu("MSGSCAN");
+				menu("msgscan");
 				domsg=0;
 				break;	} }
 	if(msg.total_hfields)
diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h
index d6a54a654ee8cbb1e813c94cace8f0ddfe3b5af1..c9dc9071fdf8494e182f514439faaf71112ef7a6 100644
--- a/src/sbbs3/sbbs.h
+++ b/src/sbbs3/sbbs.h
@@ -182,8 +182,8 @@ public:
 	/*********************************/
 	/* Color Configuration Variables */
 	/*********************************/
-	char 	*text[TOTAL_TEXT];			/* Text from CTRL\TEXT.DAT */
-	char 	*text_sav[TOTAL_TEXT];		/* Text from CTRL\TEXT.DAT */
+	char 	*text[TOTAL_TEXT];			/* Text from ctrl\text.dat */
+	char 	*text_sav[TOTAL_TEXT];		/* Text from ctrl\text.dat */
 	char 	orgcmd[129];	/* Original command to execute bbs */
 	char 	dszlog[127];	/* DSZLOG enviornment variable */
 	char 	debug;			/* Flag to allow debug writes */
diff --git a/src/sbbs3/sbbsdefs.h b/src/sbbs3/sbbsdefs.h
index 8371b17c04b14cb156940904918448c3cec64dd0..6dc4e127dd810b9d8a84b59ec0c250aba4d02e8f 100644
--- a/src/sbbs3/sbbsdefs.h
+++ b/src/sbbs3/sbbsdefs.h
@@ -383,7 +383,7 @@ enum {								/* Values for xtrn_t.event			*/
 
 #define SWAP_NONE	0x80	/* Allow no swapping for executables		*/
 
-#define DSTSDABLEN	50		/* Length of DSTS.DAB file					*/
+#define DSTSDABLEN	50		/* Length of dsts.dab file					*/
 
 							/* Console I/O Bits	(console)				*/
 #define CON_R_ECHO	 (1<<0)	/* Echo remotely							*/
@@ -411,7 +411,7 @@ enum {								/* Values for xtrn_t.event			*/
 #define SEC_RING	   6	/* Maximum seconds between rings			*/
 
 #define LOOP_NOPEN	  50	/* Retries before file access denied		*/
-#define LOOP_NODEDAB  50	/* Retries on NODE.DAB locking/unlocking	*/
+#define LOOP_NODEDAB  50	/* Retries on node.dab locking/unlocking	*/
 
 							/* String lengths							*/
 #define LEN_ALIAS		25	/* User alias								*/
@@ -584,7 +584,7 @@ enum {								/* Values for xtrn_t.event			*/
 #define SS_SYSPAGE	(1L<<12) /* Paging sysop							*/
 #define SS_SYSALERT (1L<<13) /* Notify sysop when users hangs up		*/
 #define SS_GURUCHAT (1L<<14) /* Guru chat in progress					*/
-#define SS_NODEDAB	(1L<<15) /* NODE.DAB operations are okay			*/
+#define SS_NODEDAB	(1L<<15) /* node.dab operations are okay			*/
 #define SS_EVENT	(1L<<16) /* Time shortened due to upcoming event	*/
 #define SS_PAUSEON	(1L<<17) /* Pause on, overriding user default		*/
 #define SS_PAUSEOFF (1L<<18) /* Pause off, overriding user default		*/
@@ -734,7 +734,7 @@ enum {						/* Values of mode for userlist function     */
 	};
 
 
-#define BO_LEN		16		/* BACKOUT.DAB record length				*/
+#define BO_LEN		16		/* backout.dab record length				*/
 
 #define BO_OPENFILE 0		/* Backout types */
 
diff --git a/src/sbbs3/scansubs.cpp b/src/sbbs3/scansubs.cpp
index cdea239c97b3418756e84a946a94ee21d1e99b0c..0f6a9f3c4a27eefc75ccb13e75db0dea4755461b 100644
--- a/src/sbbs3/scansubs.cpp
+++ b/src/sbbs3/scansubs.cpp
@@ -79,7 +79,7 @@ void sbbs_t::scansubs(long mode)
 
 	if(ch=='S') {
 		if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
-			menu("MSGSCAN"); }
+			menu("msgscan"); }
 		i=scanposts(usrsub[curgrp][cursub[curgrp]],mode,str);
 		bputs(text[MessageScan]);
 		if(i) bputs(text[MessageScanAborted]);
@@ -87,7 +87,7 @@ void sbbs_t::scansubs(long mode)
 		return; }
 	if(ch=='G') {
 		if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
-			menu("MSGSCAN"); }
+			menu("msgscan"); }
 		for(i=0;i<usrsubs[curgrp] && !msgabort();i++)
 			if(((mode&SCAN_NEW &&
 				(sub_cfg[usrsub[curgrp][i]]&SUB_CFG_NSCAN
@@ -139,7 +139,7 @@ void sbbs_t::scanallsubs(long mode)
 			return; } }
 
 	if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT)) {
-		menu("MSGSCAN"); }
+		menu("msgscan"); }
 	for(i=0;i<usrgrps;i++) {
 		for(j=0;j<usrsubs[i] && !msgabort();j++)
 			if(((mode&SCAN_NEW && sub_cfg[usrsub[i][j]]&SUB_CFG_NSCAN)
diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c
index 2573fe23dbe3f6c617f63728bc75a49d3fee39e4..9f2df7e43bee182fe6535fd82c8430ed75926de0 100644
--- a/src/sbbs3/scfglib1.c
+++ b/src/sbbs3/scfglib1.c
@@ -115,7 +115,7 @@ BOOL read_node_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 	long	offset=0;
 	FILE	*instream;
 
-	strcpy(fname,"NODE.CNF");
+	strcpy(fname,"node.cnf");
 	sprintf(str,"%s%s",cfg->node_dir,fname);
 	if((instream=fopen(str,"rb" /*O_RDONLY*/))==NULL) {
 		lprintf(txt->openerr,str);
@@ -159,7 +159,7 @@ BOOL read_node_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 	get_str(cfg->text_dir,instream); 				/* text directory */
 	get_str(cfg->temp_dir,instream); 				/* temp directory */
 	if(!cfg->temp_dir[0])
-		strcpy(cfg->temp_dir,"TEMP");
+		strcpy(cfg->temp_dir,"temp");
 
 	#ifndef SCFG
 	prep_path(cfg->ctrl_dir, cfg->text_dir);
@@ -245,7 +245,7 @@ BOOL read_main_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 	long	offset=0;
 	FILE	*instream;
 
-	strcpy(fname,"MAIN.CNF");
+	strcpy(fname,"main.cnf");
 	sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 	if((instream=fopen(str,"rb" /* O_RDONLY */))==NULL) {
 		lprintf(txt->openerr,str);
@@ -479,12 +479,12 @@ BOOL read_msgs_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 
 #ifndef SCFG
 
-	sprintf(cfg->data_dir_subs,"%sSUBS/",cfg->data_dir);
+	sprintf(cfg->data_dir_subs,"%ssubs/",cfg->data_dir);
 	prep_path(cfg->ctrl_dir, cfg->data_dir_subs);
 
 #endif
 
-	strcpy(fname,"MSGS.CNF");
+	strcpy(fname,"msgs.cnf");
 	sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 	if((instream=fopen(str,"rb"/*O_RDONLY*/))==NULL) {
 		lprintf(txt->openerr,str);
diff --git a/src/sbbs3/scfglib2.c b/src/sbbs3/scfglib2.c
index 18dc5b8039ee97dbad06a7bf8a65a55fb70cd3b2..74e4b80ec348f12f4ab8a63d28b763ce2a8073d8 100644
--- a/src/sbbs3/scfglib2.c
+++ b/src/sbbs3/scfglib2.c
@@ -63,11 +63,11 @@ BOOL read_file_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 
 #ifndef SCFG
 
-	sprintf(cfg->data_dir_dirs,"%sDIRS/",cfg->data_dir);
+	sprintf(cfg->data_dir_dirs,"%sdirs/",cfg->data_dir);
 
 #endif
 
-	strcpy(fname,"FILE.CNF");
+	strcpy(fname,"file.cnf");
 	sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 	if((instream=fopen(str,"rb" /*O_RDONLY*/))==NULL) {
 		lprintf(txt->openerr,str);
@@ -441,7 +441,7 @@ BOOL read_file_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 		fread(str,1,LEN_DIR+1,instream);
 		offset+=LEN_DIR+1;
 		if(!str[0]) 				   /* no path specified */
-			sprintf(str,"%sDIRS/%s/",cfg->data_dir,cfg->dir[i]->code);
+			sprintf(str,"%sdirs/%s/",cfg->data_dir,cfg->dir[i]->code);
 		prep_path(cfg->ctrl_dir, str);
 
 	#ifndef SCFG
@@ -532,7 +532,7 @@ BOOL read_xtrn_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 	long	offset=0;
 	FILE	*instream;
 
-	strcpy(fname,"XTRN.CNF");
+	strcpy(fname,"xtrn.cnf");
 	sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 	if((instream=fopen(str,"rb" /*O_RDONLY*/))==NULL) {
 		lprintf(txt->openerr,str);
@@ -782,7 +782,7 @@ BOOL read_chat_cfg(scfg_t* cfg, read_cfg_text_t* txt)
 	long	offset=0;
 	FILE	*instream;
 
-	strcpy(fname,"CHAT.CNF");
+	strcpy(fname,"chat.cnf");
 	sprintf(str,"%s%s",cfg->ctrl_dir,fname);
 	if((instream=fopen(str,"rb"/* O_RDONLY */))==NULL) {
 		lprintf(txt->openerr,str);
diff --git a/src/sbbs3/smbutil.c b/src/sbbs3/smbutil.c
index a5ceee1ce6db3d57d8d15762653937d56833cfdb..6f9ea91cbebac323444275dd44338f2b7f36be06 100644
--- a/src/sbbs3/smbutil.c
+++ b/src/sbbs3/smbutil.c
@@ -81,7 +81,7 @@ char attach[128];
 /************************/
 
 char *usage=
-"usage: smbutil [/opts] cmd <filespec.SHD>\n"
+"usage: smbutil [/opts] cmd <filespec.shd>\n"
 "\n"
 "cmd:\n"
 "       l[n] = list msgs starting at number n\n"
@@ -1015,11 +1015,11 @@ if(smb.status.attr&SMB_HYPERALLOC && !(mode&NOANALYSIS)) {
 			 "        and %lu header blocks (%lu bytes)\n"
 			  ,n,n*SDT_BLOCK_LEN,m,m*SHD_BLOCK_LEN); }
 
-sprintf(fname,"%s.SD$",smb.file);
+sprintf(fname,"%s.sd$",smb.file);
 tmp_sdt=fopen(fname,"wb");
-sprintf(fname,"%s.SH$",smb.file);
+sprintf(fname,"%s.sh$",smb.file);
 tmp_shd=fopen(fname,"wb");
-sprintf(fname,"%s.SI$",smb.file);
+sprintf(fname,"%s.si$",smb.file);
 tmp_sid=fopen(fname,"wb");
 if(!tmp_sdt || !tmp_shd || !tmp_sid) {
 	smb_unlocksmbhdr(&smb);
@@ -1167,36 +1167,36 @@ if(!(smb.status.attr&SMB_HYPERALLOC)) {
 	smb_close_ha(&smb);
 	smb_close_da(&smb); }
 
-/* Change *.SH$ into *.SHD */
+/* Change *.sh$ into *.shd */
 fclose(smb.shd_fp);
 fclose(tmp_shd);
-sprintf(fname,"%s.SHD",smb.file);
+sprintf(fname,"%s.shd",smb.file);
 if(remove(fname)!=0)
 	printf("\n\7!Error %d removing %s\n",errno,fname);
-sprintf(tmpfname,"%s.SH$",smb.file);
+sprintf(tmpfname,"%s.sh$",smb.file);
 if(rename(tmpfname,fname)!=0)
 	printf("\n\7!Error %d renaming %s to %s\n",errno,tmpfname,fname);
 
 
-/* Change *.SD$ into *.SDT */
+/* Change *.sd$ into *.sdt */
 fclose(smb.sdt_fp);
 fclose(tmp_sdt);
-sprintf(fname,"%s.SDT",smb.file);
+sprintf(fname,"%s.sdt",smb.file);
 if(remove(fname)!=0)
 	printf("\n\7!Error %d removing %s\n",errno,fname);
 
-sprintf(tmpfname,"%s.SD$",smb.file);
+sprintf(tmpfname,"%s.sd$",smb.file);
 if(rename(tmpfname,fname)!=0)
 	printf("\n\7!Error %d renaming %s to %s\n",errno,tmpfname,fname);
 
-/* Change *.SI$ into *.SID */
+/* Change *.si$ into *.sid */
 fclose(smb.sid_fp);
 fclose(tmp_sid);
-sprintf(fname,"%s.SID",smb.file);
+sprintf(fname,"%s.sid",smb.file);
 if(remove(fname)!=0)
 	printf("\n\7!Error %d removing %s\n",errno,fname);
 
-sprintf(tmpfname,"%s.SI$",smb.file);
+sprintf(tmpfname,"%s.si$",smb.file);
 if(rename(tmpfname,fname)!=0)
 	printf("\n\7!Error %d renaming %s to %s\n",errno,tmpfname,fname);
 
@@ -1389,7 +1389,6 @@ for(x=1;x<argc;x++) {
 			p=strrchr(smb.file,'.');
 			s=strrchr(smb.file,'\\');
 			if(p>s) *p=0;
-			strupr(smb.file);
 			smb.retry_time=30;
 			printf("Opening %s\r\n",smb.file);
 			if((i=smb_open(&smb))!=0) {
diff --git a/src/sbbs3/sortdir.cpp b/src/sbbs3/sortdir.cpp
index fe071360401c9ec2936d22eb2e844aaf1eb9228b..048bd25d2c4b735ee2be88ff3dad9736e87c12d6 100644
--- a/src/sbbs3/sortdir.cpp
+++ b/src/sbbs3/sortdir.cpp
@@ -51,10 +51,10 @@ void sbbs_t::resort(uint dirnum)
 
 	memset(nulbuf,0,512);
 	bprintf(text[ResortLineFmt],cfg.lib[cfg.dir[dirnum]->lib]->sname,cfg.dir[dirnum]->sname);
-	sprintf(ixbfname,"%s%s.IXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
-	sprintf(datfname,"%s%s.DAT",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
-	sprintf(exbfname,"%s%s.EXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
-	sprintf(txbfname,"%s%s.TXB",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(ixbfname,"%s%s.ixb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(datfname,"%s%s.dat",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(exbfname,"%s%s.exb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(txbfname,"%s%s.txb",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 
 	if(flength(ixbfname)<1L || flength(datfname)<1L) {
 		remove(exbfname);
diff --git a/src/sbbs3/str.cpp b/src/sbbs3/str.cpp
index ec3834795902f4a98e8d54cddd5671e5ccfa77a0..83da1240610852e6bd75ac31a43e0c455281248e 100644
--- a/src/sbbs3/str.cpp
+++ b/src/sbbs3/str.cpp
@@ -136,7 +136,7 @@ void sbbs_t::sif(char *fname, char *answers, long len)
 	int		file;
 	long	length,l=0,m,top,a=0;
 
-	sprintf(str,"%s%s.SIF",cfg.text_dir,strupr(fname));
+	sprintf(str,"%s%s.sif",cfg.text_dir,fname);
 	if((file=nopen(str,O_RDONLY))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 		answers[0]=0;
@@ -272,7 +272,7 @@ void sbbs_t::sof(char *fname, char *answers, long len)
 	int file;
 	long length,l=0,m,a=0;
 
-	sprintf(str,"%s%s.SIF",cfg.text_dir,strupr(fname));
+	sprintf(str,"%s%s.sif",cfg.text_dir,fname);
 	if((file=nopen(str,O_RDONLY))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDONLY);
 		answers[0]=0;
@@ -435,7 +435,6 @@ uint sbbs_t::gettmplt(char *strout,char *templt, long mode)
 
 	sys_status&=~SS_ABORT;
 	sprintf(tmplt, "%.*s",sizeof(tmplt)-1, templt);
-	strupr(tmplt);
 	if(useron.misc&ANSI) {
 		if(mode&K_LINE) {
 			if(useron.misc&COLOR)
@@ -688,7 +687,7 @@ void sbbs_t::subinfo(uint subnum)
 		bprintf(text[SubInfoFidoNet]
 			,cfg.sub[subnum]->origline
 			,faddrtoa(cfg.sub[subnum]->faddr));
-	sprintf(str,"%s%s.MSG",cfg.sub[subnum]->data_dir,cfg.sub[subnum]->code);
+	sprintf(str,"%s%s.msg",cfg.sub[subnum]->data_dir,cfg.sub[subnum]->code);
 	if(fexist(str) && yesno(text[SubInfoViewFileQ]))
 		printfile(str,0);
 }
@@ -706,7 +705,7 @@ void sbbs_t::dirinfo(uint dirnum)
 	if(cfg.dir[dirnum]->exts[0])
 		bprintf(text[DirInfoAllowedExts],cfg.dir[dirnum]->exts);
 	bprintf(text[DirInfoMaxFiles],cfg.dir[dirnum]->maxfiles);
-	sprintf(str,"%s%s.MSG",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
+	sprintf(str,"%s%s.msg",cfg.dir[dirnum]->data_dir,cfg.dir[dirnum]->code);
 	if(fexist(str) && yesno(text[DirInfoViewFileQ]))
 		printfile(str,0);
 }
@@ -724,7 +723,7 @@ extern "C" BOOL DLLCALL trashcan(scfg_t* cfg, char* insearch, char* name)
 	BOOL	found;
 	FILE*	stream;
 
-	sprintf(str,"%s%s.CAN",cfg->text_dir,name);
+	sprintf(str,"%s%s.can",cfg->text_dir,name);
 
 	if((stream=fopen(str,"r"))==NULL)
 		return(FALSE); 
@@ -783,7 +782,7 @@ bool sbbs_t::trashcan(char *insearch, char *name)
 
 	result=::trashcan(&cfg, insearch, name);
 	if(result) {
-		sprintf(str,"%sBAD%s.MSG",cfg.text_dir,name);
+		sprintf(str,"%sbad%s.msg",cfg.text_dir,name);
 		if(fexist(str))
 			printfile(str,0);
 	}
diff --git a/src/sbbs3/text_sec.cpp b/src/sbbs3/text_sec.cpp
index f90aec4e0e17c7c6c8998e520bac0121d5623914..ffde029631ecf7319ea06ae6edaa730177bafad4 100644
--- a/src/sbbs3/text_sec.cpp
+++ b/src/sbbs3/text_sec.cpp
@@ -64,9 +64,9 @@ int sbbs_t::text_sec()
 		return(1); }
 	action=NODE_RTXT;
 	while(online) {
-		sprintf(str,"%sMENU/TEXT_SEC.*",cfg.text_dir);
+		sprintf(str,"%smenu/text_sec.*",cfg.text_dir);
 		if(fexist(str))
-			menu("TEXT_SEC");
+			menu("text_sec");
 		else {
 			bputs(text[TextSectionLstHdr]);
 			for(i=0;i<usrsecs && !msgabort();i++) {
@@ -79,15 +79,15 @@ int sbbs_t::text_sec()
 			break;
 		cursec--;
 		while(online) {
-			sprintf(str,"%sMENU/TEXT%u.*",cfg.text_dir,cursec+1);
+			sprintf(str,"%smenu/text%u.*",cfg.text_dir,cursec+1);
 			if(fexist(str)) {
-				sprintf(str,"TEXT%u",cursec+1);
+				sprintf(str,"text%u",cursec+1);
 				menu(str);
 				usemenu=1; }
 			else {
 				bprintf(text[TextFilesLstHdr],cfg.txtsec[usrsec[cursec]]->name);
 				usemenu=0; }
-			sprintf(str,"%sTEXT/%s.IXT",cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code);
+			sprintf(str,"%stext/%s.ixt",cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code);
 			j=0;
 			if(fexist(str)) {
 				if((stream=fnopen((int *)&i,str,O_RDONLY))==NULL) {
@@ -144,7 +144,7 @@ int sbbs_t::text_sec()
 				if(!getstr(addstr,74,0))
 					continue;
 				strcat(addstr,crlf);
-				sprintf(str,"%sTEXT/%s.IXT"
+				sprintf(str,"%stext/%s.ixt"
 					,cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code);
 				if(i==j) {  /* just add to end */
 					if((i=nopen(str,O_WRONLY|O_APPEND|O_CREAT))==-1) {
@@ -184,7 +184,7 @@ int sbbs_t::text_sec()
 				i=getnum(j);
 				if(i<1)
 					continue;
-				sprintf(str,"%sTEXT/%s.IXT"
+				sprintf(str,"%stext/%s.ixt"
 					,cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code);
 				j=i-1;
 				if((stream=fnopen((int *)&i,str,O_RDONLY))==NULL) {
@@ -198,7 +198,7 @@ int sbbs_t::text_sec()
 				truncsp(addpath);
 				fclose(stream);
 				if(!strchr(addpath,'\\') && !strchr(addpath,'/'))
-					sprintf(tmp,"%sTEXT/%s/%s"
+					sprintf(tmp,"%stext/%s/%s"
 						,cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code,addpath);
 				else
 					strcpy(tmp,addpath);
@@ -207,7 +207,7 @@ int sbbs_t::text_sec()
 						sprintf(str,text[DeleteTextFileQ],tmp);
 						if(!noyes(str))
 							if(remove(tmp)) errormsg(WHERE,ERR_REMOVE,tmp,0); }
-					sprintf(str,"%sTEXT/%s.IXT"
+					sprintf(str,"%stext/%s.ixt"
 						,cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code);
 					removeline(str,addpath,2,0); }
 				else {                      /* Edit */
@@ -216,7 +216,7 @@ int sbbs_t::text_sec()
 				continue; }
 			i=(i&~0x80000000L)-1;
 			if(!strchr(file[i],'\\') && !strchr(file[i],'/'))
-				sprintf(str,"%sTEXT/%s/%s"
+				sprintf(str,"%stext/%s/%s"
 					,cfg.data_dir,cfg.txtsec[usrsec[cursec]]->code,file[i]);
 			else
 				strcpy(str,file[i]);
diff --git a/src/sbbs3/tmp_xfer.cpp b/src/sbbs3/tmp_xfer.cpp
index f2b5b5b59ce27d15b7b8ee33a8b86688bab806b1..61e00acbd0c7c168d65ac8f280d31cce9a96a885 100644
--- a/src/sbbs3/tmp_xfer.cpp
+++ b/src/sbbs3/tmp_xfer.cpp
@@ -78,12 +78,12 @@ void sbbs_t::temp_xfer()
 	/* Fill filedat information */
 	/****************************/
 	memset(&f,0,sizeof(f));
-	sprintf(f.name,"TEMP_%3.3d.%s",cfg.node_num,useron.tmpext);
+	sprintf(f.name,"temp_%3.3d.%s",cfg.node_num,useron.tmpext);
 	strcpy(f.desc,"Temp File");
 	f.dir=dirnum;
 
 	if(useron.misc&(RIP|WIP) && !(useron.misc&EXPERT))
-		menu("TEMPXFER");
+		menu("tempxfer");
 	lncntr=0;
 	while(online && !done) {
 		if(!(useron.misc&(EXPERT|RIP|WIP))) {
@@ -93,7 +93,7 @@ void sbbs_t::temp_xfer()
 				CRLF;
 				if(lncntr)          /* CRLF or SYNC can cause pause */
 					pause(); }
-			menu("TEMPXFER"); }
+			menu("tempxfer"); }
 		ASYNC;
 		bputs(text[TempDirPrompt]);
 		strcpy(f.uler,temp_uler);
@@ -147,7 +147,7 @@ void sbbs_t::temp_xfer()
 					bputs(text[CantDownloadFromDir]);
 					break; }
 				addfiledat(&cfg,&f);
-				menu("DLPROT");
+				menu("dlprot");
 				SYNC;
 				mnemonics(text[ProtocolOrQuit]);
 				strcpy(tmp2,"Q");
@@ -260,7 +260,7 @@ void sbbs_t::temp_xfer()
 				break;
 			case '?':   /* menu */
 				if(useron.misc&(EXPERT|RIP|WIP))
-					menu("TEMPXFER");
+					menu("tempxfer");
 				break; }
 		if(sys_status&SS_ABORT)
 			break; }
diff --git a/src/sbbs3/un_qwk.cpp b/src/sbbs3/un_qwk.cpp
index 21dc900a2db51214145d0212ee25fabf2480f6ce..71aceea273ac22c4aa936211e80f8ee663b6834d 100644
--- a/src/sbbs3/un_qwk.cpp
+++ b/src/sbbs3/un_qwk.cpp
@@ -134,7 +134,7 @@ void sbbs_t::unpack_qwk(char *packet,uint hubnum)
 				continue; }
 
 			smb_stack(&smb,SMB_STACK_PUSH);
-			sprintf(smb.file,"%sMAIL",cfg.data_dir);
+			sprintf(smb.file,"%smail",cfg.data_dir);
 			smb.retry_time=cfg.smb_retry_time;
 			if((k=smb_open(&smb))!=0) {
 				errormsg(WHERE,ERR_OPEN,smb.file,k,smb.last_error);
@@ -244,13 +244,13 @@ void sbbs_t::unpack_qwk(char *packet,uint hubnum)
 	dir=opendir(cfg.temp_dir);
 	while((dirent=readdir(dir))!=NULL) {
 		// Create directory if necessary
-		sprintf(str,"%sQNET/%s.IN",cfg.data_dir,cfg.qhub[hubnum]->id);
+		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;
 		// Copy files
-		sprintf(fname,"%sQNET/%s.IN/%s",cfg.data_dir,cfg.qhub[hubnum]->id,dirent->d_name);
+		sprintf(fname,"%sqnet/%s.in/%s",cfg.data_dir,cfg.qhub[hubnum]->id,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 92964f0a7acdbcae5d883623ed37120efdd73ecf..7d7ba7bbd7972daf1367dbfc176a9e489550799e 100644
--- a/src/sbbs3/un_rep.cpp
+++ b/src/sbbs3/un_rep.cpp
@@ -59,7 +59,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 	if(repfile!=NULL)
 		strcpy(str,repfile);
 	else
-		sprintf(str,"%s%s.REP",cfg.temp_dir,cfg.sys_id);
+		sprintf(str,"%s%s.rep",cfg.temp_dir,cfg.sys_id);
 	if(!fexist(str)) {
 		bputs(text[QWKReplyNotReceived]);
 		logline("U!",AttemptedToUploadREPpacket);
@@ -81,7 +81,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 		logline(nulstr,"Extraction failed");
 		return(false); 
 	}
-	sprintf(str,"%s%s.MSG",cfg.temp_dir,cfg.sys_id);
+	sprintf(str,"%s%s.msg",cfg.temp_dir,cfg.sys_id);
 	if(!fexist(str)) {
 		bputs(text[QWKReplyNotReceived]);
 		logline("U!",AttemptedToUploadREPpacket);
@@ -110,19 +110,19 @@ bool sbbs_t::unpack_rep(char* repfile)
 	for(l=128;l<size;l+=i*128) {
 		lncntr=0;					/* defeat pause */
 		if(fseek(rep,l,SEEK_SET)!=0) {
-			sprintf(str,"%s.MSG", cfg.sys_id);
+			sprintf(str,"%s.msg", cfg.sys_id);
 			errormsg(WHERE,ERR_SEEK,str,l);
 			break;
 		}
 		if(fread(block,1,128,rep)!=128) {
-			sprintf(str,"%s.MSG", cfg.sys_id);
+			sprintf(str,"%s.msg", cfg.sys_id);
 			errormsg(WHERE,ERR_READ,str,ftell(rep));
 			break;
 		}
 		sprintf(tmp,"%.6s",block+116);
 		i=atoi(tmp);  /* i = number of 128 byte records */
 		if(i<2) {
-			sprintf(str,"%s.MSG blocks (read '%s' at offset %ld)", cfg.sys_id, tmp, l);
+			sprintf(str,"%s.msg blocks (read '%s' at offset %ld)", cfg.sys_id, tmp, l);
 			errormsg(WHERE,ERR_CHK,str,i);
 			i=1;
 			continue; }
@@ -171,7 +171,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 				qwktonetmail(rep,block,str,0);
 				continue; }
 
-			sprintf(smb.file,"%sMAIL",cfg.data_dir);
+			sprintf(smb.file,"%smail",cfg.data_dir);
 			smb.retry_time=cfg.smb_retry_time;
 
 			if(lastsub!=INVALID_SUB) {
@@ -406,27 +406,27 @@ bool sbbs_t::unpack_rep(char* repfile)
 	fclose(rep);
 
 	if(useron.rest&FLAG('Q')) {             /* QWK Net Node */
-		sprintf(str,"%s%s.MSG",cfg.temp_dir,cfg.sys_id);
+		sprintf(str,"%s%s.msg",cfg.temp_dir,cfg.sys_id);
 		remove(str);
-		sprintf(str,"%s%s.REP",cfg.temp_dir,cfg.sys_id);
+		sprintf(str,"%s%s.rep",cfg.temp_dir,cfg.sys_id);
 		remove(str);
 
 		dir=opendir(cfg.temp_dir);
 		while((dirent=readdir(dir))!=NULL) {				/* Extra files */
 			// Create directory if necessary
-			sprintf(str,"%sQNET/%s.IN",cfg.data_dir,useron.alias);
+			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);
+			sprintf(fname,"%sqnet/%s.in/%s",cfg.data_dir,useron.alias,dirent->d_name);
 			mv(str,fname,1);
 			sprintf(str,text[ReceivedFileViaQWK],dirent->d_name,useron.alias);
 			putsmsg(&cfg,1,str);
 		} 
 		closedir(dir);
-		sprintf(str,"%sQNET-REP.NOW",cfg.data_dir);
+		sprintf(str,"%sqnet-rep.now",cfg.data_dir);
 		if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
 			close(file);
 	}
diff --git a/src/sbbs3/upload.cpp b/src/sbbs3/upload.cpp
index a833795214bddc1af7dd485b0c019db5c61ae80d..b853814452465565f1ef3ffdee6fc35fc796f233 100644
--- a/src/sbbs3/upload.cpp
+++ b/src/sbbs3/upload.cpp
@@ -96,7 +96,7 @@ bool sbbs_t::uploadfile(file_t *f)
 				logline("U!",str);
 				return(0); }
 			else {
-				sprintf(str,"%sSBBSFILE.NAM",cfg.node_dir);
+				sprintf(str,"%ssbbsfile.nam",cfg.node_dir);
 				if((stream=fopen(str,"r"))!=NULL) {
 					if(fgets(str,128,stream)) {
 						truncsp(str);
@@ -109,7 +109,7 @@ bool sbbs_t::uploadfile(file_t *f)
 							,unpadfname(f->name,fname)); }
 					fclose(stream);
 					}
-				sprintf(str,"%sSBBSFILE.DES",cfg.node_dir);
+				sprintf(str,"%ssbbsfile.des",cfg.node_dir);
 				if((stream=fopen(str,"r"))!=NULL) {
 					if(fgets(str,128,stream)) {
 						truncsp(str);
@@ -209,7 +209,7 @@ void sbbs_t::update_uldate(file_t* f)
 	/*******************/
 	/* Update IXB File */
 	/*******************/
-	sprintf(str,"%s%s.IXB",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
+	sprintf(str,"%s%s.ixb",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
 	if((file=nopen(str,O_RDWR))==-1) {
 		errormsg(WHERE,ERR_OPEN,str,O_RDWR);
 		return; }
@@ -236,7 +236,7 @@ void sbbs_t::update_uldate(file_t* f)
 	/*******************************************/
 	/* Update last upload date/time stamp file */
 	/*******************************************/
-	sprintf(str,"%s%s.DAB",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
+	sprintf(str,"%s%s.dab",cfg.dir[f->dir]->data_dir,cfg.dir[f->dir]->code);
 	if((file=nopen(str,O_WRONLY|O_CREAT))==-1)
 		errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT);
 	else {
@@ -427,7 +427,7 @@ void sbbs_t::upload(uint dirnum)
 		if(!uploadfile(&f))
 			return; }
 	else {
-		menu("ULPROT");
+		menu("ulprot");
 		SYNC;
 		strcpy(keys,"Q");
 		if(dirnum==cfg.user_dir || !cfg.max_batup)  /* no batch user to user xfers */
@@ -474,7 +474,7 @@ void sbbs_t::upload(uint dirnum)
 				if(!ch)  /* upload failed, don't process user to user xfer */
 					return; } } }
 	if(dirnum==cfg.user_dir) {  /* Add files to XFER.IXT in INDX dir */
-		sprintf(str,"%sXFER.IXT",cfg.data_dir);
+		sprintf(str,"%sxfer.ixt",cfg.data_dir);
 		if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) {
 			errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_APPEND);
 			return; }
diff --git a/src/sbbs3/userdat.c b/src/sbbs3/userdat.c
index 9f796b4a2cc0f2086bc7e15af03af19891699f90..570644454db05b1553777bf10308374090a66f8d 100644
--- a/src/sbbs3/userdat.c
+++ b/src/sbbs3/userdat.c
@@ -54,7 +54,7 @@ uint DLLCALL matchuser(scfg_t* cfg, char *name)
 	ulong l,length;
 	FILE *stream;
 
-	sprintf(str,"%sUSER/NAME.DAT",cfg->data_dir);
+	sprintf(str,"%suser/name.dat",cfg->data_dir);
 	if((file=nopen(str,O_RDONLY))==-1)
 		return(0);
 	length=filelength(file);
@@ -75,7 +75,7 @@ uint DLLCALL matchuser(scfg_t* cfg, char *name)
 }
 
 /****************************************************************************/
-/* Returns the number of the last user in USER.DAT (deleted ones too)		*/
+/* Returns the number of the last user in user.dat (deleted ones too)		*/
 /* Called from function useredit											*/
 /****************************************************************************/
 uint DLLCALL lastuser(scfg_t* cfg)
@@ -83,14 +83,14 @@ uint DLLCALL lastuser(scfg_t* cfg)
 	char str[256];
 	long length;
 
-	sprintf(str,"%sUSER/USER.DAT", cfg->data_dir);
+	sprintf(str,"%suser/user.dat", cfg->data_dir);
 	if((length=flength(str))>0)
 		return((uint)(length/U_LEN));
 	return(0);
 }
 
 /****************************************************************************/
-/* Fills the structure 'user' with info for user.number	from USER.DAT		*/
+/* Fills the structure 'user' with info for user.number	from user.dat		*/
 /* Called from functions useredit, waitforcall and main_sec					*/
 /****************************************************************************/
 int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
@@ -102,7 +102,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
 		memset(user,0,sizeof(user_t));
 		return(-1); 
 	}
-	sprintf(userdat,"%sUSER/USER.DAT",cfg->data_dir);
+	sprintf(userdat,"%suser/user.dat",cfg->data_dir);
 	if((file=nopen(userdat,O_RDONLY))==-1) {
 		close(file);
 		memset(user,0,sizeof(user_t));
@@ -263,7 +263,7 @@ int DLLCALL getuserdat(scfg_t* cfg, user_t *user)
 }
 
 /****************************************************************************/
-/* Writes into user.number's slot in USER.DAT data in structure 'user'      */
+/* Writes into user.number's slot in user.dat data in structure 'user'      */
 /* Called from functions newuser, useredit and main                         */
 /****************************************************************************/
 int DLLCALL putuserdat(scfg_t* cfg, user_t* user)
@@ -371,7 +371,7 @@ int DLLCALL putuserdat(scfg_t* cfg, user_t* user)
 	putrec(userdat,U_UNUSED,29,crlf);
 	putrec(userdat,U_UNUSED+29,2,crlf);
 
-	sprintf(str,"%sUSER/USER.DAT", cfg->data_dir);
+	sprintf(str,"%suser/user.dat", cfg->data_dir);
 	if((file=nopen(str,O_WRONLY|O_CREAT))==-1) {
 		return(errno);
 	}
@@ -427,7 +427,7 @@ char* DLLCALL username(scfg_t* cfg, int usernumber,char *strin)
 	if(usernumber<1) {
 		strin[0]=0;
 		return(strin); }
-	sprintf(str,"%sUSER/NAME.DAT",cfg->data_dir);
+	sprintf(str,"%suser/name.dat",cfg->data_dir);
 	if(flength(str)<1L) {
 		strin[0]=0;
 		return(strin); }
@@ -526,7 +526,7 @@ char DLLCALL getage(scfg_t* cfg, char *birth)
 
 /****************************************************************************/
 /* Reads the data for node number 'number' into the structure 'node'        */
-/* from NODE.DAB															*/
+/* from node.dab															*/
 /* if lockit is non-zero, locks this node's record. putnodedat() unlocks it */
 /****************************************************************************/
 int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, char lockit)
@@ -538,7 +538,7 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, char lockit)
 	if(!number || number>cfg->sys_nodes)
 		return(-1);
 
-	sprintf(str,"%sNODE.DAB",cfg->ctrl_dir);
+	sprintf(str,"%snode.dab",cfg->ctrl_dir);
 	if((file=nopen(str,O_RDONLY|O_DENYNONE))==-1) {
 		close(file);
 		memset(node,0,sizeof(node_t));
@@ -566,7 +566,7 @@ int DLLCALL getnodedat(scfg_t* cfg, uint number, node_t *node, char lockit)
 }
 
 /****************************************************************************/
-/* Write the data from the structure 'node' into NODE.DAB  					*/
+/* Write the data from the structure 'node' into node.dab  					*/
 /* getnodedat(num,&node,1); must have been called before calling this func  */
 /*          NOTE: ------^   the indicates the node record has been locked   */
 /****************************************************************************/
@@ -578,7 +578,7 @@ int DLLCALL putnodedat(scfg_t* cfg, uint number, node_t* node)
 	if(!number || number>cfg->sys_nodes) 
 		return(-1);
 
-	sprintf(str,"%sNODE.DAB",cfg->ctrl_dir);
+	sprintf(str,"%snode.dab",cfg->ctrl_dir);
 	if((file=nopen(str,O_RDWR|O_CREAT|O_DENYNONE))==-1) {
 		close(file);
 		memset(node,0,sizeof(node_t));
@@ -608,7 +608,7 @@ uint DLLCALL userdatdupe(scfg_t* cfg, uint usernumber, uint offset, uint datlen,
     long	l,length;
 
 	truncsp(dat);
-	sprintf(str,"%sUSER/USER.DAT", cfg->data_dir);
+	sprintf(str,"%suser/user.dat", cfg->data_dir);
 	if((file=nopen(str,O_RDONLY))==-1)
 		return(0);
 	length=filelength(file);
@@ -657,7 +657,7 @@ int DLLCALL putsmsg(scfg_t* cfg, int usernumber, char *strin)
     int file,i;
     node_t node;
 
-	sprintf(str,"%sMSGS/%4.4u.MSG",cfg->data_dir,usernumber);
+	sprintf(str,"%smsgs/%4.4u.msg",cfg->data_dir,usernumber);
 	if((file=nopen(str,O_WRONLY|O_CREAT|O_APPEND))==-1) {
 		return(errno); 
 	}
@@ -1013,7 +1013,7 @@ int DLLCALL getuserrec(scfg_t* cfg, int usernumber,int start, int length, char *
 
 	if(!usernumber)
 		return(-1);
-	sprintf(path,"%sUSER/USER.DAT",cfg->data_dir);
+	sprintf(path,"%suser/user.dat",cfg->data_dir);
 	if((file=nopen(path,O_RDONLY))==-1) 
 		return(errno);
 	if(usernumber<1
@@ -1051,7 +1051,7 @@ int DLLCALL getuserrec(scfg_t* cfg, int usernumber,int start, int length, char *
 }
 
 /****************************************************************************/
-/* Places into USER.DAT at the offset for usernumber+start for length bytes */
+/* Places into user.dat at the offset for usernumber+start for length bytes */
 /* Called from various locations											*/
 /****************************************************************************/
 int DLLCALL putuserrec(scfg_t* cfg, int usernumber,int start, uint length, char *str)
@@ -1064,7 +1064,7 @@ int DLLCALL putuserrec(scfg_t* cfg, int usernumber,int start, uint length, char
 	if(usernumber<1)
 		return(-1);
 
-	sprintf(str2,"%sUSER/USER.DAT",cfg->data_dir);
+	sprintf(str2,"%suser/user.dat",cfg->data_dir);
 	if((file=nopen(str2,O_WRONLY))==-1)
 		return(errno);
 
@@ -1120,7 +1120,7 @@ ulong DLLCALL adjustuserrec(scfg_t* cfg, int usernumber, int start, int length,
 	if(usernumber<1) 
 		return(0UL); 
 
-	sprintf(path,"%sUSER/USER.DAT",cfg->data_dir);
+	sprintf(path,"%suser/user.dat",cfg->data_dir);
 	if((file=nopen(path,O_RDWR))==-1)
 		return(0UL); 
 
diff --git a/src/sbbs3/useredit.cpp b/src/sbbs3/useredit.cpp
index fc15122ea1d48520a1a7715813dec02aa32b761f..a6855feeac16dbba71081e312bfbbe48c517455b 100644
--- a/src/sbbs3/useredit.cpp
+++ b/src/sbbs3/useredit.cpp
@@ -117,7 +117,7 @@ void sbbs_t::useredit(int usernumber, int local)
 	#endif
 			bprintf(text[UserNetMail],user.netmail);
 
-		sprintf(str,"%sUSER/%4.4u.MSG", cfg.data_dir,user.number);
+		sprintf(str,"%suser/%4.4u.msg", cfg.data_dir,user.number);
 		i=fexist(str);
 		if(user.comment[0] || i)
 			bprintf(text[UeditCommentLine],i ? '+' : SP
@@ -237,7 +237,7 @@ void sbbs_t::useredit(int usernumber, int local)
 						break;
 					if(c==CR) break;
 					if(c=='?') {
-						menu("EXEMPT");
+						menu("exempt");
 						continue; }
 					if(!(useron.exempt&FLAG(c)) && console&CON_R_INPUT)
 						continue;
@@ -326,7 +326,7 @@ void sbbs_t::useredit(int usernumber, int local)
 				break;
 			case 'H': /* edit user's information file */
 				attr(LIGHTGRAY);
-				sprintf(str,"%sUSER/%4.4u.MSG", cfg.data_dir,user.number);
+				sprintf(str,"%suser/%4.4u.msg", cfg.data_dir,user.number);
 				editfile(str);
 				break;
 			case 'I':
@@ -489,7 +489,7 @@ void sbbs_t::useredit(int usernumber, int local)
 				break;
 			case 'X':
 				attr(LIGHTGRAY);
-				sprintf(str,"%sUSER/%4.4u.MSG", cfg.data_dir,user.number);
+				sprintf(str,"%suser/%4.4u.msg", cfg.data_dir,user.number);
 				printfile(str,0);
 				pause();
 				break;
@@ -512,14 +512,14 @@ void sbbs_t::useredit(int usernumber, int local)
 						break;
 					if(c==CR) break;
 					if(c=='?') {
-						menu("RESTRICT");
+						menu("restrict");
 						continue; }
 					user.rest^=FLAG(c);
 					putuserrec(&cfg,user.number,U_REST,8,ultoa(user.rest,tmp,16)); }
 				break;
 			case '?':
 				CLS;
-				menu("UEDIT");  /* Sysop Uedit Edit Menu */
+				menu("uedit");  /* Sysop Uedit Edit Menu */
 				pause();
 				break;
 			case '~':
@@ -556,7 +556,7 @@ void sbbs_t::useredit(int usernumber, int local)
 				putuserrec(&cfg,user.number,U_MIN,10,ultoa(user.min,tmp,10));
 				break;
 			case '#': /* read new user questionaire */
-				sprintf(str,"%sUSER/%4.4u.DAT", cfg.data_dir,user.number);
+				sprintf(str,"%suser/%4.4u.dat", cfg.data_dir,user.number);
 				if(!cfg.new_sof[0] || !fexist(str))
 					break;
 				read_sif_dat(cfg.new_sof,str);
@@ -639,7 +639,7 @@ int sbbs_t::searchup(char *search,int usernum)
 
 	if(!search[0])
 		return(usernum);
-	sprintf(userdat,"%sUSER/USER.DAT", cfg.data_dir);
+	sprintf(userdat,"%suser/user.dat", cfg.data_dir);
 	if((file=nopen(userdat,O_RDONLY|O_DENYNONE))==-1)
 		return(usernum);
 
@@ -656,13 +656,13 @@ int sbbs_t::searchup(char *search,int usernum)
 
 		if(count>=LOOP_NODEDAB) {
 			close(file);
-			errormsg(WHERE,ERR_LOCK,"USER.DAT",i);
+			errormsg(WHERE,ERR_LOCK,"user.dat",i);
 			return(usernum); }
 
 		if(read(file,userdat,U_LEN)!=U_LEN) {
 			unlock(file,(long)((long)(i-1)*U_LEN),U_LEN);
 			close(file);
-			errormsg(WHERE,ERR_READ,"USER.DAT",U_LEN);
+			errormsg(WHERE,ERR_READ,"user.dat",U_LEN);
 			return(usernum); }
 
 		unlock(file,(long)((long)(i-1)*U_LEN),U_LEN);
@@ -692,7 +692,7 @@ int sbbs_t::searchdn(char *search,int usernum)
 
 	if(!search[0])
 		return(usernum);
-	sprintf(userdat,"%sUSER/USER.DAT", cfg.data_dir);
+	sprintf(userdat,"%suser/user.dat", cfg.data_dir);
 	if((file=nopen(userdat,O_RDONLY))==-1)
 		return(usernum);
 	while(i) {
@@ -706,7 +706,7 @@ int sbbs_t::searchdn(char *search,int usernum)
 
 		if(count>=LOOP_NODEDAB) {
 			close(file);
-			errormsg(WHERE,ERR_LOCK,"USER.DAT",i);
+			errormsg(WHERE,ERR_LOCK,"user.dat",i);
 			return(usernum); }
 
 		if(read(file,userdat,U_LEN)==-1) {
@@ -977,7 +977,7 @@ void sbbs_t::maindflts(user_t* user)
 				pause();
 				break;
 			case 'Z':
-				menu("DLPROT");
+				menu("dlprot");
 				SYNC;
 				mnemonics(text[ProtocolOrQuit]);
 				strcpy(str,"Q");
diff --git a/src/sbbs3/writemsg.cpp b/src/sbbs3/writemsg.cpp
index 791b3813ff9e3cd78edb3669ab5f653c19109722..22ba4b11593dceda513d7d816b8c8e0b8d775338 100644
--- a/src/sbbs3/writemsg.cpp
+++ b/src/sbbs3/writemsg.cpp
@@ -698,13 +698,13 @@ ulong sbbs_t::msgeditor(char *buf, char *top, char *title)
 			else if(!stricmp(strin,"/?")) {
 				if(line==lines)
 					FREE(str[line]);
-				menu("EDITOR"); /* User Editor Commands */
+				menu("editor"); /* User Editor Commands */
 				SYNC;
 				continue; }
 			else if(!stricmp(strin,"/ATTR"))    {
 				if(line==lines)
 					FREE(str[line]);
-				menu("ATTR");   /* User ANSI Commands */
+				menu("attr");   /* User ANSI Commands */
 				SYNC;
 				continue; } }
 		strcpy(str[line],strin);
@@ -822,9 +822,9 @@ void sbbs_t::copyfattach(uint to, uint from, char *title)
 		sp=strrchr(tp,'/');              /* sp is slash pointer */
 		if(!sp) sp=strrchr(tp,'\\');
 		if(sp) tp=sp+1;
-		sprintf(str2,"%sFILE/%04u.IN/%s"  /* str2 is path/fname */
+		sprintf(str2,"%sfile/%04u.in/%s"  /* str2 is path/fname */
 			,cfg.data_dir,to,tp);
-		sprintf(str3,"%sFILE/%04u.IN/%s"  /* str2 is path/fname */
+		sprintf(str3,"%sfile/%04u.in/%s"  /* str2 is path/fname */
 			,cfg.data_dir,from,tp);
 		if(strcmp(str2,str3))
 			mv(str3,str2,1);
@@ -930,15 +930,16 @@ void sbbs_t::forwardmail(smbmsg_t *msg, int usernumber)
 void sbbs_t::automsg()
 {
     char str[256],buf[300],anon=0;
+	char automsg[MAX_PATH];
     int file;
 
+	sprintf(automsg,"%smsgs/auto.msg",cfg.data_dir);
 	while(online) {
 		SYNC;
 		mnemonics(text[AutoMsg]);
 		switch(getkeys("RWQ",0)) {
 			case 'R':
-				sprintf(str,"%sMSGS/AUTO.MSG",cfg.data_dir);
-				printfile(str,P_NOABORT|P_NOATCODES);
+				printfile(automsg,P_NOABORT|P_NOATCODES);
 				break;
 			case 'W':
 				if(useron.rest&FLAG('W')) {
@@ -961,9 +962,8 @@ void sbbs_t::automsg()
 					if(useron.exempt&FLAG('A')) {
 						if(!noyes(text[AnonymousQ]))
 							anon=1; }
-					sprintf(str,"%sMSGS/AUTO.MSG",cfg.data_dir);
-					if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))==-1) {
-						errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_TRUNC);
+					if((file=nopen(automsg,O_WRONLY|O_CREAT|O_TRUNC))==-1) {
+						errormsg(WHERE,ERR_OPEN,automsg,O_WRONLY|O_CREAT|O_TRUNC);
 						return; }
 					if(anon)
 						sprintf(tmp,"%.80s",text[Anonymous]);
@@ -1192,7 +1192,7 @@ ushort sbbs_t::chmsgattr(ushort attr)
 	while(online && !(sys_status&SS_ABORT)) {
 		CRLF;
 		show_msgattr(attr);
-		menu("MSGATTR");
+		menu("msgattr");
 		ch=getkey(K_UPPER);
 		if(ch)
 			bprintf("%c\r\n",ch);
diff --git a/src/sbbs3/xtrn_sec.cpp b/src/sbbs3/xtrn_sec.cpp
index a38ccc8f00a84c27743ff78e21e3be2ce59e988c..f89f2bae0a726f3b89b1e9af4b4181076c3364a7 100644
--- a/src/sbbs3/xtrn_sec.cpp
+++ b/src/sbbs3/xtrn_sec.cpp
@@ -70,9 +70,9 @@ int sbbs_t::xtrn_sec()
 			FREE(usrxsec);
 			return(1); }
 		if(usrxsecs>1) {
-			sprintf(str,"%sMENU/XTRN_SEC.*",cfg.text_dir);
+			sprintf(str,"%smenu/xtrn_sec.*",cfg.text_dir);
 			if(fexist(str)) {
-				menu("XTRN_SEC");
+				menu("xtrn_sec");
 				xsec=getnum(usrxsecs);
 				if(xsec<=0)
 					break;
@@ -110,9 +110,9 @@ int sbbs_t::xtrn_sec()
 				bputs(text[NoXtrnPrograms]);
 				pause();
 				break; }
-			sprintf(str,"%sMENU/XTRN%u.*",cfg.text_dir,xsec+1);
+			sprintf(str,"%smenu/xtrn%u.*",cfg.text_dir,xsec+1);
 			if(fexist(str)) {
-				sprintf(str,"XTRN%u",xsec+1);
+				sprintf(str,"xtrn%u",xsec+1);
 				menu(str); }
 			else {
 				bprintf(text[XtrnProgLstHdr],cfg.xtrnsec[xsec]->name);
@@ -1432,9 +1432,9 @@ void sbbs_t::exec_xtrn(uint xtrnnum)
 	sprintf(str,"%sINTRSBBS.DAT"
 			,cfg.xtrn[xtrnnum]->path[0] ? cfg.xtrn[xtrnnum]->path : cfg.node_dir);
 	remove(str);
-	sprintf(str,"%sHANGUP.NOW",cfg.node_dir);
+	sprintf(str,"%shangup.now",cfg.node_dir);
 	remove(str);
-	sprintf(str,"%sFILE/%04u.DWN",cfg.data_dir,useron.number);
+	sprintf(str,"%sfile/%04u.dwn",cfg.data_dir,useron.number);
 	remove(str);
 
 	mode=0; 	/* EX_CC */
@@ -1464,10 +1464,10 @@ void sbbs_t::exec_xtrn(uint xtrnnum)
 			errormsg(WHERE,ERR_OPEN,str,O_WRONLY|O_CREAT|O_APPEND);
 	}
 
-	sprintf(str,"%sFILE/%04u.DWN",cfg.data_dir,useron.number);
+	sprintf(str,"%sfile/%04u.dwn",cfg.data_dir,useron.number);
 	batch_add_list(str);
 
-	sprintf(str,"%sHANGUP.NOW",cfg.node_dir);
+	sprintf(str,"%shangup.now",cfg.node_dir);
 	if(fexist(str)) {
 		remove(str);
 		hangup(); }
diff --git a/src/smblib/smblib.c b/src/smblib/smblib.c
index f5798a57d7a65c94b60a12dcf56d636341d97913..07f44ab1a9900becdc8894030913de5cc9b644d3 100644
--- a/src/smblib/smblib.c
+++ b/src/smblib/smblib.c
@@ -90,7 +90,7 @@ int SMBCALL smb_open(smb_t* smb)
 	if(!smb->retry_time)
 		smb->retry_time=10;
 	smb->shd_fp=smb->sdt_fp=smb->sid_fp=NULL;
-	sprintf(str,"%s.SHD",smb->file);
+	sprintf(str,"%s.shd",smb->file);
 	if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYNO))==-1
 		|| (smb->shd_fp=fdopen(file,"r+b"))==NULL) {
 		sprintf(smb->last_error,"%d opening %s",errno,str);
@@ -134,7 +134,7 @@ int SMBCALL smb_open(smb_t* smb)
 
 	setvbuf(smb->shd_fp,smb->shd_buf,_IOFBF,SHD_BLOCK_LEN);
 
-	sprintf(str,"%s.SDT",smb->file);
+	sprintf(str,"%s.sdt",smb->file);
 	if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYNO))==-1
 		|| (smb->sdt_fp=fdopen(file,"r+b"))==NULL) {
 		sprintf(smb->last_error,"%d opening %s",errno,str);
@@ -145,7 +145,7 @@ int SMBCALL smb_open(smb_t* smb)
 	}
 	setvbuf(smb->sdt_fp,NULL,_IOFBF,2*1024);
 
-	sprintf(str,"%s.SID",smb->file);
+	sprintf(str,"%s.sid",smb->file);
 	if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYNO))==-1
 		|| (smb->sid_fp=fdopen(file,"r+b"))==NULL) {
 		sprintf(smb->last_error,"%d opening %s",errno,str);
@@ -186,7 +186,7 @@ int SMBCALL smb_open_da(smb_t* smb)
 	char	str[128];
 	ulong	start=0;
 
-	sprintf(str,"%s.SDA",smb->file);
+	sprintf(str,"%s.sda",smb->file);
 	while(1) {
 		if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYRW))!=-1)
 			break;
@@ -229,7 +229,7 @@ int SMBCALL smb_open_ha(smb_t* smb)
 	char	str[128];
 	ulong	start=0;
 
-	sprintf(str,"%s.SHA",smb->file);
+	sprintf(str,"%s.sha",smb->file);
 	while(1) {
 		if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYRW))!=-1)
 			break;
@@ -886,7 +886,7 @@ int SMBCALL smb_addcrc(smb_t* smb, ulong crc)
 	if(!smb->status.max_crcs)
 		return(0);
 
-	sprintf(str,"%s.SCH",smb->file);
+	sprintf(str,"%s.sch",smb->file);
 	while(1) {
 		if((file=sopen(str,O_RDWR|O_CREAT|O_BINARY,SH_DENYRW))!=-1)
 			break;
@@ -1122,11 +1122,11 @@ int SMBCALL smb_create(smb_t* smb)
 	rewind(smb->sid_fp);
 	chsize(fileno(smb->sid_fp),0L);
 
-	sprintf(str,"%s.SDA",smb->file);
+	sprintf(str,"%s.sda",smb->file);
 	remove(str);						/* if it exists, delete it */
-	sprintf(str,"%s.SHA",smb->file);
+	sprintf(str,"%s.sha",smb->file);
 	remove(str);                        /* if it exists, delete it */
-	sprintf(str,"%s.SCH",smb->file);
+	sprintf(str,"%s.sch",smb->file);
 	remove(str);
 	smb_unlocksmbhdr(smb);
 	return(0);