diff --git a/src/sbbs3/jsexec.c b/src/sbbs3/jsexec.c index 5558f9a507b0a4d0242d9588c710a62ed7976ab7..7f9f365f7b59cf50561a9121426d3bd33e7fb60b 100644 --- a/src/sbbs3/jsexec.c +++ b/src/sbbs3/jsexec.c @@ -73,6 +73,7 @@ BOOL pause_on_exit=FALSE; BOOL pause_on_error=FALSE; BOOL terminated=FALSE; BOOL recycled; +BOOL require_cfg=FALSE; int log_level=DEFAULT_LOG_LEVEL; int err_level=DEFAULT_ERR_LOG_LVL; long umask_val = -1; @@ -121,6 +122,7 @@ void usage() " -c<ctrl_dir> specify path to CTRL directory\n" #else " -c<ctrl_dir> specify path to Synchronet CTRL directory\n" + " -R require successful load of configuration files\n" #endif " -C do not change the current working directory (to CTRL dir)\n" #if defined(__unix__) @@ -1398,6 +1400,9 @@ int main(int argc, char **argv, char** env) case 'q': confp=nulfp; break; + case 'R': + require_cfg = TRUE; + break; case 'v': banner(statfp); fprintf(statfp,"%s\n",(char *)JS_GetImplementationVersion()); @@ -1450,9 +1455,10 @@ int main(int argc, char **argv, char** env) fprintf(errfp,"!ERROR changing directory to: %s\n", scfg.ctrl_dir); fprintf(statfp,"\nLoading configuration files from %s\n",scfg.ctrl_dir); - if(!load_cfg(&scfg, text, /* prep: */TRUE, /* node: */FALSE, error, sizeof(error))) { + if(!load_cfg(&scfg, text, /* prep: */TRUE, require_cfg, error, sizeof(error))) { fprintf(errfp,"!ERROR loading configuration files: %s\n",error); - return(do_bail(1)); + if(require_cfg) + return(do_bail(1)); } SAFECOPY(scfg.temp_dir,"../temp"); #endif diff --git a/src/sbbs3/load_cfg.c b/src/sbbs3/load_cfg.c index 88127316d62f754ea732561657df7a3c351a8e28..59d405e275da00d1a5b4be0adbcb7d52e837eaa1 100644 --- a/src/sbbs3/load_cfg.c +++ b/src/sbbs3/load_cfg.c @@ -40,7 +40,7 @@ char * readtext(long *line, FILE *stream, long dflt); /****************************************************************************/ /* Initializes system and node configuration information and data variables */ /****************************************************************************/ -BOOL load_cfg(scfg_t* cfg, char* text[], BOOL prep, BOOL req_node, char* error, size_t maxerrlen) +BOOL load_cfg(scfg_t* cfg, char* text[], BOOL prep, BOOL req_cfg, char* error, size_t maxerrlen) { int i; long line=0L; @@ -62,7 +62,7 @@ BOOL load_cfg(scfg_t* cfg, char* text[], BOOL prep, BOOL req_node, char* error, cfg->node_num=1; backslash(cfg->ctrl_dir); - if(read_main_cfg(cfg, error, maxerrlen)==FALSE) + if(read_main_cfg(cfg, error, maxerrlen)==FALSE && req_cfg) return(FALSE); if(prep) @@ -71,7 +71,7 @@ BOOL load_cfg(scfg_t* cfg, char* text[], BOOL prep, BOOL req_node, char* error, SAFECOPY(cfg->node_dir,cfg->node_path[cfg->node_num-1]); prep_dir(cfg->ctrl_dir, cfg->node_dir, sizeof(cfg->node_dir)); - if(read_node_cfg(cfg, error, maxerrlen)==FALSE && req_node) + if(read_node_cfg(cfg, error, maxerrlen)==FALSE && req_cfg) return(FALSE); if(read_msgs_cfg(cfg, error, maxerrlen)==FALSE) return(FALSE); diff --git a/src/sbbs3/scfglib1.c b/src/sbbs3/scfglib1.c index 8f203da81645a0636207556da7e6834247a9c799..05db77b4a3eac0529a73fe626a9d00fd88970f7a 100644 --- a/src/sbbs3/scfglib1.c +++ b/src/sbbs3/scfglib1.c @@ -80,10 +80,11 @@ BOOL read_node_cfg(scfg_t* cfg, char* error, size_t maxerrlen) /****************************************************************************/ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen) { + BOOL result = FALSE; char path[MAX_PATH+1]; char errstr[256]; FILE* fp; - str_list_t ini; + str_list_t ini = NULL; char value[INI_MAX_VALUE_LEN]; const char* section = ROOT_SECTION; @@ -91,10 +92,11 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen) SAFEPRINTF2(path,"%s%s",cfg->ctrl_dir,fname); if((fp = fnopen(NULL, path, O_RDONLY)) == NULL) { safe_snprintf(error, maxerrlen, "%d (%s) opening %s",errno,safe_strerror(errno, errstr, sizeof(errstr)),path); - return FALSE; + } else { + ini = iniReadFile(fp); + fclose(fp); + result = TRUE; } - ini = iniReadFile(fp); - fclose(fp); SAFECOPY(cfg->sys_name, iniGetString(ini, section, "name", "", value)); SAFECOPY(cfg->sys_op, iniGetString(ini, section, "operator", "", value)); @@ -291,7 +293,7 @@ BOOL read_main_cfg(scfg_t* cfg, char* error, size_t maxerrlen) iniFreeStringList(shell_list); iniFreeStringList(ini); - return TRUE; + return result; } /****************************************************************************/