Commit 7a8b2fe4 authored by Robert Schmidt's avatar Robert Schmidt

config module: print clear error when config file does not exist

Print a clear error if a config file does not exist (unclear previously,
when the user would get a confusing, unspecific, "file I/O error" on
line 0)

I tried to free the memory that had been allocated at that point, and
verified that using the address sanitizer. Nevertheless, the function
does too much, and is too complicated for refactoring.
parent b9fd5a6f
......@@ -343,9 +343,20 @@ configmodule_interface_t *load_configmodule(int argc,
atoken = strtok_r(NULL,":",&strtokctx);
}
printf("[CONFIG] get parameters from %s ", cfgmode);
for (i = 0; i < cfgptr->num_cfgP; i++) {
printf("%s ", cfgptr->cfgP[i]);
/* check if that file actually exists */
if (access(cfgptr->cfgP[i], F_OK) != 0) {
fprintf(stderr, "error: file %s does not exist\n", cfgptr->cfgP[i]);
for (int j = 0; j < cfgptr->num_cfgP; ++j)
free(cfgptr->cfgP[j]);
free(modeparams);
free(cfgptr->cfgmode);
free(cfgptr->argv_info);
free(cfgptr);
if (cfgmode != NULL)
free(cfgmode);
return NULL;
}
}
if (cfgptr->rtflags & CONFIG_PRINTPARAMS) {
......
......@@ -576,8 +576,10 @@ int config_libconfig_init(configmodule_interface_t *cfg)
config_set_auto_convert (&(libconfig_privdata.cfg), CONFIG_TRUE);
/* Read the file. If there is an error, report it and exit. */
if( config_read_file(&(libconfig_privdata.cfg), libconfig_privdata.configfile) == CONFIG_FALSE) {
fprintf(stderr,"[LIBCONFIG] %s %d file %s - line %d: %s\n",__FILE__, __LINE__,
libconfig_privdata.configfile, config_error_line(&(libconfig_privdata.cfg)),
fprintf(stderr,
"[LIBCONFIG] file %s - line %d: %s\n",
libconfig_privdata.configfile,
config_error_line(&(libconfig_privdata.cfg)),
config_error_text(&(libconfig_privdata.cfg)));
config_destroy(&(libconfig_privdata.cfg));
printf( "\n");
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment