From 0e8cedabc26f0bfaf827d5b86f684bd874cea3df Mon Sep 17 00:00:00 2001 From: Thadeu Lima de Souza Cascardo Date: Sat, 9 Aug 2008 03:09:18 -0300 Subject: [PATCH] Implement enumeration of entries for GIO backend --- backend/gio/gio.c | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/backend/gio/gio.c b/backend/gio/gio.c index a6651f6..62f3ead 100644 --- a/backend/gio/gio.c +++ b/backend/gio/gio.c @@ -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) { -- 2.20.1