[balsa] Add tempdir member and new methods
- From: Peter Bloomfield <PeterB src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [balsa] Add tempdir member and new methods
- Date: Sun, 27 Dec 2009 01:24:00 +0000 (UTC)
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]