#include #include #include "walls_conf.h" GKeyFile *keyfile = NULL; void conf_open() { gchar *filename; gchar *confdir; GError *error = NULL; keyfile = g_key_file_new(); if(!keyfile) { g_warning("Could not create key"); return; } filename = g_strdup_printf("%s/walls/config", g_get_user_config_dir()); confdir = g_path_get_dirname(filename); if(g_access(confdir, F_OK) == -1) { g_mkdir_with_parents(confdir, 0700); } g_free(confdir); if(!g_key_file_load_from_file(keyfile, filename, G_KEY_FILE_KEEP_COMMENTS | G_KEY_FILE_KEEP_TRANSLATIONS, &error)) { g_warning("Can't read config: %s", error->message); g_error_free(error); } g_free(filename); } gint conf_get_int(const gchar *group_name, const gchar *key, gint _default) { GError *error = NULL; gint ret; ret = g_key_file_get_integer(keyfile, group_name, key, &error); if(ret == 0 && error) { g_warning("Can't get key from config: %s", error->message); g_error_free(error); return _default; } return ret; } void conf_close() { gchar *s, *filename; GError *error = NULL; if(keyfile) { filename = g_strdup_printf("%s/walls/config", g_get_user_config_dir()); s = g_key_file_to_data(keyfile, NULL, NULL); if(!g_file_set_contents(filename, s, -1, &error)) { g_warning("%s", error->message); g_error_free(error); } g_free(filename); g_free(s); g_key_file_free(keyfile); keyfile = NULL; } }