diff options
Diffstat (limited to 'src/confparser.c')
-rw-r--r-- | src/confparser.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/src/confparser.c b/src/confparser.c index 95c8704..4599a84 100644 --- a/src/confparser.c +++ b/src/confparser.c @@ -17,8 +17,10 @@ ERRLOG(configfile); const char * const CONFIG_NAME = "/ckrc"; void conf_values_initialize(Conf *c) { - c->scrt_dir = NULL; - c->vc_dir = NULL; +#define X(var, str, name) \ + c->var = NULL; + CONFIG_VARIABLES_TABLE +#undef X } int remove_newline(char buff[]) { @@ -67,6 +69,7 @@ ConfigParserResult parse(Conf *conf, UserOpt *opt) { char confName[STR_L]; make_config_name(confName, opt->confDir); if ((confPtr = fopen(confName, "r")) == NULL) { + ERR("%s is not readable, check the permissions.", confName) return CPR_NO_CONFIG_FILE; } int flag = 1; @@ -97,17 +100,14 @@ ConfigParserResult parse(Conf *conf, UserOpt *opt) { else { ERR("Config error in line: %s", line); } + flag = 0; } } -#define X(var, str) \ - if (conf->var == NULL) { \ - flag = 0; \ - CONFIG_VARIABLES_TABLE -#undef X + if (flag) { return CPR_OK; } - return CPR_NO_CONFIG_FILE; + return CPR_WRONG_CONFIG; } int config_file_parse(Conf *conf, UserOpt *opt) { @@ -116,18 +116,17 @@ int config_file_parse(Conf *conf, UserOpt *opt) { #define X(var,str,name) \ case CPR_WRONG_##var: \ ERR("%s %s defined in config doesn't exist", name, conf->var); \ - return 0; \ + return -1; \ break; CONFIG_VARIABLES_TABLE #undef X - case CPR_NO_CONFIG_FILE: - ERR("The config file specified could not be found"); + case CPR_OK: return 0; + case CPR_NO_CONFIG_FILE: case CPR_WRONG_CONFIG: - ERR("Config help\n"); - case CPR_OK: - return 1; + break; } + return -1; } void free_conf(Conf *conf) { |