[ostree] Switch to using libgsystem shutil



commit 6dda8da6c5f2d1c2bd476a05efbdc1946be72b7a
Author: Colin Walters <walters verbum org>
Date:   Thu Nov 29 17:11:24 2012 -0500

    Switch to using libgsystem shutil
    
    More code moved into libgsystem.

 src/libgsystem                              |    2 +-
 src/libotutil/ot-gio-utils.c                |  195 ---------------------------
 src/libotutil/ot-gio-utils.h                |   14 --
 src/ostree/ot-admin-builtin-deploy.c        |   12 +-
 src/ostree/ot-admin-builtin-prune.c         |    4 +-
 src/ostree/ot-admin-builtin-update-kernel.c |    2 +-
 6 files changed, 10 insertions(+), 219 deletions(-)
---
diff --git a/src/libgsystem b/src/libgsystem
index eb4cecb..82c4b58 160000
--- a/src/libgsystem
+++ b/src/libgsystem
@@ -1 +1 @@
-Subproject commit eb4cecbc1528e1d1bdd99298d6f58768c6642b24
+Subproject commit 82c4b585f374d094c9f5a5428585f879e7397b3d
diff --git a/src/libotutil/ot-gio-utils.c b/src/libotutil/ot-gio-utils.c
index 42e36dc..d37beeb 100644
--- a/src/libotutil/ot-gio-utils.c
+++ b/src/libotutil/ot-gio-utils.c
@@ -132,198 +132,3 @@ ot_gfile_get_child_build_path (GFile      *parent,
 
   return g_file_resolve_relative_path (parent, path);
 }
-
-static gboolean
-cp_internal (GFile         *src,
-             GFile         *dest,
-             gboolean       use_hardlinks,
-             GCancellable  *cancellable,
-             GError       **error)
-{
-  gboolean ret = FALSE;
-  ot_lobj GFileEnumerator *enumerator = NULL;
-  ot_lobj GFileInfo *file_info = NULL;
-  GError *temp_error = NULL;
-
-  enumerator = g_file_enumerate_children (src, OSTREE_GIO_FAST_QUERYINFO,
-                                          G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
-                                          cancellable, error);
-  if (!enumerator)
-    goto out;
-
-  if (!gs_file_ensure_directory (dest, FALSE, cancellable, error))
-    goto out;
-
-  while ((file_info = g_file_enumerator_next_file (enumerator, cancellable, &temp_error)) != NULL)
-    {
-      const char *name = g_file_info_get_name (file_info);
-      ot_lobj GFile *src_child = g_file_get_child (src, name);
-      ot_lobj GFile *dest_child = g_file_get_child (dest, name);
-
-      if (g_file_info_get_file_type (file_info) == G_FILE_TYPE_DIRECTORY)
-        {
-          if (!gs_file_ensure_directory (dest_child, FALSE, cancellable, error))
-            goto out;
-
-          /* Can't do this even though we'd like to; it fails with an error about
-           * setting standard::type not being supported =/
-           *
-           if (!g_file_set_attributes_from_info (dest_child, file_info, G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
-           cancellable, error))
-           goto out;
-          */
-          if (chmod (gs_file_get_path_cached (dest_child),
-                     g_file_info_get_attribute_uint32 (file_info, "unix::mode")) == -1)
-            {
-              ot_util_set_error_from_errno (error, errno);
-              goto out;
-            }
-
-          if (!cp_internal (src_child, dest_child, use_hardlinks, cancellable, error))
-            goto out;
-        }
-      else
-        {
-          gboolean did_link = FALSE;
-          (void) unlink (gs_file_get_path_cached (dest_child));
-          if (use_hardlinks)
-            {
-              if (link (gs_file_get_path_cached (src_child), gs_file_get_path_cached (dest_child)) == -1)
-                {
-                  if (!(errno == EMLINK || errno == EXDEV))
-                    {
-                      ot_util_set_error_from_errno (error, errno);
-                      goto out;
-                    }
-                  use_hardlinks = FALSE;
-                }
-              else
-                did_link = TRUE;
-            }
-          if (!did_link)
-            {
-              if (!g_file_copy (src_child, dest_child,
-                                G_FILE_COPY_OVERWRITE | G_FILE_COPY_ALL_METADATA | G_FILE_COPY_NOFOLLOW_SYMLINKS,
-                                cancellable, NULL, NULL, error))
-                goto out;
-            }
-        }
-      g_clear_object (&file_info);
-    }
-  if (temp_error)
-    {
-      g_propagate_error (error, temp_error);
-      goto out;
-    }
-
-  ret = TRUE;
- out:
-  return ret;
-}
-
-/**
- * ot_gio_shutil_cp_al_or_fallback:
- * @src: Source path
- * @dest: Destination path
- * @cancellable:
- * @error:
- *
- * Recursively copy path @src (which must be a directory) to the
- * target @dest.  If possible, hardlinks are used; if a hardlink is
- * not possible, a regular copy is created.  Any existing files are
- * overwritten.
- *
- * Returns: %TRUE on success
- */
-gboolean
-ot_gio_shutil_cp_al_or_fallback (GFile         *src,
-                                 GFile         *dest,
-                                 GCancellable  *cancellable,
-                                 GError       **error)
-{
-  return cp_internal (src, dest, TRUE, cancellable, error);
-}
-
-/**
- * ot_gio_shutil_cp_a:
- * @src: Source path
- * @dest: Destination path
- * @cancellable:
- * @error:
- *
- * Recursively copy path @src (which must be a directory) to the
- * target @dest.  Any existing files are overwritten.
- *
- * Returns: %TRUE on success
- */
-gboolean
-ot_gio_shutil_cp_a (GFile         *src,
-                    GFile         *dest,
-                    GCancellable  *cancellable,
-                    GError       **error)
-{
-  return cp_internal (src, dest, FALSE, cancellable, error);
-}
-
-gboolean
-ot_gio_shutil_rm_rf (GFile        *path,
-                     GCancellable *cancellable,
-                     GError      **error)
-{
-  gboolean ret = FALSE;
-  ot_lobj GFileEnumerator *dir_enum = NULL;
-  ot_lobj GFileInfo *file_info = NULL;
-  GError *temp_error = NULL;
-
-  dir_enum = g_file_enumerate_children (path, OSTREE_GIO_FAST_QUERYINFO, 
-                                        G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
-                                        cancellable, &temp_error);
-  if (!dir_enum)
-    {
-      if (g_error_matches (temp_error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND))
-        {
-          g_clear_error (&temp_error);
-          ret = TRUE;
-        }
-      else
-        g_propagate_error (error, temp_error);
-
-      goto out;
-    }
-
-  while ((file_info = g_file_enumerator_next_file (dir_enum, cancellable, &temp_error)) != NULL)
-    {
-      ot_lobj GFile *subpath = NULL;
-      GFileType type;
-      const char *name;
-
-      type = g_file_info_get_attribute_uint32 (file_info, "standard::type");
-      name = g_file_info_get_attribute_byte_string (file_info, "standard::name");
-      
-      subpath = g_file_get_child (path, name);
-
-      if (type == G_FILE_TYPE_DIRECTORY)
-        {
-          if (!ot_gio_shutil_rm_rf (subpath, cancellable, error))
-            goto out;
-        }
-      else
-        {
-          if (!gs_file_unlink (subpath, cancellable, error))
-            goto out;
-        }
-      g_clear_object (&file_info);
-    }
-  if (temp_error)
-    {
-      g_propagate_error (error, temp_error);
-      goto out;
-    }
-
-  if (!g_file_delete (path, cancellable, error))
-    goto out;
-
-  ret = TRUE;
- out:
-  return ret;
-}
diff --git a/src/libotutil/ot-gio-utils.h b/src/libotutil/ot-gio-utils.h
index ce055c6..1ca2c30 100644
--- a/src/libotutil/ot-gio-utils.h
+++ b/src/libotutil/ot-gio-utils.h
@@ -42,20 +42,6 @@ GFile *ot_gfile_get_child_strconcat (GFile *parent, const char *first, ...) G_GN
 
 GFile *ot_gfile_get_child_build_path (GFile *parent, const char *first, ...) G_GNUC_NULL_TERMINATED;
 
-gboolean ot_gio_shutil_cp_a (GFile         *src,
-                             GFile         *dest,
-                             GCancellable  *cancellable,
-                             GError       **error);
-
-gboolean ot_gio_shutil_cp_al_or_fallback (GFile         *src,
-                                          GFile         *dest,
-                                          GCancellable  *cancellable,
-                                          GError       **error);
-
-gboolean ot_gio_shutil_rm_rf (GFile        *path,
-                              GCancellable *cancellable,
-                              GError      **error);
-
 G_END_DECLS
 
 #endif
diff --git a/src/ostree/ot-admin-builtin-deploy.c b/src/ostree/ot-admin-builtin-deploy.c
index e7681b9..92026e7 100644
--- a/src/ostree/ot-admin-builtin-deploy.c
+++ b/src/ostree/ot-admin-builtin-deploy.c
@@ -399,7 +399,7 @@ deploy_tree (OtAdminDeploy     *self,
   deploy_target_etc_path = g_file_resolve_relative_path (deploy_dir, deploy_target_etc_name);
 
   /* Delete any previous temporary data */
-  if (!ot_gio_shutil_rm_rf (deploy_target_path_tmp, cancellable, error))
+  if (!gs_shutil_rm_rf (deploy_target_path_tmp, cancellable, error))
     goto out;
 
   existing_checkout_info = g_file_query_info (deploy_target_path, OSTREE_GIO_FAST_QUERYINFO,
@@ -409,9 +409,9 @@ deploy_tree (OtAdminDeploy     *self,
     {
       if (opt_force)
         {
-          if (!ot_gio_shutil_rm_rf (deploy_target_path, cancellable, error))
+          if (!gs_shutil_rm_rf (deploy_target_path, cancellable, error))
             goto out;
-          if (!ot_gio_shutil_rm_rf (deploy_target_etc_path, cancellable, error))
+          if (!gs_shutil_rm_rf (deploy_target_etc_path, cancellable, error))
             goto out;
           
           skip_checkout = FALSE;
@@ -482,11 +482,11 @@ deploy_tree (OtAdminDeploy     *self,
 
       deploy_target_default_etc_path = ot_gfile_get_child_strconcat (deploy_target_path_tmp, "etc", NULL);
 
-      if (!ot_gio_shutil_rm_rf (deploy_target_etc_path, cancellable, error))
+      if (!gs_shutil_rm_rf (deploy_target_etc_path, cancellable, error))
         goto out;
 
-      if (!ot_gio_shutil_cp_a (deploy_target_default_etc_path, deploy_target_etc_path,
-                               cancellable, error))
+      if (!gs_shutil_cp_a (deploy_target_default_etc_path, deploy_target_etc_path,
+                           cancellable, error))
         goto out;
 
       g_print ("ostadmin: Created %s\n", gs_file_get_path_cached (deploy_target_etc_path));
diff --git a/src/ostree/ot-admin-builtin-prune.c b/src/ostree/ot-admin-builtin-prune.c
index 89a209e..3465417 100644
--- a/src/ostree/ot-admin-builtin-prune.c
+++ b/src/ostree/ot-admin-builtin-prune.c
@@ -143,12 +143,12 @@ ot_admin_builtin_prune (int argc, char **argv, GFile *ostree_dir, GError **error
                                                      "-etc", NULL);
       
       g_print ("Deleting deployment %s\n", gs_file_get_path_cached (deployment));
-      if (!ot_gio_shutil_rm_rf (deployment, cancellable, error))
+      if (!gs_shutil_rm_rf (deployment, cancellable, error))
         goto out;
       /* Note - not atomic; we may be leaving the -etc directory around
        * if this fails in the middle =/
        */
-      if (!ot_gio_shutil_rm_rf (deployment_etc, cancellable, error))
+      if (!gs_shutil_rm_rf (deployment_etc, cancellable, error))
         goto out;
     }
   
diff --git a/src/ostree/ot-admin-builtin-update-kernel.c b/src/ostree/ot-admin-builtin-update-kernel.c
index b944d0e..c2f7226 100644
--- a/src/ostree/ot-admin-builtin-update-kernel.c
+++ b/src/ostree/ot-admin-builtin-update-kernel.c
@@ -58,7 +58,7 @@ copy_modules (OtAdminUpdateKernel *self,
 
   if (!g_file_query_exists (dest_modules_file, cancellable))
     {
-      if (!ot_gio_shutil_cp_al_or_fallback (src_modules_file, dest_modules_file, cancellable, error))
+      if (!gs_shutil_cp_al_or_fallback (src_modules_file, dest_modules_file, cancellable, error))
         goto out;
     }
       



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]