Merge remote-tracking branch 'phr0z3nt04st/master'
[umurmur.git] / src / conf.c
index d85ff7c0eb20aef5613d3fc1661e8ed016fd264a..38b32852775c1727ffbd4c045515294a42c4f611 100644 (file)
@@ -1,5 +1,5 @@
-/* Copyright (C) 2009-2010, Martin Johansson <martin@fatbob.nu>
-   Copyright (C) 2005-2010, Thorvald Natvig <thorvald@natvig.com>
+/* Copyright (C) 2009-2011, Martin Johansson <martin@fatbob.nu>
+   Copyright (C) 2005-2011, Thorvald Natvig <thorvald@natvig.com>
 
    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
@@ -48,21 +47,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 +135,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;