diff --git a/src/sbbs3/ftpsrvr.c b/src/sbbs3/ftpsrvr.c index 5077391baad853508caffcb8e331c6de81806fc0..f67899d8609f057cbc8b2d13f294bad9a5e95dc1 100644 --- a/src/sbbs3/ftpsrvr.c +++ b/src/sbbs3/ftpsrvr.c @@ -6049,6 +6049,7 @@ void DLLCALL ftp_server(void* arg) startup->shutdown_now=FALSE; terminate_server=FALSE; protected_uint32_init(&thread_count, 0); + protected_uint32_init(&active_clients, 0); do { /* Setup intelligent defaults */ @@ -6124,8 +6125,8 @@ void DLLCALL ftp_server(void* arg) else SAFECOPY(scfg.temp_dir,"../temp"); prep_dir(scfg.ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir)); - if(!md(scfg.temp_dir)) { - lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", errno, strerror(errno), scfg.temp_dir); + if((i = md(scfg.temp_dir)) != 0) { + lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", i, strerror(i), scfg.temp_dir); cleanup(1,__LINE__); break; } @@ -6155,7 +6156,6 @@ void DLLCALL ftp_server(void* arg) lprintf(LOG_DEBUG,"Maximum inactivity: %d seconds",startup->max_inactivity); - protected_uint32_init(&active_clients, 0); update_clients(); strlwr(scfg.sys_id); /* Use lower-case unix-looking System ID for group name */ diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c index 1691863a88f61fddbb38d907ad00c859a05ca4f5..61c69d880bb60fabb114d7f7d955beaeae08bae1 100644 --- a/src/sbbs3/load_cfg.c +++ b/src/sbbs3/load_cfg.c @@ -326,13 +326,13 @@ void DLLCALL free_text(char* text[]) /****************************************************************************/ /* If the directory 'path' doesn't exist, create it. */ /****************************************************************************/ -BOOL md(const char* inpath) +int md(const char* inpath) { char path[MAX_PATH+1]; char* p; if(inpath[0]==0) - return(FALSE); + return EINVAL; SAFECOPY(path,inpath); @@ -348,10 +348,10 @@ BOOL md(const char* inpath) if(!isdir(path)) { if(mkpath(path) != 0) - return FALSE; + return errno; } - return(TRUE); + return 0; } /****************************************************************************/ diff --git a/src/sbbs3/mailsrvr.c b/src/sbbs3/mailsrvr.c index 3a1ff9a983cc7605c37d72a4b5adcde2ebf1a5c2..44607a9e5c69e0e2b3ed5f87e77b56dd00e291db 100644 --- a/src/sbbs3/mailsrvr.c +++ b/src/sbbs3/mailsrvr.c @@ -5867,7 +5867,6 @@ static void cleanup(int code) } lprintf(LOG_INFO, "0000 Done waiting for child threads to terminate"); } - free_cfg(&scfg); semfile_list_free(&recycle_semfiles); @@ -5899,7 +5898,6 @@ static void cleanup(int code) if(WSAInitialized && WSACleanup()!=0) lprintf(LOG_ERR,"0000 !WSACleanup ERROR %d",ERROR_VALUE); #endif - thread_down(); status("Down"); if(terminate_server || code) { @@ -6014,6 +6012,7 @@ void DLLCALL mail_server(void* arg) SetThreadName("sbbs/mailServer"); protected_uint32_init(&thread_count, 0); + protected_uint32_init(&active_clients, 0); do { /* Setup intelligent defaults */ @@ -6084,8 +6083,8 @@ void DLLCALL mail_server(void* arg) else SAFECOPY(scfg.temp_dir,"../temp"); prep_dir(scfg.ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir)); - if(!md(scfg.temp_dir)) { - lprintf(LOG_CRIT, "!ERROR %d (%s) creating directory: %s", errno, strerror(errno), scfg.temp_dir); + if((i = md(scfg.temp_dir)) != 0) { + lprintf(LOG_CRIT, "!ERROR %d (%s) creating directory: %s", i, strerror(i), scfg.temp_dir); cleanup(1); return; } @@ -6149,7 +6148,6 @@ void DLLCALL mail_server(void* arg) lprintf(LOG_DEBUG,"Maximum inactivity: %u seconds",startup->max_inactivity); - protected_uint32_init(&active_clients, 0); update_clients(); /* open a socket and wait for a client */ diff --git a/src/sbbs3/main.cpp b/src/sbbs3/main.cpp index d07f8e3f3920a2bedadbdf3389e5902e1793ad1b..dc20a334cd513c4ad51201baa4b7495f203fa04f 100644 --- a/src/sbbs3/main.cpp +++ b/src/sbbs3/main.cpp @@ -3312,8 +3312,8 @@ sbbs_t::sbbs_t(ushort node_num, union xp_sockaddr *addr, size_t addr_len, const else SAFECOPY(cfg.temp_dir,"../temp"); prep_dir(cfg.ctrl_dir, cfg.temp_dir, sizeof(cfg.temp_dir)); - if(!md(cfg.temp_dir)) - lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", errno, strerror(errno), cfg.temp_dir); + if((i = md(cfg.temp_dir)) != 0) + lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", i, strerror(i), cfg.temp_dir); if(sd==INVALID_SOCKET) { /* events thread */ if(startup->first_node==1) SAFEPRINTF(path,"%sevent",cfg.temp_dir); @@ -3541,8 +3541,8 @@ bool sbbs_t::init() return(false); } - if(!md(cfg.temp_dir)) { - lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", errno, strerror(errno), cfg.temp_dir); + if((i = md(cfg.temp_dir)) != 0) { + lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", i, strerror(i), cfg.temp_dir); return false; } @@ -5124,8 +5124,9 @@ void DLLCALL bbs_thread(void* arg) lprintf(LOG_INFO,"Verifying/creating node directories"); for(i=0;i<=scfg.sys_nodes;i++) { if(i) { - if(!md(scfg.node_path[i-1])) { - lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", errno, strerror(errno), scfg.node_path[i-1]); + int err; + if((err = md(scfg.node_path[i-1])) != 0) { + lprintf(LOG_CRIT,"!ERROR %d (%s) creating directory: %s", err, strerror(err), scfg.node_path[i-1]); cleanup(1); return; } diff --git a/src/sbbs3/sbbs.h b/src/sbbs3/sbbs.h index ad52dda442783c221d6594ec0fad395b797dcd39..062e9747181ba733acdf27c3824e95a46f0dfbfc 100644 --- a/src/sbbs3/sbbs.h +++ b/src/sbbs3/sbbs.h @@ -1259,8 +1259,7 @@ extern "C" { DLLEXPORT void DLLCALL free_text(char* text[]); DLLEXPORT ushort DLLCALL sys_timezone(scfg_t* cfg); DLLEXPORT char * DLLCALL prep_dir(const char* base, char* dir, size_t buflen); - DLLEXPORT BOOL DLLCALL md(const char *path); - + DLLEXPORT int DLLCALL md(const char *path); /* scfgsave.c */ DLLEXPORT BOOL DLLCALL save_cfg(scfg_t* cfg, int backup_level); diff --git a/src/sbbs3/services.c b/src/sbbs3/services.c index d2346e18c276bb71792f54024ed17b7579583920..f09ba8ee17dde8a0a4ce8007e55c88dbf4b3f58b 100644 --- a/src/sbbs3/services.c +++ b/src/sbbs3/services.c @@ -1837,8 +1837,8 @@ void DLLCALL services_thread(void* arg) else SAFECOPY(scfg.temp_dir,"../temp"); prep_dir(scfg.ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir)); - if(!md(scfg.temp_dir)) { - lprintf(LOG_CRIT, "!ERROR %d (%s) creating directory: %s", errno, strerror(errno), scfg.temp_dir); + if((i = md(scfg.temp_dir)) != 0) { + lprintf(LOG_CRIT, "!ERROR %d (%s) creating directory: %s", i, strerror(i), scfg.temp_dir); cleanup(1); return; } diff --git a/src/sbbs3/websrvr.c b/src/sbbs3/websrvr.c index d7a10d54b4a48a172d563ca43d36d223ecaca9d0..bfabe167b4b37e9d8f668705917f63a6d06766d1 100644 --- a/src/sbbs3/websrvr.c +++ b/src/sbbs3/websrvr.c @@ -6914,7 +6914,8 @@ void DLLCALL web_server(void* arg) http_session_t * session=NULL; void *acc_type; char *ssl_estr; - int lvl; + int lvl; + int i; startup=(web_startup_t*)arg; @@ -6953,6 +6954,7 @@ void DLLCALL web_server(void* arg) startup->shutdown_now=FALSE; terminate_server=FALSE; protected_uint32_init(&thread_count, 0); + protected_uint32_init(&active_clients,0); do { /* Setup intelligent defaults */ @@ -7033,8 +7035,8 @@ void DLLCALL web_server(void* arg) else SAFECOPY(scfg.temp_dir,"../temp"); prep_dir(startup->ctrl_dir, scfg.temp_dir, sizeof(scfg.temp_dir)); - if(!md(scfg.temp_dir)) { - lprintf(LOG_CRIT, "!ERROR %d (%s) creating directory: %s", errno, strerror(errno), scfg.temp_dir); + if((i = md(scfg.temp_dir)) != 0) { + lprintf(LOG_CRIT, "!ERROR %d (%s) creating directory: %s", i, strerror(i), scfg.temp_dir); cleanup(1); return; } @@ -7074,7 +7076,6 @@ void DLLCALL web_server(void* arg) if(uptime==0) uptime=time(NULL); /* this must be done *after* setting the timezone */ - protected_uint32_init(&active_clients,0); update_clients(); /* open a socket and wait for a client */