[ostree] core: Update libgsystem, port some uses of GFileEnumerator



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]