aboutsummaryrefslogtreecommitdiff
path: root/config_file.c
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 /config_file.c
parent9ae97cae487132a9a5f1766ef906d08aabef19cf (diff)
downloadparamano-cf9454885f0aa0defe52c3d70727e377a12cd2bc.tar.xz
Updated config to follow XDG base dir standard
Diffstat (limited to 'config_file.c')
-rw-r--r--config_file.c54
1 files changed, 54 insertions, 0 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)
{