X-Git-Url: http://git.code-monkey.de/?a=blobdiff_plain;f=src%2Fconf.c;h=2a83e53e0712025f072a3587f4d29d3bb8ff86a1;hb=76f6cc6fd2eecb29f265226e43408a0d9ad41174;hp=72fd8f1563ec7c92ab8c767f10f02e9312798843;hpb=0fd109448ce43a6a53866614423463788c278ff6;p=umurmur.git diff --git a/src/conf.c b/src/conf.c index 72fd8f1..2a83e53 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. @@ -40,7 +40,6 @@ static config_t configuration; -#define DEFAULT_CONFIG "/etc/umurmur.conf" #define DEFAULT_WELCOME "Welcome to uMurmur!" #define DEFAULT_MAX_CLIENTS 10 #define DEFAULT_MAX_BANDWIDTH 48000 @@ -59,6 +58,21 @@ void Conf_init(const char *conffile) } } +bool_t Conf_ok(const char *conffile) +{ + bool_t rc = true; + config_init(&configuration); + if (conffile == NULL) + conffile = defaultconfig; + if (config_read_file(&configuration, conffile) != CONFIG_TRUE) { + fprintf(stderr, "Error in config file %s line %d: %s\n", conffile, + config_error_line(&configuration), config_error_text(&configuration)); + rc = false; + } + config_destroy(&configuration); + return rc; +} + void Conf_deinit() { config_destroy(&configuration); @@ -136,6 +150,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; @@ -202,6 +249,13 @@ int Conf_getNextChannel(conf_channel_t *chdesc, int index) else chdesc->description = config_setting_get_string(setting); + ret = snprintf(configstr, maxconfig, "channels.[%d].password", index); + setting = config_lookup(&configuration, configstr); + if (ret >= maxconfig || ret < 0 || setting == NULL) /* Optional */ + chdesc->password = NULL; + else + chdesc->password = config_setting_get_string(setting); + ret = snprintf(configstr, maxconfig, "channels.[%d].noenter", index); setting = config_lookup(&configuration, configstr); if (ret >= maxconfig || ret < 0 || setting == NULL) /* Optional */