FileEnumerator.iterate

This is a version of g_file_enumerator_next_file() that's easier to use correctly from C programs. With g_file_enumerator_next_file(), the gboolean return value signifies "end of iteration or error", which requires allocation of a temporary #GError.

In contrast, with this function, a %FALSE return from gs_file_enumerator_iterate() *always* means "error". End of iteration is signaled by @out_info or @out_child being %NULL.

Another crucial difference is that the references for @out_info and @out_child are owned by @direnum (they are cached as hidden properties). You must not unref them in your own code. This makes memory management significantly easier for C code in combination with loops.

Finally, this function optionally allows retrieving a #GFile as well.

You must specify at least one of @out_info or @out_child.

The code pattern for correctly using g_file_enumerator_iterate() from C is:

|[ direnum = g_file_enumerate_children (file, ...); while (TRUE) { GFileInfo *info; if (!g_file_enumerator_iterate (direnum, &info, NULL, cancellable, error)) goto out; if (!info) break; ... do stuff with "info"; do not unref it! ... }

out: g_object_unref (direnum); // Note: frees the last @info ]|

class FileEnumerator
bool
iterate

Parameters

outInfo FileInfo

Output location for the next #GFileInfo, or %NULL

outChild FileIF

Output location for the next #GFile, or %NULL

cancellable Cancellable

a #GCancellable

Throws

GException on failure.

Meta

Since

2.44