[latexila/gnome-3-16] Backport latexila_utils_create_parent_directories()
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [latexila/gnome-3-16] Backport latexila_utils_create_parent_directories()
- Date: Tue, 18 Aug 2015 11:05:12 +0000 (UTC)
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]