[ostree] core: Update libgsystem, port some uses of GFileEnumerator
- From: Colin Walters <walters src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] core: Update libgsystem, port some uses of GFileEnumerator
- Date: Fri, 14 Jun 2013 23:15:14 +0000 (UTC)
commit fbd9f17e398cdea133756da21f0442da14a5038f
Author: Colin Walters <walters verbum org>
Date: Fri Jun 14 19:14:35 2013 -0400
core: Update libgsystem, port some uses of GFileEnumerator
This makes the code *so* much nicer.
src/libgsystem | 2 +-
src/libostree/ostree-repo.c | 91 +++++++++++++++++++-----------------------
2 files changed, 42 insertions(+), 51 deletions(-)
---
diff --git a/src/libgsystem b/src/libgsystem
index b2a65b2..077fc09 160000
--- a/src/libgsystem
+++ b/src/libgsystem
@@ -1 +1 @@
-Subproject commit b2a65b235600e340fada441de7e131de9d52d25e
+Subproject commit 077fc095208e8429400763f0e41ac7c8884e8c1e
diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
index f4ad8fe..1236d0a 100644
--- a/src/libostree/ostree-repo.c
+++ b/src/libostree/ostree-repo.c
@@ -290,10 +290,7 @@ find_rev_in_remotes (OstreeRepo *self,
GError **error)
{
gboolean ret = FALSE;
- GError *temp_error = NULL;
ot_lobj GFileEnumerator *dir_enum = NULL;
- ot_lobj GFileInfo *file_info = NULL;
- ot_lobj GFile *child = NULL;
ot_lobj GFile *ret_file = NULL;
dir_enum = g_file_enumerate_children (self->remote_heads_dir, OSTREE_GIO_FAST_QUERYINFO,
@@ -302,29 +299,25 @@ find_rev_in_remotes (OstreeRepo *self,
if (!dir_enum)
goto out;
- while ((file_info = g_file_enumerator_next_file (dir_enum, NULL, error)) != NULL)
+ while (TRUE)
{
- if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY)
- {
- g_clear_object (&child);
- child = g_file_get_child (self->remote_heads_dir,
- g_file_info_get_name (file_info));
- g_clear_object (&ret_file);
- ret_file = g_file_resolve_relative_path (child, rev);
- if (!g_file_query_exists (ret_file, NULL))
- g_clear_object (&ret_file);
- }
+ GFileInfo *file_info;
+ GFile *child;
+ if (!gs_file_enumerator_iterate (dir_enum, &file_info, &child,
+ NULL, error))
+ goto out;
+ if (file_info == NULL)
+ break;
+ if (g_file_info_get_file_type (file_info) != G_FILE_TYPE_DIRECTORY)
+ continue;
- g_clear_object (&file_info);
-
- if (ret_file)
+ g_clear_object (&ret_file);
+ ret_file = g_file_resolve_relative_path (child, rev);
+ if (!g_file_query_exists (ret_file, NULL))
+ g_clear_object (&ret_file);
+ else
break;
}
- if (temp_error != NULL)
- {
- g_propagate_error (error, temp_error);
- goto out;
- }
ret = TRUE;
ot_transfer_out_value (out_file, &ret_file);
@@ -2646,11 +2639,9 @@ list_loose_object_dir (OstreeRepo *self,
GError **error)
{
gboolean ret = FALSE;
- GError *temp_error = NULL;
const char *dirname = NULL;
const char *dot = NULL;
- ot_lobj GFileEnumerator *enumerator = NULL;
- ot_lobj GFileInfo *file_info = NULL;
+ gs_unref_object GFileEnumerator *enumerator = NULL;
GString *checksum = NULL;
dirname = gs_file_get_basename_cached (dir);
@@ -2663,17 +2654,25 @@ list_loose_object_dir (OstreeRepo *self,
if (!enumerator)
goto out;
- while ((file_info = g_file_enumerator_next_file (enumerator, cancellable, &temp_error)) != NULL)
+ while (TRUE)
{
+ GFileInfo *file_info;
const char *name;
guint32 type;
OstreeObjectType objtype;
- name = g_file_info_get_attribute_byte_string (file_info, "standard::name");
+ if (!gs_file_enumerator_iterate (enumerator, &file_info, NULL,
+ NULL, error))
+ goto out;
+ if (file_info == NULL)
+ break;
+
type = g_file_info_get_attribute_uint32 (file_info, "standard::type");
if (type == G_FILE_TYPE_DIRECTORY)
- goto loop_next;
+ continue;
+
+ name = g_file_info_get_attribute_byte_string (file_info, "standard::name");
if (g_str_has_suffix (name, ".file"))
objtype = OSTREE_OBJECT_TYPE_FILE;
@@ -2684,7 +2683,7 @@ list_loose_object_dir (OstreeRepo *self,
else if (g_str_has_suffix (name, ".commit"))
objtype = OSTREE_OBJECT_TYPE_COMMIT;
else
- goto loop_next;
+ continue;
dot = strrchr (name, '.');
g_assert (dot);
@@ -2705,16 +2704,7 @@ list_loose_object_dir (OstreeRepo *self,
g_hash_table_replace (inout_objects, key,
g_variant_ref_sink (value));
}
- loop_next:
- g_clear_object (&file_info);
- }
- if (temp_error != NULL)
- {
- g_propagate_error (error, temp_error);
- goto out;
}
- if (!g_file_enumerator_close (enumerator, NULL, error))
- goto out;
ret = TRUE;
out:
@@ -3851,9 +3841,7 @@ ostree_repo_checkout_gc (OstreeRepo *self,
g_hash_table_iter_init (&iter, to_clean_dirs);
while (to_clean_dirs && g_hash_table_iter_next (&iter, &key, &value))
{
- GError *temp_error = NULL;
ot_lobj GFile *objdir = NULL;
- ot_lobj GFileInfo *file_info = NULL;
ot_lobj GFileEnumerator *enumerator = NULL;
ot_lfree char *objdir_name = NULL;
@@ -3868,22 +3856,25 @@ ostree_repo_checkout_gc (OstreeRepo *self,
if (!enumerator)
goto out;
- while ((file_info = g_file_enumerator_next_file (enumerator, cancellable, &temp_error)) != NULL)
+ while (TRUE)
{
- guint32 nlinks = g_file_info_get_attribute_uint32 (file_info, "unix::nlink");
+ GFileInfo *file_info;
+ guint32 nlinks;
+
+ if (!gs_file_enumerator_iterate (enumerator, &file_info, NULL,
+ cancellable, error))
+ goto out;
+ if (file_info == NULL)
+ break;
+
+ nlinks = g_file_info_get_attribute_uint32 (file_info, "unix::nlink");
if (nlinks == 1)
{
- ot_lobj GFile *objpath = NULL;
- objpath = ot_gfile_get_child_build_path (objdir, g_file_info_get_name (file_info), NULL);
+ gs_unref_object GFile *objpath = NULL;
+ objpath = g_file_get_child (objdir, g_file_info_get_name (file_info));
if (!gs_file_unlink (objpath, cancellable, error))
goto out;
}
- g_object_unref (file_info);
- }
- if (temp_error != NULL)
- {
- g_propagate_error (error, temp_error);
- goto out;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]