int conf_load(struct conf *conf, const char *conf_name, char *config_search_dirs[], char *plugin_search_dirs[]) { conf_init(conf); cur_conf = conf; cur_conf->config_search_dirs = config_search_dirs; cur_conf->plugin_search_dirs = plugin_search_dirs; if (!(yyin = conf_push_config(cur_conf, conf_name, NULL))) { return -1; } if (yyparse()) { if (fclose(yyin)) { wminput_err("Error closing configuration file"); } conf_unload(cur_conf); return -1; } if (uinput_open(cur_conf)) { conf_unload(cur_conf); return -1; } return 0; }
int conf_load(struct conf *conf, const char *conf_name, char *config_search_dirs[], char *plugin_search_dirs[]) { if (first_time) { struct sigaction sa; sa.sa_handler = reloadconf; sigemptyset (&(sa.sa_mask)); sa.sa_flags = 0; first_time = 0; stored_conf_name = conf_name; sigaction (SIGHUP, &sa, NULL); } conf_init(conf); cur_conf = conf; cur_conf->config_search_dirs = config_search_dirs; cur_conf->plugin_search_dirs = plugin_search_dirs; if (!(yyin = conf_push_config(cur_conf, conf_name, NULL))) { return -1; } if (yyparse()) { if (fclose(yyin)) { wminput_err("Error closing configuration file"); } conf_unload(cur_conf); return -1; } if (uinput_open(cur_conf)) { conf_unload(cur_conf); return -1; } return 0; }
static void reloadconf (int ignore) { if (!(yyin = conf_push_config(cur_conf, stored_conf_name, NULL))) { wminput_err("Can not reload configuration file"); exit(-1); } if (yyin == NULL) { wminput_err("Can not reload configuration file"); conf_unload(cur_conf); exit(-1); } yyrestart(yyin); if (yyparse()) { if (fclose(yyin)) { wminput_err("Error closing configuration file"); } conf_unload(cur_conf); exit(-1); } wminput_err("Configuration reloaded"); }