From cf9454885f0aa0defe52c3d70727e377a12cd2bc Mon Sep 17 00:00:00 2001 From: David Phillips Date: Mon, 9 Nov 2015 22:49:04 +1300 Subject: Updated config to follow XDG base dir standard --- config_file.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ config_file.h | 1 + paramano.c | 58 ---------------------------------------------------------- 3 files changed, 55 insertions(+), 58 deletions(-) diff --git a/config_file.c b/config_file.c index 17e3005..1fc9899 100644 --- a/config_file.c +++ b/config_file.c @@ -17,9 +17,63 @@ ************************************************************************/ #include "config_file.h" +#include "defaults.h" #include #include +#include +#include + +void config_init() +{ + struct config_file config; + char *xdg_config_home; + FILE* fd = NULL; + + config.key_file = NULL; + + /* Default to $HOME/.config/paramano.conf as specified in the XDG + * Base Directory Standard : + * + */ + xdg_config_home = getenv("XDG_CONFIG_HOME"); + if (xdg_config_home == NULL) + xdg_config_home = g_strconcat(getenv("HOME"), "/.config", NULL); + + config.file_name = g_strconcat(xdg_config_home, "/paramano.conf", NULL); + + if( (fd = fopen(config.file_name, "r")) ) + { + fclose(fd); + } else { + /* no (readable) user-specific config file, fall back */ + config.file_name = g_strconcat(PARAMANO_CONF, NULL); + } + + if(!config_open(&config)) + { + g_warning(_("Failed to open config files!\n")); + return; + } + + /* Reset defaults to default values */ + defaults_init(); + + DEFAULT_GOV = config_get_key(&config, "governor", "default"); + DEFAULT_FREQ = config_get_key(&config, "frequency", "default"); + DEFAULT_BAT_GOV = config_get_key(&config, "battery", "governor"); + DEFAULT_AC_GOV = config_get_key(&config, "ac", "governor"); + + char* temp; + if ((temp = config_get_key(&config, "battery", "show"))) + DEFAULT_SHOW_BATTERY = ( temp[0] == '1' ); + + if ((temp = config_get_key(&config, "extra", "theme"))) + snprintf(DEFAULT_THEME, sizeof(DEFAULT_THEME), "%s", temp); + + config_close(&config); + g_free(config.file_name); +} gboolean config_open(struct config_file* config_file) { diff --git a/config_file.h b/config_file.h index 736397d..7c9f8ab 100644 --- a/config_file.h +++ b/config_file.h @@ -25,6 +25,7 @@ struct config_file gchar* file_name; }; +void config_init(); gboolean config_open(struct config_file* config_file); void config_close(struct config_file* config_file); gchar* config_get_key(struct config_file* config_file, const gchar* group_name, const gchar* key_name); diff --git a/paramano.c b/paramano.c index fe8bdac..7c4db04 100644 --- a/paramano.c +++ b/paramano.c @@ -68,61 +68,3 @@ int main(int argc, char** argv) gtk_main(); return 0; } - - -/*********************************************************************** - * Load config - **********************************************************************/ -void config_init() -{ - struct config_file config; - FILE* fd = NULL; - bool home_config_exists = false; - - config.key_file = NULL; - config.file_name = g_strconcat(getenv("HOME"), "/.paramano.conf", NULL); - - - /* Check if ~/.paramano.conf exists */ - if( (fd = fopen(config.file_name, "r")) ) - { - /* If file exists, close it, set param to true */ - fclose(fd); - home_config_exists = true; - } else { - /* If file didn't exist, it's not open (don't close it), free filename var, set param to false */ - g_free(config.file_name); - home_config_exists = false; - } - - if(!home_config_exists) - config.file_name = g_strconcat(PARAMANO_CONF, NULL); - - gboolean success = config_open(&config); - if(!success) - { - g_warning(_("Failed to open config files!\n")); - return; - } - - /* Reset defaults to default values */ - defaults_init(); - - DEFAULT_GOV = config_get_key(&config, "governor", "default"); - DEFAULT_FREQ = config_get_key(&config, "frequency", "default"); - DEFAULT_BAT_GOV = config_get_key(&config, "battery", "governor"); - DEFAULT_AC_GOV = config_get_key(&config, "ac", "governor"); - - char* temp; - if ((temp = config_get_key(&config, "battery", "show"))) - DEFAULT_SHOW_BATTERY = ( temp[0] == '1' ); - - info("UID: %d GID: %d\n", getuid(), getgid()); - - if ((temp = config_get_key(&config, "extra", "theme"))) - snprintf(DEFAULT_THEME, sizeof(DEFAULT_THEME), "%s", temp); - -// g_free(config.file_name); - config_close(&config); -} - -- cgit v1.1