aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Phillips <dbphillipsnz@gmail.com>2015-11-09 22:49:04 +1300
committerDavid Phillips <dbphillipsnz@gmail.com>2015-11-09 22:49:04 +1300
commitcf9454885f0aa0defe52c3d70727e377a12cd2bc (patch)
treeefaf6c956e26183c0d82bb01ee3d22a7492b1033
parent9ae97cae487132a9a5f1766ef906d08aabef19cf (diff)
downloadparamano-cf9454885f0aa0defe52c3d70727e377a12cd2bc.tar.xz
Updated config to follow XDG base dir standard
-rw-r--r--config_file.c54
-rw-r--r--config_file.h1
-rw-r--r--paramano.c58
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 <gtk/gtk.h>
#include <glib.h>
+#include <stdlib.h>
+#include <libintl.h>
+
+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 :
+ * <http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html>
+ */
+ 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);
-}
-