diff options
Diffstat (limited to 'mixgtk')
| -rw-r--r-- | mixgtk/mixgtk_config.c | 91 | 
1 files changed, 9 insertions, 82 deletions
| diff --git a/mixgtk/mixgtk_config.c b/mixgtk/mixgtk_config.c index dfb1ad8..267b443 100644 --- a/mixgtk/mixgtk_config.c +++ b/mixgtk/mixgtk_config.c @@ -26,131 +26,58 @@  #include <sys/types.h>  #include <sys/stat.h>  #include <errno.h> +#include <mixlib/mix_config.h>  #include "mixgtk.h"  #include "mixgtk_config.h" -static const gchar *CONFIG_FILENAME = "config"; -static const gchar COMMENT_PREFIX = '#'; -static const gchar *AUTOSAVE_FLAG = "Autosave";  static const gchar *SPLIT_KEY = "Split";  static const gchar *SPLIT_YES = "Yes";  static const gchar *SPLIT_NO = "No"; - -static GHashTable *items_; -static gchar *config_ = NULL; -static gboolean autosave_ = FALSE; +static mix_config_t *config_ = NULL;  /* load configuration */  gboolean  mixgtk_config_load (void)  { -  const gchar *autosave; -  FILE *f; -  gchar *mixdir = g_strdup_printf ("%s/%s", g_get_home_dir (), MIXGTK_FILES_DIR); -  int k = mkdir (mixdir, S_IRWXU | S_IRWXG | S_IRWXO); -  if (!k) g_message ("Configuration directory %s created\n", mixdir); -  config_ = g_strdup_printf ("%s/%s", mixdir, CONFIG_FILENAME); -  items_ = g_hash_table_new (g_str_hash, g_str_equal); -  f = fopen (config_, "r"); -  if (f != NULL) -    { -      enum {LEN = 256}; -      gchar buffer[LEN]; -      gchar *line = buffer; -      while (!feof (f)) -	{ -	  line = fgets (line, LEN, f); -	  if (line) line = g_strstrip (line); -	  if (line && line[0] != COMMENT_PREFIX) -	    { -	      gchar **vals = g_strsplit (line, "=", 2); -	      g_hash_table_insert (items_, -				   (gpointer)g_strdup (g_strstrip (vals[0])), -				   (gpointer)g_strdup (g_strstrip (vals[1]))); -	      g_strfreev (vals); -	    } -	} -      fclose (f); -    } -       -  autosave = mixgtk_config_get (AUTOSAVE_FLAG); -  autosave_ = autosave && !g_strcasecmp (autosave, "True"); -  g_free (mixdir); -  return TRUE; +  if (config_ == NULL) config_ = mix_config_new (NULL, NULL); +  return (config_ != NULL);  }  /* autosave state */  gboolean  mixgtk_config_is_autosave (void)  { -  return autosave_; +  return mix_config_is_autosave (config_);  }  void  mixgtk_config_set_autosave (gboolean autosave)  { -  if (autosave != autosave_) -    { -      mixgtk_config_update (AUTOSAVE_FLAG, autosave? "True" : "False"); -      autosave_ = autosave; -    } +  mix_config_set_autosave (config_, autosave);  }  /* update config item */  void  mixgtk_config_update (const gchar *key, const gchar *value)  { -  gpointer tmp = NULL; -   -  g_return_if_fail (key != NULL); -  g_return_if_fail (value != NULL); -   -  tmp = g_hash_table_lookup (items_, key); -  if (tmp) -    { -      g_free (tmp); -      tmp = (gpointer)key; -    } -  else -    { -      tmp = (gpointer)g_strdup (key); -    } -   -  g_hash_table_insert (items_, tmp, g_strdup (value)); +  mix_config_update (config_, key, value);  }  /* get config item */  const gchar *  mixgtk_config_get (const gchar *key)  { -  return (const gchar*)g_hash_table_lookup (items_, key); +  return mix_config_get (config_, key);  } -  /* save configuration */ -static void -save_ (gpointer key, gpointer value, gpointer file) -{ -  fprintf ((FILE *)file, "%s=%s\n", (char *)key, (char *)value); -} -  void  mixgtk_config_save (void)  { -  FILE *f = fopen (config_, "w"); -  if (!f) -    { -      g_warning ("Unable to open config file %s (%s)", -		 config_, g_strerror (errno)); -      return; -    } -  g_hash_table_foreach (items_, save_, (gpointer)f); -  fclose (f); +  mix_config_save (config_);  } -   -  gboolean  mixgtk_config_is_split (void)  { | 
