From 9deab69b0fed1b9bedfa2cb0ccc6fd70f6f561c6 Mon Sep 17 00:00:00 2001
From: rswindell <>
Date: Mon, 1 Oct 2018 23:21:09 +0000
Subject: [PATCH] Log errors when failing to delete semaphore (e.g. *.now) and
 other files. Fixed some funny typos in comments.

---
 src/sbbs3/main.cpp | 41 ++++++++++++++++++++++++++---------------
 1 file changed, 26 insertions(+), 15 deletions(-)

diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp
index a12f9c505f..e1e9050926 100644
--- a/src/sbbs3/main.cpp
+++ b/src/sbbs3/main.cpp
@@ -2678,9 +2678,10 @@ void event_thread(void* arg)
 					sbbs->console&=~CON_L_ECHO;
 
 					/* putuserdat? */
-					if(success)
-						remove(g.gl_pathv[i]);
-					else {
+					if(success) {
+						if(remove(g.gl_pathv[i]))
+							sbbs->errormsg(WHERE, ERR_REMOVE, g.gl_pathv[i], 0);
+					} else {
 						char badpkt[MAX_PATH+1];
 						SAFECOPY(badpkt, g.gl_pathv[i]);
 						SAFEPRINTF2(badpkt, "%s.%lx.bad", g.gl_pathv[i], time(NULL));
@@ -2691,7 +2692,8 @@ void event_thread(void* arg)
 							sbbs->lprintf(LOG_ERR, "!ERROR %d (%s) renaming %s to %s"
 								,errno, strerror(errno), g.gl_pathv[i], badpkt);
 					}
-					remove(semfile);
+					if(remove(semfile))
+						sbbs->errormsg(WHERE, ERR_REMOVE, semfile, 0);
 				}
 			}
 			globfree(&g);
@@ -2736,8 +2738,10 @@ void event_thread(void* arg)
 					sbbs->console&=~CON_L_ECHO;
 					sbbs->online=FALSE;
 				}
-				remove(g.gl_pathv[i]);
-				remove(semfile);
+				if(remove(g.gl_pathv[i]))
+					sbbs->errormsg(WHERE, ERR_REMOVE, g.gl_pathv[i], 0);
+				if(remove(semfile))
+					sbbs->errormsg(WHERE, ERR_REMOVE, semfile, 0);
 			}
 			globfree(&g);
 			sbbs->useron.number = 0;
@@ -2844,7 +2848,7 @@ void event_thread(void* arg)
 				}
 			}
 
-			/* QWK Networking Call-out sempahores */
+			/* QWK Networking Call-out semaphores */
 			for(i=0;i<sbbs->cfg.total_qhubs;i++) {
 				if(sbbs->cfg.qhub[i]->node<first_node
 					|| sbbs->cfg.qhub[i]->node>last_node)
@@ -2859,7 +2863,7 @@ void event_thread(void* arg)
 				}
 			}
 
-			/* Timed Event sempahores */
+			/* Timed Event semaphores */
 			for(i=0;i<sbbs->cfg.total_events;i++) {
 				if((sbbs->cfg.event[i]->node<first_node
 					|| sbbs->cfg.event[i]->node>last_node)
@@ -2908,7 +2912,8 @@ void event_thread(void* arg)
 						delfiles(sbbs->cfg.temp_dir,ALLFILES);
 						sbbs->console&=~CON_L_ECHO;
 						sbbs->online=FALSE;
-						remove(str);
+						if(remove(str))
+							sbbs->errormsg(WHERE, ERR_REMOVE, str, 0);
 					}
 				}
 				globfree(&g);
@@ -2926,8 +2931,10 @@ void event_thread(void* arg)
 					&& sbbs->cfg.qhub[i]->days&(1<<now_tm.tm_wday))) {
 				SAFEPRINTF2(str,"%sqnet/%s.now"
 					,sbbs->cfg.data_dir,sbbs->cfg.qhub[i]->id);
-				if(fexistcase(str))
-					remove(str);					/* Remove semaphore file */
+				if(fexistcase(str)) {
+					if(remove(str))					/* Remove semaphore file */
+						sbbs->errormsg(WHERE, ERR_REMOVE, str, 0);
+				}
 				SAFEPRINTF2(str,"%sqnet/%s.ptr"
 					,sbbs->cfg.data_dir,sbbs->cfg.qhub[i]->id);
 				file=sbbs->nopen(str,O_RDONLY);
@@ -3113,8 +3120,10 @@ void event_thread(void* arg)
 							}
 						}
 						SAFEPRINTF2(str,"%s%s.now",sbbs->cfg.data_dir,sbbs->cfg.event[i]->code);
-						if(fexistcase(str))
-							remove(str);
+						if(fexistcase(str)) {
+							if(remove(str))
+								sbbs->errormsg(WHERE, ERR_REMOVE, str, 0);
+						}
 						sbbs->cfg.event[i]->last=(time32_t)now;
 					} else {	// Exclusive event to run on a node under our control
 						sbbs->lprintf(LOG_INFO,"Waiting for all nodes to become inactive before running timed event");
@@ -3191,8 +3200,10 @@ void event_thread(void* arg)
 					strcpy(sbbs->cfg.node_dir, sbbs->cfg.node_path[sbbs->cfg.node_num-1]);
 
 					SAFEPRINTF2(str,"%s%s.now",sbbs->cfg.data_dir,sbbs->cfg.event[i]->code);
-					if(fexistcase(str))
-						remove(str);
+					if(fexistcase(str)) {
+						if(remove(str))
+							sbbs->errormsg(WHERE, ERR_REMOVE, str, 0);
+					}
 					if(sbbs->cfg.event[i]->misc&EVENT_EXCL) {
 						sbbs->getnodedat(sbbs->cfg.event[i]->node,&node,1);
 						node.status=NODE_EVENT_RUNNING;
-- 
GitLab