X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fconf.c;h=e3d417c262b6c5004720d5c66ac5a4b18d1b2e4a;hb=394374e5aa8fc361158b2234581bc412f58eed14;hp=a66d9eedc1e0107d041f7a91a8fdcd8175d590fe;hpb=b026c5ad0acc4388d05fa4768b75ee8d79403ea4;p=umurmur.git diff --git a/src/conf.c b/src/conf.c index a66d9ee..e3d417c 100644 --- a/src/conf.c +++ b/src/conf.c @@ -1,5 +1,5 @@ -/* Copyright (C) 2009-2010, Martin Johansson - Copyright (C) 2005-2010, Thorvald Natvig +/* Copyright (C) 2009-2011, Martin Johansson + Copyright (C) 2005-2011, Thorvald Natvig All rights reserved. @@ -48,21 +48,15 @@ static config_t configuration; const char defaultconfig[] = DEFAULT_CONFIG; -int Conf_init(const char *conffile) +void Conf_init(const char *conffile) { - const char *conf; - config_init(&configuration); if (conffile == NULL) - conf = defaultconfig; - else - conf = conffile; - if (config_read_file(&configuration, conf) != CONFIG_TRUE) { - fprintf(stderr, "Error in config file %s: %s at line %d\n", conffile, - config_error_text(&configuration), config_error_line(&configuration)); - exit(1); + conffile = defaultconfig; + if (config_read_file(&configuration, conffile) != CONFIG_TRUE) { + Log_fatal("Error in config file %s line %d: %s", conffile, + config_error_line(&configuration), config_error_text(&configuration)); } - return 0; } void Conf_deinit() @@ -142,6 +136,39 @@ const char *getStrConf(param_t param) return ""; } break; + case USERNAME: + setting = config_lookup(&configuration, "username"); + if (!setting) + return ""; + else { + if ((strsetting = config_setting_get_string(setting)) != NULL) + return strsetting; + else + return ""; + } + break; + case GROUPNAME: + setting = config_lookup(&configuration, "groupname"); + if (!setting) + return ""; + else { + if ((strsetting = config_setting_get_string(setting)) != NULL) + return strsetting; + else + return ""; + } + break; + case LOGFILE: + setting = config_lookup(&configuration, "logfile"); + if (!setting) + return NULL; + else { + if ((strsetting = config_setting_get_string(setting)) != NULL) + return strsetting; + else + return NULL; + } + break; default: doAssert(false); break; @@ -186,30 +213,31 @@ int getIntConf(param_t param) int Conf_getNextChannel(conf_channel_t *chdesc, int index) { config_setting_t *setting = NULL; - char configstr[64]; + int maxconfig = 64, ret = 0; + char configstr[maxconfig]; - sprintf(configstr, "channels.[%d].name", index); + ret = snprintf(configstr, maxconfig, "channels.[%d].name", index); setting = config_lookup(&configuration, configstr); - if (setting == NULL) + if (ret >= maxconfig || ret < 0 || setting == NULL) return -1; /* Required */ chdesc->name = config_setting_get_string(setting); - sprintf(configstr, "channels.[%d].parent", index); + ret = snprintf(configstr, maxconfig, "channels.[%d].parent", index); setting = config_lookup(&configuration, configstr); - if (setting == NULL) + if (ret >= maxconfig || ret < 0 || setting == NULL) return -1; /* Required */ chdesc->parent = config_setting_get_string(setting); - sprintf(configstr, "channels.[%d].description", index); + ret = snprintf(configstr, maxconfig, "channels.[%d].description", index); setting = config_lookup(&configuration, configstr); - if (setting == NULL) /* Optional */ + if (ret >= maxconfig || ret < 0 || setting == NULL) /* Optional */ chdesc->description = NULL; else chdesc->description = config_setting_get_string(setting); - sprintf(configstr, "channels.[%d].noenter", index); + ret = snprintf(configstr, maxconfig, "channels.[%d].noenter", index); setting = config_lookup(&configuration, configstr); - if (setting == NULL) /* Optional */ + if (ret >= maxconfig || ret < 0 || setting == NULL) /* Optional */ chdesc->noenter = false; else chdesc->noenter = config_setting_get_bool(setting); @@ -220,17 +248,18 @@ int Conf_getNextChannel(conf_channel_t *chdesc, int index) int Conf_getNextChannelLink(conf_channel_link_t *chlink, int index) { config_setting_t *setting = NULL; - char configstr[64]; + int maxconfig = 64, ret = 0; + char configstr[maxconfig]; - sprintf(configstr, "channel_links.[%d].source", index); + ret = snprintf(configstr, maxconfig, "channel_links.[%d].source", index); setting = config_lookup(&configuration, configstr); - if (setting == NULL) + if (ret >= maxconfig || ret < 0 || setting == NULL) return -1; chlink->source = config_setting_get_string(setting); - sprintf(configstr, "channel_links.[%d].destination", index); + ret = snprintf(configstr, maxconfig, "channel_links.[%d].destination", index); setting = config_lookup(&configuration, configstr); - if (setting == NULL) + if (ret >= maxconfig || ret < 0 || setting == NULL) return -1; chlink->destination = config_setting_get_string(setting);