Added config implementation using GKeyFile.
authorThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Wed, 23 Jan 2008 16:33:46 +0000 (14:33 -0200)
committerThadeu Lima de Souza Cascardo <cascardo@minaslivre.org>
Wed, 23 Jan 2008 16:33:46 +0000 (14:33 -0200)
backend/files/giochannel.c
config/gkeyfile.c [new file with mode: 0644]
include/atompub/ctx.h

index a8c90fe..07f5934 100644 (file)
@@ -24,7 +24,10 @@ gchar *giochannel_iri_to_filename (AtomCtx *ctx, IRI *iri)
 {
   gchar *root = atom_config_get_str (ctx, "root");
   gchar *path = iri_get_path (iri);
-  return g_build_filename (root, path, NULL);
+  gchar *filename = g_build_filename (root, path, NULL);
+  g_free (root);
+  g_free (path);
+  return filename;
 }
 
 Atom * giochannel_atom_retrieve_resource (AtomCtx *ctx, IRI *iri)
diff --git a/config/gkeyfile.c b/config/gkeyfile.c
new file mode 100644 (file)
index 0000000..34c6c58
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ *  Copyright (C) 2007  Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
+ *
+ *  This program is free software; you can redistribute it and/or modify
+ *  it under the terms of the GNU General Public License as published by
+ *  the Free Software Foundation; either version 2 of the License, or
+ *  (at your option) any later version.
+ *
+ *  This program is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *  GNU General Public License for more details.
+ *
+ *  You should have received a copy of the GNU General Public License along
+ *  with this program; if not, write to the Free Software Foundation, Inc.,
+ *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+
+#include <atompub/atom.h>
+#include <glib.h>
+
+gchar *
+gkeyfile_atom_config_get_str (AtomCtx *ctx, gchar * key)
+{
+  GKeyFile *keyfile;
+  gchar *value;
+  GError *error = NULL;
+  keyfile = atom_config_data (ctx);
+  value = g_key_file_get_string (keyfile, "", key, &error);
+  if (value == NULL)
+    {
+      atom_error_set (ctx, error);
+    }
+  return value;
+}
index a57c19f..21758ff 100644 (file)
@@ -22,4 +22,6 @@
 
 typedef struct _atom_ctx AtomCtx;
 
+void * atom_config_data (AtomCtx *);
+
 #endif