[balsa] Add tempdir member and new methods



commit 4916d42bfa552610727709aafa3ac3cb8acd1103
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sat Dec 26 20:19:10 2009 -0500

    Add tempdir member and new methods

 ChangeLog          |   11 ++++++++++-
 libbalsa/message.c |   47 ++++++++++++++++++++++++++++++++++++++++++-----
 libbalsa/message.h |   12 ++++++++++--
 3 files changed, 62 insertions(+), 8 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index aa3db05..1bc2ed4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,6 +1,15 @@
 2009-12-26  Peter Bloomfield
 
-	* libbalsa/libbalsa.h: new error codes.
+	* libbalsa/message.h: add tempdir member; new methods.
+	* libbalsa/message.c (libbalsa_message_finalize),
+	(libbalsa_message_get_part_by_id),
+	(libbalsa_message_save_parts_by_id),
+	(libbalsa_message_has_cid_part), (libbalsa_message_get_tempdir):
+	implement them.
+
+2009-12-26  Peter Bloomfield
+
+	* libbalsa/libbalsa.h: new error code.
 
 2009-12-20  Peter Bloomfield
 
diff --git a/libbalsa/message.c b/libbalsa/message.c
index 102b3f8..6c1b81f 100644
--- a/libbalsa/message.c
+++ b/libbalsa/message.c
@@ -185,6 +185,13 @@ libbalsa_message_finalize(GObject * object)
     g_free(message->force_key_id);
 #endif
 
+    if (message->tempdir) {
+        if (rmdir(message->tempdir))
+            g_warning("Could not remove %s", message->tempdir);
+        g_free(message->tempdir);
+        message->tempdir = NULL;
+    }
+
     G_OBJECT_CLASS(parent_class)->finalize(object);
 }
 
@@ -531,13 +538,32 @@ libbalsa_message_user_hdrs_from_gmime(GMimeMessage * message)
    return a message part identified by Content-ID=id
    message must be referenced. (FIXME?)
 */
-GMimeStream *
+LibBalsaMessageBody *
 libbalsa_message_get_part_by_id(LibBalsaMessage* msg, const gchar* id)
 {
-    LibBalsaMessageBody* body = 
-	libbalsa_message_body_get_by_id(msg->body_list,	id);
-    if(!body) return NULL;
-    return libbalsa_message_body_get_stream(body, NULL); /*provide more info?*/
+    return libbalsa_message_body_get_by_id(msg->body_list, id);
+}
+
+/* libbalsa_message_save_parts_by_id:
+ * save all message parts that have Content-ID headers
+ */
+guint
+libbalsa_message_save_parts_by_id(LibBalsaMessage * message, GError ** err)
+{
+    guint count = 0;
+    libbalsa_message_body_save_parts_by_id(message->body_list, &count,
+                                           err);
+
+    return count;
+}
+
+/* libbalsa_message_has_cid_part:
+ * return whether the message has any part with a Content-ID header
+ */
+gboolean
+libbalsa_message_has_cid_part(LibBalsaMessage * message)
+{
+    return libbalsa_message_body_has_cid_part(message->body_list);
 }
 
 /* libbalsa_message_save:
@@ -1354,3 +1380,14 @@ libbalsa_message_set_subject_from_header(LibBalsaMessage * message,
         g_free(subject);
     }
 }
+
+const gchar *
+libbalsa_message_get_tempdir(LibBalsaMessage * message)
+{
+    if (!message->tempdir) {
+        if (!libbalsa_mktempdir(&message->tempdir))
+            g_warning("Could not make tempdir");
+    }
+
+    return message->tempdir;
+}
diff --git a/libbalsa/message.h b/libbalsa/message.h
index 36264a6..0da95c6 100644
--- a/libbalsa/message.h
+++ b/libbalsa/message.h
@@ -238,6 +238,8 @@ struct _LibBalsaMessage {
 #define LIBBALSA_MESSAGE_GET_NO(m)  libbalsa_message_get_no(m)
 #endif
 
+    gchar *tempdir;     /* to hold named parts */
+
     unsigned has_all_headers:1;
 };
 
@@ -318,8 +320,12 @@ void libbalsa_message_set_user_header(LibBalsaMessage * message,
                                       const gchar * name,
                                       const gchar * value);
 
-GMimeStream *libbalsa_message_get_part_by_id(LibBalsaMessage * message,
-                                             const gchar * id);
+LibBalsaMessageBody *libbalsa_message_get_part_by_id(LibBalsaMessage *
+                                                     message,
+                                                     const gchar * id);
+guint libbalsa_message_save_parts_by_id(LibBalsaMessage * message,
+                                        GError ** err);
+gboolean libbalsa_message_has_cid_part(LibBalsaMessage * message);
 
 void libbalsa_message_set_dispnotify(LibBalsaMessage *message, 
 				     InternetAddress *ia);
@@ -359,4 +365,6 @@ gboolean libbalsa_message_copy(LibBalsaMessage * message,
 void libbalsa_message_change_flags(LibBalsaMessage * message,
                                    LibBalsaMessageFlag set,
                                    LibBalsaMessageFlag clear);
+
+const gchar *libbalsa_message_get_tempdir(LibBalsaMessage * message);
 #endif				/* __LIBBALSA_MESSAGE_H__ */



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