mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-08-08 18:24:04 +02:00
gfileenumerator: Add a g_file_enumerator_get_child method
This is a new convenience method designed to simplify some use cases of GFileEnumerator, by making it easy to get the next file from a file enumerator. https://bugzilla.gnome.org/show_bug.cgi?id=690083
This commit is contained in:
@@ -213,6 +213,7 @@ g_file_enumerator_is_closed
|
|||||||
g_file_enumerator_has_pending
|
g_file_enumerator_has_pending
|
||||||
g_file_enumerator_set_pending
|
g_file_enumerator_set_pending
|
||||||
g_file_enumerator_get_container
|
g_file_enumerator_get_container
|
||||||
|
g_file_enumerator_get_child
|
||||||
<SUBSECTION Standard>
|
<SUBSECTION Standard>
|
||||||
GFileEnumeratorClass
|
GFileEnumeratorClass
|
||||||
G_FILE_ENUMERATOR
|
G_FILE_ENUMERATOR
|
||||||
|
@@ -589,6 +589,37 @@ g_file_enumerator_get_container (GFileEnumerator *enumerator)
|
|||||||
return enumerator->priv->container;
|
return enumerator->priv->container;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* g_file_enumerator_get_child:
|
||||||
|
* @enumerator: a #GFileEnumerator
|
||||||
|
* @info: a #GFileInfo gotten from g_file_enumerator_next_file()
|
||||||
|
* or the async equivalents.
|
||||||
|
*
|
||||||
|
* Return a new #GFile which refers to the file named by @info in the source
|
||||||
|
* directory of @enumerator. This function is primarily intended to be used
|
||||||
|
* inside loops with g_file_enumerator_next_file().
|
||||||
|
*
|
||||||
|
* This is a convenience method that's equivalent to:
|
||||||
|
* |[
|
||||||
|
* gchar *name = g_file_info_get_name (info);
|
||||||
|
* GFile *child = g_file_get_child (g_file_enumerator_get_container (enumr),
|
||||||
|
* name);
|
||||||
|
* ]|
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): a #GFile for the #GFileInfo passed it.
|
||||||
|
*
|
||||||
|
* Since: 2.36
|
||||||
|
*/
|
||||||
|
GFile *
|
||||||
|
g_file_enumerator_get_child (GFileEnumerator *enumerator,
|
||||||
|
GFileInfo *info)
|
||||||
|
{
|
||||||
|
g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
|
||||||
|
|
||||||
|
return g_file_get_child (enumerator->priv->container,
|
||||||
|
g_file_info_get_name (info));
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int num_files;
|
int num_files;
|
||||||
GList *files;
|
GList *files;
|
||||||
|
@@ -126,6 +126,9 @@ gboolean g_file_enumerator_has_pending (GFileEnumerator *enumerator
|
|||||||
void g_file_enumerator_set_pending (GFileEnumerator *enumerator,
|
void g_file_enumerator_set_pending (GFileEnumerator *enumerator,
|
||||||
gboolean pending);
|
gboolean pending);
|
||||||
GFile * g_file_enumerator_get_container (GFileEnumerator *enumerator);
|
GFile * g_file_enumerator_get_container (GFileEnumerator *enumerator);
|
||||||
|
GLIB_AVAILABLE_IN_2_36
|
||||||
|
GFile * g_file_enumerator_get_child (GFileEnumerator *enumerator,
|
||||||
|
GFileInfo *info);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
@@ -384,6 +384,7 @@ g_file_enumerator_close_finish
|
|||||||
g_file_enumerator_is_closed
|
g_file_enumerator_is_closed
|
||||||
g_file_enumerator_has_pending
|
g_file_enumerator_has_pending
|
||||||
g_file_enumerator_set_pending
|
g_file_enumerator_set_pending
|
||||||
|
g_file_enumerator_get_child
|
||||||
g_file_enumerator_get_container
|
g_file_enumerator_get_container
|
||||||
g_file_icon_get_type
|
g_file_icon_get_type
|
||||||
g_file_icon_new
|
g_file_icon_new
|
||||||
|
@@ -513,7 +513,7 @@ traverse_recurse_dirs (GFile * parent, GFile * root)
|
|||||||
info = g_file_enumerator_next_file (enumerator, NULL, &error);
|
info = g_file_enumerator_next_file (enumerator, NULL, &error);
|
||||||
while ((info) && (!error))
|
while ((info) && (!error))
|
||||||
{
|
{
|
||||||
descend = g_file_get_child (parent, g_file_info_get_name (info));
|
descend = g_file_enumerator_get_child (enumerator, info);
|
||||||
g_assert (descend != NULL);
|
g_assert (descend != NULL);
|
||||||
relative_path = g_file_get_relative_path (root, descend);
|
relative_path = g_file_get_relative_path (root, descend);
|
||||||
g_assert (relative_path != NULL);
|
g_assert (relative_path != NULL);
|
||||||
@@ -1159,7 +1159,7 @@ cleanup_dir_recurse (GFile *parent, GFile *root)
|
|||||||
info = g_file_enumerator_next_file (enumerator, NULL, &error);
|
info = g_file_enumerator_next_file (enumerator, NULL, &error);
|
||||||
while ((info) && (!error))
|
while ((info) && (!error))
|
||||||
{
|
{
|
||||||
descend = g_file_get_child (parent, g_file_info_get_name (info));
|
descend = g_file_enumerator_get_child (enumerator, info);
|
||||||
g_assert (descend != NULL);
|
g_assert (descend != NULL);
|
||||||
relative_path = g_file_get_relative_path (root, descend);
|
relative_path = g_file_get_relative_path (root, descend);
|
||||||
g_assert (relative_path != NULL);
|
g_assert (relative_path != NULL);
|
||||||
|
Reference in New Issue
Block a user