Skip to content
Snippets Groups Projects
Commit 6fa5e196 authored by Rob Swindell's avatar Rob Swindell :speech_balloon:
Browse files

Don't require main.ini to load successfully, set default values

JSexec needs to be able to run upgrade_to_v320.js without main.ini
already existing, but we need some cfg values (e.g. exec_dir) to
find/execute scripts.

Added -R option to jsexec to (re)require successful config file
loaded, if/when needed by something.
parent fea318b3
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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);
......
......@@ -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;
}
/****************************************************************************/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment