[balsa/64-save-empty-attachment: 1/2] body: implement libbalsa_message_body_length()




commit 9c8a93fc1fca44f931bacc789d72eee3441a315c
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Mon Jan 17 17:20:48 2022 -0500

    body: implement libbalsa_message_body_length()

 libbalsa/body.c | 26 ++++++++++++++++++++++++++
 libbalsa/body.h |  2 ++
 2 files changed, 28 insertions(+)
---
diff --git a/libbalsa/body.c b/libbalsa/body.c
index d2c732305..2d8433dbb 100644
--- a/libbalsa/body.c
+++ b/libbalsa/body.c
@@ -779,6 +779,32 @@ libbalsa_message_body_save_stream(LibBalsaMessageBody * body,
     return len >= 0;
 }
 
+/*
+ * libbalsa_message_body_length
+ *
+ * Return the length of the body part, or -1 on error
+ */
+gint64
+libbalsa_message_body_length(LibBalsaMessageBody * body, GError **err)
+{
+    GMimeStream *body_stream;
+    gint64 len = -1;
+
+    g_return_val_if_fail(body != NULL, len);
+
+    body_stream = libbalsa_message_body_get_stream(body, err);
+    if (body_stream != NULL) {
+        GMimeStream *null_stream;
+
+        null_stream = g_mime_stream_null_new();
+        len = g_mime_stream_write_to_stream(body_stream, null_stream);
+        g_object_unref(null_stream);
+        g_object_unref(body_stream);
+    }
+
+    return len;
+}
+
 gchar *
 libbalsa_message_body_get_mime_type(LibBalsaMessageBody * body)
 {
diff --git a/libbalsa/body.h b/libbalsa/body.h
index 08098aa28..0c4cb8289 100644
--- a/libbalsa/body.h
+++ b/libbalsa/body.h
@@ -107,6 +107,8 @@ gboolean libbalsa_message_body_save_stream(LibBalsaMessageBody * body,
                                            GMimeStream * dest,
                                            gboolean filter_crlf,
                                            GError **err);
+gint64 libbalsa_message_body_length(LibBalsaMessageBody * body,
+                                    GError **err);
 gboolean libbalsa_message_body_save(LibBalsaMessageBody * body,
                                     const gchar * filename, mode_t mode,
                                     gboolean filter_crlf, GError **err);


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