diff --git a/src/sbbs3/sbbsecho.c b/src/sbbs3/sbbsecho.c index 6a0ea1591fbaafcd957d87d5cac0e6d1a89aebb2..e56eef0e5f81d8259bc259145520dd64f7af0c30 100644 --- a/src/sbbs3/sbbsecho.c +++ b/src/sbbs3/sbbsecho.c @@ -103,7 +103,6 @@ char* text[TOTAL_TEXT]; bool pause_on_exit=false; bool pause_on_abend=false; -bool mtxfile_locked=false; bool terminated=false; str_list_t locked_bso_nodes; @@ -687,7 +686,7 @@ bool bso_lock_node(fidoaddr_t dest) for(unsigned attempt=0;;) { char tmp[128]; time_t t; - if(fmutex(fname, program_id(), cfg.bsy_timeout, &t)) + if(fmutex_open(fname, program_id(), cfg.bsy_timeout, &t, /* auto-remove: */true) >= 0) break; lprintf(LOG_NOTICE, "Node (%s) externally locked via: %s (since %s)", smb_faddrtoa(&dest, NULL), fname, time_as_hhmm(&scfg, t, tmp)); if(++attempt >= cfg.bso_lock_attempts) { @@ -2988,7 +2987,6 @@ const char* area_desc(const char* areatag) void cleanup(void) { char* p; - char path[MAX_PATH+1]; if(bad_areas != NULL) { lprintf(LOG_DEBUG, "Writing %lu areas to %s", (ulong)strListCount(bad_areas), cfg.badareafile); @@ -3011,16 +3009,6 @@ void cleanup(void) } strListFree(&bad_areas); } - while((p=strListPop(&locked_bso_nodes)) != NULL) { - delfile(p, __LINE__); - free(p); - } - - if(mtxfile_locked) { - SAFEPRINTF(path,"%ssbbsecho.bsy", scfg.ctrl_dir); - if(delfile(path, __LINE__)) - mtxfile_locked = false; - } } void bail(int error_level) @@ -6431,11 +6419,10 @@ int main(int argc, char **argv) SAFEPRINTF(path,"%ssbbsecho.bsy", scfg.ctrl_dir); time_t t; - if(!fmutex(path, program_id(), cfg.bsy_timeout, &t)) { + if(fmutex_open(path, program_id(), cfg.bsy_timeout, &t, /* auto-remove: */true) < 0) { lprintf(LOG_WARNING, "Mutex file exists (%s): SBBSecho appears to be already running since %s", path, time_as_hhmm(&scfg, t, str)); bail(1); } - mtxfile_locked = true; atexit(cleanup); if(cfg.max_log_size && ftello(fidologfile) >= cfg.max_log_size) {