static int config_init(int argc, char * * argv) { char const * levels; char * temp; char const * tok; int pid; if (cmdline_load(argc, argv)<0) { return -1; } #ifdef DO_DAEMONIZE if (!cmdline_get_foreground()) { if (!((pid = setup_daemon()) == 0)) { return pid; } } #endif if (d2dbs_prefs_load(cmdline_get_preffile())<0) { eventlog(eventlog_level_error,__FUNCTION__,"error loading configuration file %s",cmdline_get_preffile()); return -1; } eventlog_clear_level(); if ((levels = d2dbs_prefs_get_loglevels())) { temp = xstrdup(levels); tok = strtok(temp,","); /* strtok modifies the string it is passed */ while (tok) { if (eventlog_add_level(tok)<0) eventlog(eventlog_level_error,__FUNCTION__,"could not add log level \"%s\"",tok); tok = strtok(NULL,","); } xfree(temp); } #ifdef DO_DAEMONIZE if (cmdline_get_foreground()) { eventlog_set(stderr); } else #endif { if (cmdline_get_logfile()) { if (eventlog_open(cmdline_get_logfile())<0) { eventlog(eventlog_level_error,__FUNCTION__,"error open eventlog file %s",cmdline_get_logfile()); return -1; } } else { if (eventlog_open(d2dbs_prefs_get_logfile())<0) { eventlog(eventlog_level_error,__FUNCTION__,"error open eventlog file %s",d2dbs_prefs_get_logfile()); return -1; } } } return 0; }
static int config_init(int argc, char * * argv) { char const * levels; char * temp; char const * tok; int pid; if (d2dbs_cmdline_parse(argc, argv)<0) { return -1; } #ifdef WIN32 if (d2dbs_cmdline_get_run_as_service()) { Win32_ServiceRun(); return 1; } #endif if (d2dbs_cmdline_get_version()) { d2dbs_cmdline_show_version(); return -1; } if (d2dbs_cmdline_get_help()) { d2dbs_cmdline_show_help(); return -1; } #ifdef DO_DAEMONIZE if ((!d2dbs_cmdline_get_foreground()) && (!d2dbs_cmdline_get_debugmode())) { if (!((pid = setup_daemon()) == 0)) { return pid; } } #endif #ifdef WIN32 if (d2dbs_cmdline_get_make_service()) { if (strcmp(d2dbs_cmdline_get_make_service(), "install") == 0) { fprintf(stderr, "Installing service\n"); Win32_ServiceInstall(); return 1; } if (strcmp(d2dbs_cmdline_get_make_service(), "uninstall") == 0) { fprintf(stderr, "Uninstalling service\n"); Win32_ServiceUninstall(); return 1; } } #endif if (d2dbs_prefs_load(d2dbs_cmdline_get_prefs_file())<0) { eventlog(eventlog_level_error,__FUNCTION__,"error loading configuration file %s",d2dbs_cmdline_get_prefs_file()); return -1; } eventlog_clear_level(); if ((levels = d2dbs_prefs_get_loglevels())) { temp = xstrdup(levels); tok = strtok(temp,","); /* strtok modifies the string it is passed */ while (tok) { if (eventlog_add_level(tok)<0) eventlog(eventlog_level_error,__FUNCTION__,"could not add log level \"%s\"",tok); tok = strtok(NULL,","); } xfree(temp); } if (d2dbs_cmdline_get_debugmode()) { eventlog_set(stderr); } else if (d2dbs_cmdline_get_logfile()) { if (eventlog_open(d2dbs_cmdline_get_logfile())<0) { eventlog(eventlog_level_error,__FUNCTION__,"error open eventlog file %s",d2dbs_cmdline_get_logfile()); return -1; } } else { if (eventlog_open(d2dbs_prefs_get_logfile())<0) { eventlog(eventlog_level_error,__FUNCTION__,"error open eventlog file %s",d2dbs_prefs_get_logfile()); return -1; } } return 0; }
extern int d2dbs_prefs_reload(char const * filename) { d2dbs_prefs_unload(); if (d2dbs_prefs_load(filename)<0) return -1; return 0; }