Exemplo n.º 1
0
Arquivo: main.c Projeto: 91D2/pvpgn
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;
}
Exemplo n.º 2
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;
}
Exemplo n.º 3
0
extern int d2dbs_prefs_reload(char const * filename)
{
	d2dbs_prefs_unload();
	if (d2dbs_prefs_load(filename)<0) return -1;
	return 0;
}