}
static void
-gio_enumerate_entries (AtomCtx *ctx, AtomEntry ***entries, size_t *len)
+gio_enumerate_entries (AtomCtx *ctx, char ***reqs, AtomEntry ***entries,
+ size_t *len)
{
GFile *dir;
GFileEnumerator *enumerator;
gchar *name;
gchar *filename;
GPtrArray *array;
+ GPtrArray *filenames;
root = atom_config_get_str (ctx, "gio", "root");
dir = g_file_new_for_path (root);
error = NULL;
return;
}
array = g_ptr_array_new ();
+ filenames = g_ptr_array_new ();
while ((info = g_file_enumerator_next_file (enumerator, NULL, NULL)) != NULL)
{
name = g_file_info_get_name (info);
if (entry)
{
g_ptr_array_add (array, entry);
+ g_ptr_array_add (filenames, g_strdup (name));
}
else
{
g_object_unref (enumerator);
g_object_unref (dir);
g_free (root);
+ if (reqs)
+ *reqs = filenames->pdata;
if (entries)
*entries = array->pdata;
if (len)
*len = array->len;
g_ptr_array_free (array, FALSE);
+ g_ptr_array_free (filenames, FALSE);
}
static int
void atom_backend_retrieve_entry_set (AtomBackend *,
AtomEntry * (AtomCtx *, AtomID *));
void atom_backend_enumerate_entries_set (AtomBackend *,
- void (AtomCtx *, AtomEntry ***, size_t *));
+ void (AtomCtx *, char ***,
+ AtomEntry ***, size_t *));
void atom_backend_is_feed_set (AtomBackend *, int (AtomCtx *, AtomID *));
AtomEntry * atom_retrieve_entry (AtomCtx *, AtomID *);
-void atom_enumerate_entries (AtomCtx *, AtomEntry ***, size_t *);
+void atom_enumerate_entries (AtomCtx *, char ***, AtomEntry ***, size_t *);
int atom_is_feed (AtomCtx *, AtomID *);
AtomFeed * atom_retrieve_feed (AtomCtx *);
AtomResource *atom_retrieve_resource (AtomCtx *, AtomID *);
struct _atom_backend
{
AtomEntry * (*retrieve_entry) (AtomCtx *, AtomID *);
- void (*enumerate_entries) (AtomCtx *, AtomEntry ***, size_t *);
+ void (*enumerate_entries) (AtomCtx *, char ***, AtomEntry ***, size_t *);
int (*is_feed) (AtomCtx *, AtomID *);
};
void
atom_backend_enumerate_entries_set (AtomBackend *backend,
void enumerate_entries (AtomCtx *,
- AtomEntry ***, size_t*))
+ char ***,
+ AtomEntry ***,
+ size_t *))
{
backend->enumerate_entries = enumerate_entries;
}
}
void
-atom_backend_enumerate_entries (AtomCtx *ctx, AtomEntry *** entries, size_t *len)
+atom_backend_enumerate_entries (AtomCtx *ctx, char *** reqs,
+ AtomEntry *** entries, size_t *len)
{
AtomBackend *backend;
backend = atom_backend (ctx);
if (backend && backend->enumerate_entries)
{
- backend->enumerate_entries (ctx, entries, len);
+ backend->enumerate_entries (ctx, reqs, entries, len);
return;
}
+ if (reqs)
+ *reqs = NULL;
if (entries)
*entries = NULL;
if (len)
AtomFeed *feed;
AtomEntry **entries;
size_t len;
- atom_backend_enumerate_entries (ctx, &entries, &len);
+ atom_backend_enumerate_entries (ctx, NULL, &entries, &len);
if (atom_error_get (ctx) != NULL)
return NULL;
feed = atom_feed_new ();