dovecot-2.2-pigeonhole: lib-sieve: message body: Amended messaag...
pigeonhole at rename-it.nl
pigeonhole at rename-it.nl
Fri Jan 8 19:51:28 UTC 2016
details: http://hg.rename-it.nl/dovecot-2.2-pigeonhole/rev/46a974ebd896
changeset: 2215:46a974ebd896
user: Stephan Bosch <stephan at rename-it.nl>
date: Fri Jan 08 20:49:39 2016 +0100
description:
lib-sieve: message body: Amended messaage part API with some more access functions.
Added support for getting message part information and content.
diffstat:
src/lib-sieve/sieve-message.c | 74 +++++++++++++++++++++++++++++++++++++++++++
src/lib-sieve/sieve-message.h | 28 +++++++++++++++-
2 files changed, 101 insertions(+), 1 deletions(-)
diffs (131 lines):
diff -r f7b5ea4ddd48 -r 46a974ebd896 src/lib-sieve/sieve-message.c
--- a/src/lib-sieve/sieve-message.c Fri Jan 08 20:49:39 2016 +0100
+++ b/src/lib-sieve/sieve-message.c Fri Jan 08 20:49:39 2016 +0100
@@ -849,6 +849,80 @@
}
/*
+ * Message part
+ */
+
+struct sieve_message_part *sieve_message_part_parent
+(struct sieve_message_part *mpart)
+{
+ return mpart->parent;
+}
+
+struct sieve_message_part *sieve_message_part_next
+(struct sieve_message_part *mpart)
+{
+ return mpart->next;
+}
+
+struct sieve_message_part *sieve_message_part_children
+(struct sieve_message_part *mpart)
+{
+ return mpart->children;
+}
+
+const char *sieve_message_part_content_type
+(struct sieve_message_part *mpart)
+{
+ return mpart->content_type;
+}
+
+const char *sieve_message_part_content_disposition
+(struct sieve_message_part *mpart)
+{
+ return mpart->content_disposition;
+}
+
+int sieve_message_part_get_first_header
+(struct sieve_message_part *mpart, const char *field,
+ const char **value_r)
+{
+ const struct sieve_message_header *headers;
+ unsigned int i, count;
+
+ headers = array_get(&mpart->headers, &count);
+ for ( i = 0; i < count; i++ ) {
+ if ( strcasecmp( headers[i].name, field) == 0 ) {
+ i_assert( headers[i].value[headers[i].value_len] == '\0' );
+ *value_r = (const char *)headers[i].value;
+ return 1;
+ }
+ }
+
+ *value_r = NULL;
+ return 0;
+}
+
+void sieve_message_part_get_data
+(struct sieve_message_part *mpart,
+ struct sieve_message_part_data *data, bool text)
+{
+ memset(data, 0, sizeof(*data));
+ data->content_type = mpart->content_type;
+ data->content_disposition = mpart->content_disposition;
+
+ if ( !text ) {
+ data->content = mpart->decoded_body;
+ data->size = mpart->decoded_body_size;
+ } else if ( mpart->children != NULL ) {
+ data->content = "";
+ data->size = 0;
+ } else {
+ data->content = mpart->text_body;
+ data->size = mpart->text_body_size;
+ }
+}
+
+/*
* Message body
*/
diff -r f7b5ea4ddd48 -r 46a974ebd896 src/lib-sieve/sieve-message.h
--- a/src/lib-sieve/sieve-message.h Fri Jan 08 20:49:39 2016 +0100
+++ b/src/lib-sieve/sieve-message.h Fri Jan 08 20:49:39 2016 +0100
@@ -204,9 +204,11 @@
bool mime_decode, struct sieve_stringlist **fields_r);
/*
- * Message body
+ * Message part
*/
+struct sieve_message_part;
+
struct sieve_message_part_data {
const char *content_type;
const char *content_disposition;
@@ -215,6 +217,30 @@
unsigned long size;
};
+struct sieve_message_part *sieve_message_part_parent
+ (struct sieve_message_part *mpart) ATTR_PURE;
+struct sieve_message_part *sieve_message_part_next
+ (struct sieve_message_part *mpart) ATTR_PURE;
+struct sieve_message_part *sieve_message_part_children
+ (struct sieve_message_part *mpart) ATTR_PURE;
+
+const char *sieve_message_part_content_type
+ (struct sieve_message_part *mpart) ATTR_PURE;
+const char *sieve_message_part_content_disposition
+ (struct sieve_message_part *mpart) ATTR_PURE;
+
+int sieve_message_part_get_first_header
+ (struct sieve_message_part *mpart, const char *field,
+ const char **value_r);
+
+void sieve_message_part_get_data
+ (struct sieve_message_part *mpart,
+ struct sieve_message_part_data *data, bool text);
+
+/*
+ * Message body
+ */
+
int sieve_message_body_get_content
(const struct sieve_runtime_env *renv,
const char * const *content_types,
More information about the dovecot-cvs
mailing list