Implement enumeration of entries for GIO backend
authorThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Sat, 9 Aug 2008 06:09:18 +0000 (03:09 -0300)
committerThadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
Sat, 9 Aug 2008 08:34:40 +0000 (05:34 -0300)
backend/gio/gio.c

index a6651f6..62f3ead 100644 (file)
@@ -65,6 +65,42 @@ gio_atom_retrieve_resource (AtomCtx *ctx, IRI *iri)
   return atom;
 }
 
+static void
+gio_enumerate_entries (AtomCtx *ctx, Atom ***entries, size_t *len)
+{
+  GFile *dir;
+  GFileEnumerator *enumerator;
+  GFileInfo *info;
+  GFile *file;
+  gchar *root;
+  gchar *name;
+  gchar *filename;
+  GPtrArray *array;
+  root = atom_config_get_str (ctx, "gio", "root");
+  dir = g_file_new_for_path (root);
+  enumerator = g_file_enumerate_children (dir, G_FILE_ATTRIBUTE_STANDARD_NAME,
+                                         G_FILE_QUERY_INFO_NONE, NULL, NULL);
+  array = g_ptr_array_new ();
+  while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL)
+    {
+      name = g_file_info_get_name (info);
+      filename = g_build_filename (root, name, NULL);
+      g_object_unref (info);
+      file = g_file_new_for_path (filename);
+      g_ptr_array_add (array, gio_file_to_atom (ctx, file));
+      g_object_unref (file);
+      g_free (filename);
+    }
+  g_object_unref (enumerator);
+  g_object_unref (dir);
+  g_free (root);
+  if (entries)
+    *entries = array->pdata;
+  if (len)
+    *len = array->len;
+  g_ptr_array_free (array, FALSE);
+}
+
 AtomBackend *
 gio_backend (void)
 {