diff --git a/src/sbbs3/fido.cpp b/src/sbbs3/fido.cpp
index 91c051bfe9e4bc1da947c8153acf54822f74d64a..293dfd4d6772fa820080cad471eb243c6bb0813b 100644
--- a/src/sbbs3/fido.cpp
+++ b/src/sbbs3/fido.cpp
@@ -394,9 +394,7 @@ bool sbbs_t::netmail(char *into, char *title, long mode)
 		cc_sent++; }
 
 	if(cfg.netmail_sem[0])		/* update semaphore file */
-		if((file=nopen(cmdstr(cfg.netmail_sem,nulstr,nulstr,NULL)
-				,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(file);
+		ftouch(cmdstr(cfg.netmail_sem,nulstr,nulstr,NULL));
 
 	FREE(buf);
 	return(true);
@@ -705,9 +703,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 		else {		/* Successful */
 			if(inet) {
 				if(cfg.inetmail_sem[0]) 	 /* update semaphore file */
-					if((fido=nopen(cmdstr(cfg.inetmail_sem,nulstr,nulstr,NULL)
-						,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-						close(fido);
+					ftouch(cmdstr(cfg.inetmail_sem,nulstr,nulstr,NULL));
 				if(!(useron.exempt&FLAG('S')))
 					subtract_cdt(&cfg,&useron,cfg.inetmail_cost); }
 
@@ -864,9 +860,7 @@ void sbbs_t::qwktonetmail(FILE *rep, char *block, char *into, uchar fromhub)
 	close(fido);
 	FREE((char *)qwkbuf);
 	if(cfg.netmail_sem[0])		/* update semaphore file */
-		if((fido=nopen(cmdstr(cfg.netmail_sem,nulstr,nulstr,NULL)
-			,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(fido);
+		ftouch(cmdstr(cfg.netmail_sem,nulstr,nulstr,NULL));
 	if(!(useron.exempt&FLAG('S')))
 		subtract_cdt(&cfg,&useron,cfg.netmail_cost);
 
diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c
index ce9f64b460fefa7df252385f784b4cd7b9f4db30..48fbdf000b7964add20eac6afc82c42add8757d1 100644
--- a/src/sbbs3/ftpsrvr.c
+++ b/src/sbbs3/ftpsrvr.c
@@ -1821,9 +1821,7 @@ static void receive_thread(void* arg)
 				putextdesc(&scfg,f.dir,f.datoffset,ext);
 
 			if(scfg.dir[f.dir]->upload_sem[0])
-				if((file=sopen(scfg.dir[f.dir]->upload_sem,O_WRONLY|O_CREAT|O_TRUNC
-					,SH_DENYNO,S_IREAD|S_IWRITE))!=-1)
-					close(file);
+				ftouch(scfg.dir[f.dir]->upload_sem);
 			/**************************/
 			/* Update Uploader's Info */
 			/**************************/
diff --git a/src/sbbs3/netmail.cpp b/src/sbbs3/netmail.cpp
index 7508ace94c7ecab13eecfde1483061ef153538a5..433232032ae808614a3571489829ce7af838bc8e 100644
--- a/src/sbbs3/netmail.cpp
+++ b/src/sbbs3/netmail.cpp
@@ -265,9 +265,7 @@ bool sbbs_t::inetmail(char *into, char *subj, long mode)
 		autohangup();
 
 	if(cfg.inetmail_sem[0]) 	 /* update semaphore file */
-		if((file=nopen(cmdstr(cfg.inetmail_sem,nulstr,nulstr,NULL)
-			,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(file);
+		ftouch(cmdstr(cfg.inetmail_sem,nulstr,nulstr,NULL));
 	if(!(useron.exempt&FLAG('S')))
 		subtract_cdt(&cfg,&useron,cfg.inetmail_cost);
 
diff --git a/src/sbbs3/postmsg.cpp b/src/sbbs3/postmsg.cpp
index c711ebd67c3be2075a3a7d1eb7f1c3af4751dc95..8088d3f4a39b7a7ef826cf4f7fe8d15dfcf107d7 100644
--- a/src/sbbs3/postmsg.cpp
+++ b/src/sbbs3/postmsg.cpp
@@ -398,20 +398,15 @@ bool sbbs_t::postmsg(uint subnum, smbmsg_t *remsg, long wm_mode)
 extern "C" void DLLCALL signal_sub_sem(scfg_t* cfg, uint subnum)
 {
 	char str[MAX_PATH+1];
-	int file;
 
 	if(subnum==INVALID_SUB || subnum>=cfg->total_subs)	/* e-mail? */
 		return;
 
 	/* signal semaphore files */
 	if(cfg->sub[subnum]->misc&SUB_FIDO && cfg->echomail_sem[0])		
-		if((file=nopen(cmdstr(cfg,NULL,cfg->echomail_sem,nulstr,nulstr,str)
-			,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(file);
+		ftouch(cmdstr(cfg,NULL,cfg->echomail_sem,nulstr,nulstr,str));
 	if(cfg->sub[subnum]->post_sem[0]) 
-		if((file=nopen(cmdstr(cfg,NULL,cfg->sub[subnum]->post_sem,nulstr,nulstr,str)
-			,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(file);
+		ftouch(cmdstr(cfg,NULL,cfg->sub[subnum]->post_sem,nulstr,nulstr,str));
 }
 
 extern "C" int DLLCALL savemsg(scfg_t* cfg, smb_t* smb, smbmsg_t* msg, char* msgbuf)
diff --git a/src/sbbs3/un_rep.cpp b/src/sbbs3/un_rep.cpp
index 2bcbc8ff3080546467c8bf80b521ca98643be343..eb5ba0d7343f8e9741ef6f4fe7530ccca61766b0 100644
--- a/src/sbbs3/un_rep.cpp
+++ b/src/sbbs3/un_rep.cpp
@@ -438,8 +438,7 @@ bool sbbs_t::unpack_rep(char* repfile)
 		if(dir!=NULL)
 			closedir(dir);
 		sprintf(str,"%sqnet-rep.now",cfg.data_dir);
-		if((file=nopen(str,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(file);
+		ftouch(str);
 	}
 
 	bputs(text[QWKUnpacked]);
diff --git a/src/sbbs3/upload.cpp b/src/sbbs3/upload.cpp
index 58ea80dac897fef4e205266c568cac7f1edde4b9..9bada02bad337a952ff6863b45274be9cef938ac 100644
--- a/src/sbbs3/upload.cpp
+++ b/src/sbbs3/upload.cpp
@@ -195,9 +195,7 @@ bool sbbs_t::uploadfile(file_t *f)
 		,f->name,cfg.lib[cfg.dir[f->dir]->lib]->sname
 		,cfg.dir[f->dir]->sname);
 	if(cfg.dir[f->dir]->upload_sem[0])
-		if((file=nopen(cmdstr(cfg.dir[f->dir]->upload_sem,nulstr,nulstr,NULL)
-			,O_WRONLY|O_CREAT|O_TRUNC))!=-1)
-			close(file);
+		ftouch(cmdstr(cfg.dir[f->dir]->upload_sem,nulstr,nulstr,NULL));
 	logline("U+",str);
 	/**************************/
 	/* Update Uploader's Info */