[ostree] core: Ensure we chown created directories too



commit a94e0b8bf84c7a0bf1cb6e6cb6a7d548901d48ad
Author: Colin Walters <walters verbum org>
Date:   Tue Dec 6 20:16:03 2011 -0500

    core: Ensure we chown created directories too

 src/libostree/ostree-core.c |   11 ++++++++++-
 src/libostree/ostree-repo.c |   16 +++++++---------
 2 files changed, 17 insertions(+), 10 deletions(-)
---
diff --git a/src/libostree/ostree-core.c b/src/libostree/ostree-core.c
index e4fc1f0..8bd0648 100644
--- a/src/libostree/ostree-core.c
+++ b/src/libostree/ostree-core.c
@@ -884,7 +884,16 @@ ostree_create_file_from_input (GFile            *dest_file,
     }
   dest_path = ot_gfile_get_path_cached (dest_file);
 
-  if (S_ISREG (mode))
+  if (S_ISDIR (mode))
+    {
+      if (mkdir (ot_gfile_get_path_cached (dest_file),
+                 g_file_info_get_attribute_uint32 (finfo, "unix::mode")) < 0)
+        {
+          ot_util_set_error_from_errno (error, errno);
+          goto out;
+        }
+    }
+  else if (S_ISREG (mode))
     {
       out = g_file_create (dest_file, 0, cancellable, error);
       if (!out)
diff --git a/src/libostree/ostree-repo.c b/src/libostree/ostree-repo.c
index 2b896a0..7c9ef11 100644
--- a/src/libostree/ostree-repo.c
+++ b/src/libostree/ostree-repo.c
@@ -1995,16 +1995,14 @@ checkout_one_directory (OstreeRepo  *self,
   if (!_ostree_repo_file_get_xattrs (dir, &xattr_variant, NULL, error))
     goto out;
 
-  if (mkdir (dest_path, (mode_t)g_file_info_get_attribute_uint32 (dir_info, "unix::mode")) < 0)
-    {
-      ot_util_set_error_from_errno (error, errno);
-      g_prefix_error (error, "Failed to create directory '%s': ", dest_path);
-      goto out;
-    }
-
-  if (!ostree_set_xattrs (dest_file, xattr_variant, cancellable, error))
+  if (!ostree_create_file_from_input (dest_file, dir_info,
+                                      xattr_variant,
+                                      NULL,
+                                      OSTREE_OBJECT_TYPE_FILE,
+                                      NULL,
+                                      cancellable, error))
     goto out;
-      
+
   if (!checkout_tree (self, dir, dest_path, cancellable, error))
     goto out;
 



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