示例#1
0
文件: conf.c 项目: donington/cwiid
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;
}
示例#2
0
文件: conf.c 项目: esaule/cwiid
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;
}
示例#3
0
文件: conf.c 项目: esaule/cwiid
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");
}