[balsa/64-save-empty-attachment] libbalsa-vfs: Ensure that a file exists



commit 708d01dfb57d7d3f4b3e6da4c7a9a3e21c907813
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Fri Jan 14 12:57:11 2022 -0500

    libbalsa-vfs: Ensure that a file exists
    
    Implement libbalsa_vfs_ensure_file_exists(). It opens a
    GFileOutputStream to append to the file and immediately unrefs it if
    successful.
    
    Helps #64

 libbalsa/libbalsa-vfs.c | 25 +++++++++++++++++++++++++
 libbalsa/libbalsa-vfs.h |  2 ++
 2 files changed, 27 insertions(+)
---
diff --git a/libbalsa/libbalsa-vfs.c b/libbalsa/libbalsa-vfs.c
index 49efc57ab..06020d24b 100644
--- a/libbalsa/libbalsa-vfs.c
+++ b/libbalsa/libbalsa-vfs.c
@@ -529,6 +529,31 @@ libbalsa_vfs_file_unlink(LibbalsaVfs * file, GError **err)
 }
 
 
+/*
+ * Make sure the passed file exists
+ */
+gboolean
+libbalsa_vfs_ensure_file_exists(LibbalsaVfs *file, GError **err)
+{
+    GFileOutputStream *stream;
+    gboolean result;
+
+    g_return_val_if_fail(LIBBALSA_IS_VFS(file), FALSE);
+    g_return_val_if_fail(file->file_uri != NULL, FALSE);
+    g_return_val_if_fail(file->gio_gfile != NULL, FALSE);
+
+    stream = g_file_append_to(file->gio_gfile, G_FILE_CREATE_NONE, NULL, err);
+    if (stream != NULL) {
+        g_object_unref(stream);
+        result = TRUE;
+    } else {
+        result = FALSE;
+    }
+
+    return result;
+}
+
+
 gboolean
 libbalsa_vfs_launch_app(LibbalsaVfs * file, GObject * object, GError **err)
 {
diff --git a/libbalsa/libbalsa-vfs.h b/libbalsa/libbalsa-vfs.h
index e2b71cda3..51e973841 100644
--- a/libbalsa/libbalsa-vfs.h
+++ b/libbalsa/libbalsa-vfs.h
@@ -66,6 +66,8 @@ gboolean libbalsa_vfs_is_regular_file(LibbalsaVfs * file,
                                       GError **err);
 gint libbalsa_vfs_file_unlink(LibbalsaVfs * file,
                               GError **err);
+gboolean libbalsa_vfs_ensure_file_exists(LibbalsaVfs *file,
+                                         GError **err);
 
 /* application launch helpers */
 gboolean libbalsa_vfs_launch_app(LibbalsaVfs * file,


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