[latexila/gnome-3-16] Backport latexila_utils_create_parent_directories()



commit 2bdc19383593b0203e223a2df3c594c57b15d6f7
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Tue Aug 18 13:00:47 2015 +0200

    Backport latexila_utils_create_parent_directories()

 docs/reference/latexila-sections.txt |    1 +
 src/liblatexila/latexila-utils.c     |   46 ++++++++++++++++++++++++++++++++++
 src/liblatexila/latexila-utils.h     |    3 ++
 3 files changed, 50 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/latexila-sections.txt b/docs/reference/latexila-sections.txt
index 68e2c17..ec24c2d 100644
--- a/docs/reference/latexila-sections.txt
+++ b/docs/reference/latexila-sections.txt
@@ -241,4 +241,5 @@ latexila_utils_str_replace
 latexila_utils_file_query_exists_async
 latexila_utils_file_query_exists_finish
 latexila_utils_show_uri
+latexila_utils_create_parent_directories
 </SECTION>
diff --git a/src/liblatexila/latexila-utils.c b/src/liblatexila/latexila-utils.c
index 3cbc524..0c1ccf5 100644
--- a/src/liblatexila/latexila-utils.c
+++ b/src/liblatexila/latexila-utils.c
@@ -336,3 +336,49 @@ latexila_utils_show_uri (GdkScreen    *screen,
       g_free (extension);
     }
 }
+
+/**
+ * latexila_utils_create_parent_directories:
+ * @file: a file
+ * @error: (out) (optional): a location to a %NULL #GError, or %NULL.
+ *
+ * Synchronously creates parent directories of @file, so that @file can be
+ * saved.
+ *
+ * Returns: whether the directories are correctly created. %FALSE is returned on
+ * error.
+ */
+gboolean
+latexila_utils_create_parent_directories (GFile   *file,
+                                          GError **error)
+{
+  GFile *parent;
+  GError *my_error = NULL;
+
+  g_return_val_if_fail (G_IS_FILE (file), FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  parent = g_file_get_parent (file);
+
+  if (parent == NULL)
+    return TRUE;
+
+  g_file_make_directory_with_parents (parent, NULL, &my_error);
+  g_object_unref (parent);
+
+  if (my_error != NULL)
+    {
+      if (g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_EXISTS))
+        {
+          g_error_free (my_error);
+          return TRUE;
+        }
+      else
+        {
+          g_propagate_error (error, my_error);
+          return FALSE;
+        }
+    }
+
+  return TRUE;
+}
diff --git a/src/liblatexila/latexila-utils.h b/src/liblatexila/latexila-utils.h
index 99bcf1f..e2f1656 100644
--- a/src/liblatexila/latexila-utils.h
+++ b/src/liblatexila/latexila-utils.h
@@ -52,6 +52,9 @@ void            latexila_utils_show_uri                         (GdkScreen    *s
                                                                  guint32       timestamp,
                                                                  GError      **error);
 
+gboolean        latexila_utils_create_parent_directories        (GFile   *file,
+                                                                 GError **error);
+
 G_END_DECLS
 
 #endif /* __LATEXILA_UTILS_H__ */


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