+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);
+}
+