diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-26 16:22:09 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2011-08-26 16:41:54 +0300 |
commit | a71c4b6be03d60b9db1d878a912f23a3864c548a (patch) | |
tree | 28ba6bb529f30d826a9fb24195c830c98529d3f3 /include/mailutils/sys | |
parent | bdf3c6cf36fd7781c9a59babda57c5eb9261de45 (diff) | |
download | mailutils-a71c4b6be03d60b9db1d878a912f23a3864c548a.tar.gz mailutils-a71c4b6be03d60b9db1d878a912f23a3864c548a.tar.bz2 |
Improve mime support, introduce ref/unref functions for mu_message_t and mu_mime_t.
* include/mailutils/message.h (mu_message_ref): Change proto.
(mu_message_unref): New proto (instead of macro).
* include/mailutils/mime.h (mu_mime_ref)
(mu_mime_unref, mu_mime_to_message): New protos.
* include/mailutils/sys/message.h (MESSAGE_MODIFIED)
(MESSAGE_INTERNAL_STREAM): New constants (from mime.c)
(MESSAGE_MIME_OWNER): New constant.
(_mu_message) <ref_count>: Rename from ref.
* include/mailutils/sys/mime.h (MIME_SEEK_ACTIVE): New constant.
(_mu_mime) <ref_count>: New member.
* libmailutils/mailbox/message.c (MESSAGE_MODIFIED)
(MESSAGE_INTERNAL_STREAM): Removed (see above).
* libmailutils/mailer/mailer.c (mu_message_unref): New function.
(mu_message_destroy): Rewrite.
(mu_message_ref): Returns void.
(mu_message_lines): Don't access header and body directly to
give virtual functions a chance to initialize them.
(mu_message_quick_lines): likewise.
* libmailutils/mailer/mailer.c (send_fragments): Use mu_mime_to_message
instead of mu_message_unref.
* libmailutils/mime/mime.c (_mime_append_part): Set offset only if
mime->stream is not null.
(_mime_body_stream_seek): Implement (albeit inefficiently).
(mu_mime_create): Set ref_count.
(mu_mime_ref, mu_mime_unref): New functions.
(mu_mime_destroy): Reimplement as a wrapper over _mu_mime_free.
(mu_mime_get_message): Increase refcount of the message being returned.
(mu_mime_to_message): New function.
* libmailutils/stream/message_stream.c (_message_open): Handle arbitrary
text as RFC822 without headers.
* libmu_sieve/actions.c: Unref the message returned by mu_mime_get_message.
* libmu_sieve/extensions/vacation.c: Likewise.
* mh/mhn.c: Likewise.
* libmailutils/stream/stream.c (mu_stream_seek) <MU_SEEK_CUR>: Bugfix.
Diffstat (limited to 'include/mailutils/sys')
-rw-r--r-- | include/mailutils/sys/message.h | 10 | ||||
-rw-r--r-- | include/mailutils/sys/mime.h | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/include/mailutils/sys/message.h b/include/mailutils/sys/message.h index 6f90485b8..f538fc9bb 100644 --- a/include/mailutils/sys/message.h +++ b/include/mailutils/sys/message.h @@ -30,8 +30,15 @@ extern "C" { #endif +#define MESSAGE_MODIFIED 0x10000 +#define MESSAGE_INTERNAL_STREAM 0x20000 +#define MESSAGE_MIME_OWNER 0x40000 + struct _mu_message { + /* Reference count. */ + int ref_count; + /* Who is the owner. */ void *owner; @@ -48,9 +55,6 @@ struct _mu_message mu_mailbox_t mailbox; size_t orig_header_size; - /* Reference count. */ - int ref; - int (*_get_stream) (mu_message_t, mu_stream_t *); int (*_get_uidl) (mu_message_t, char *, size_t, size_t *); int (*_get_uid) (mu_message_t, size_t *); diff --git a/include/mailutils/sys/mime.h b/include/mailutils/sys/mime.h index 3a28602e3..0fe5b74b8 100644 --- a/include/mailutils/sys/mime.h +++ b/include/mailutils/sys/mime.h @@ -44,9 +44,11 @@ extern "C" { #define MIME_ADDED_MULTIPART_CT 0x08000000 #define MIME_INSERT_BOUNDARY 0x04000000 #define MIME_ADDING_BOUNDARY 0x02000000 +#define MIME_SEEK_ACTIVE 0x01000000 struct _mu_mime { + int ref_count; mu_message_t msg; mu_header_t hdrs; mu_stream_t stream; |