[ostree] core: Make mkdir -p function safer



commit 4436ed34d8da0f3caef0e6e41eebcb771b941096
Author: Colin Walters <walters verbum org>
Date:   Fri Oct 12 15:10:39 2012 -0400

    core: Make mkdir -p function safer
    
    Recursing here is just a more obvious way to do it, rather than
    relying on the semantics of g_file_make_directory_with_parents().

 src/libotutil/ot-gio-utils.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)
---
diff --git a/src/libotutil/ot-gio-utils.c b/src/libotutil/ot-gio-utils.c
index 31ea3fa..1e98516 100644
--- a/src/libotutil/ot-gio-utils.c
+++ b/src/libotutil/ot-gio-utils.c
@@ -57,9 +57,11 @@ ot_gfile_ensure_directory (GFile     *dir,
   gboolean ret = FALSE;
   GError *temp_error = NULL;
 
- again:
   if (with_parents)
-    ret = g_file_make_directory_with_parents (dir, NULL, &temp_error);
+    {
+      ot_lobj GFile *parent = g_file_get_parent (dir);
+      ret = ot_gfile_ensure_directory (parent, TRUE, &temp_error);
+    }
   else
     ret = g_file_make_directory (dir, NULL, &temp_error);
   if (!ret)
@@ -72,11 +74,6 @@ ot_gfile_ensure_directory (GFile     *dir,
       else
         g_clear_error (&temp_error);
     }
-  /* Work around glib bug where if multiple threads/processes race in
-   * _with_parents, it can error out early
-   */
-  if (with_parents && !g_file_query_exists (dir, NULL))
-    goto again;
 
   ret = TRUE;
  out:



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