changeset 21622:b6b198961bc6

lib-mail: Gave message_part_data its own field in struct message_part.
author Stephan Bosch <stephan.bosch@dovecot.fi>
date Sun, 23 Oct 2016 13:29:43 +0200
parents 4e137a17cfd7
children ff0f2eb98d79
files src/lib-imap/imap-bodystructure.c src/lib-imap/imap-bodystructure.h src/lib-mail/message-part.h src/lib-storage/index/index-mail.c
diffstat 4 files changed, 25 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap/imap-bodystructure.c	Sun Oct 23 13:10:11 2016 +0200
+++ b/src/lib-imap/imap-bodystructure.c	Sun Oct 23 13:29:43 2016 +0200
@@ -238,16 +238,16 @@
 	bool parent_rfc822;
 
 	if (hdr == NULL) {
-		if (part->context == NULL) {
+		if (part->data == NULL) {
 			/* no Content-* headers. add an empty context
 			   structure anyway. */
-			part->context = part_data =
+			part->data = part_data =
 				p_new(pool, struct message_part_data, 1);
 			part_data->pool = pool;
 		} else if ((part->flags & MESSAGE_PART_FLAG_IS_MIME) == 0) {
 			/* If there was no Mime-Version, forget all
 			   the Content-stuff */
-			part_data = part->context;
+			part_data = part->data;
 			envelope = part_data->envelope;
 
 			i_zero(part_data);
@@ -265,13 +265,13 @@
 	if (!parent_rfc822 && strncasecmp(hdr->name, "Content-", 8) != 0)
 		return;
 
-	if (part->context == NULL) {
+	if (part->data == NULL) {
 		/* initialize message part data */
-		part->context = part_data =
+		part->data = part_data =
 			p_new(pool, struct message_part_data, 1);
 		part_data->pool = pool;
 	}
-	part_data = part->context;
+	part_data = part->data;
 
 	if (strncasecmp(hdr->name, "Content-", 8) == 0) {
 		T_BEGIN {
@@ -334,7 +334,7 @@
 static void part_write_body_multipart(const struct message_part *part,
 				      string_t *str, bool extended)
 {
-	struct message_part_data *data = part->context;
+	struct message_part_data *data = part->data;
 
 	if (part->children != NULL)
 		imap_bodystructure_write_siblings(part->children, str, extended);
@@ -370,7 +370,7 @@
 static void part_write_body(const struct message_part *part,
 			    string_t *str, bool extended)
 {
-	struct message_part_data *data = part->context;
+	struct message_part_data *data = part->data;
 	bool text;
 
 	if (part->flags & MESSAGE_PART_FLAG_MESSAGE_RFC822) {
@@ -423,7 +423,7 @@
 		i_assert(part->children != NULL);
 		i_assert(part->children->next == NULL);
 
-                child_data = part->children->context;
+                child_data = part->children->data;
 
 		str_append(str, " (");
 		if (child_data->envelope_str != NULL)
@@ -450,7 +450,7 @@
 
 bool imap_bodystructure_is_plain_7bit(const struct message_part *part)
 {
-	const struct message_part_data *data = part->context;
+	const struct message_part_data *data = part->data;
 
 	i_assert(part->parent == NULL);
 
@@ -700,9 +700,9 @@
 	uoff_t vsize;
 	bool multipart, text, message_rfc822;
 
-	i_assert(part->context == NULL);
+	i_assert(part->data == NULL);
 
-	part->context = data = p_new(pool, struct message_part_data, 1);
+	part->data = data = p_new(pool, struct message_part_data, 1);
 	data->pool = pool;
 
 	multipart = FALSE;
@@ -841,7 +841,7 @@
 		}
 		str_truncate(tmpstr, 0);
 		imap_write_envelope(list_args, tmpstr);
-		child_data = part->children->context;
+		child_data = part->children->data;
 		child_data->envelope_str = p_strdup(pool, str_c(tmpstr));
 
 		args += 2;
--- a/src/lib-imap/imap-bodystructure.h	Sun Oct 23 13:10:11 2016 +0200
+++ b/src/lib-imap/imap-bodystructure.h	Sun Oct 23 13:29:43 2016 +0200
@@ -24,7 +24,7 @@
 struct message_part;
 struct message_header_line;
 
-/* Parse a single header. Note that this modifies part->context. */
+/* Parse a single header. Note that this modifies part->data. */
 void imap_bodystructure_parse_header(pool_t pool, struct message_part *part,
 				     struct message_header_line *hdr);
 
@@ -33,14 +33,14 @@
 bool imap_bodystructure_is_plain_7bit(const struct message_part *part)
 	ATTR_PURE;
 
-/* Write a BODY/BODYSTRUCTURE from given message_part. The
-   message_part->contexts must contain struct message_part_data.
-   part->body_size.virtual_size and .lines are also used for writing it. */
+/* Write a BODY/BODYSTRUCTURE from given message_part. The message_part->data
+   field must be set. part->body_size.virtual_size and .lines are also used
+   for writing it. */
 void imap_bodystructure_write(const struct message_part *part,
 			      string_t *dest, bool extended);
 
-/* Parse BODYSTRUCTURE and save the contents to message_part->contexts.
-   Returns 0 if ok, -1 if bodystructure wasn't valid. */
+/* Parse BODYSTRUCTURE and save the contents to message_part->data for each
+   message tree node. Returns 0 if ok, -1 if bodystructure wasn't valid. */
 int imap_bodystructure_parse(const char *bodystructure, pool_t pool,
 			     struct message_part *parts, const char **error_r);
 
--- a/src/lib-mail/message-part.h	Sun Oct 23 13:10:11 2016 +0200
+++ b/src/lib-mail/message-part.h	Sun Oct 23 13:29:43 2016 +0200
@@ -3,6 +3,8 @@
 
 #include "message-size.h"
 
+struct message_part_data;
+
 /* Note that these flags are used directly by message-parser-serialize, so
    existing flags can't be changed without breaking backwards compatibility */
 enum message_part_flags {
@@ -31,6 +33,8 @@
 	struct message_size header_size;
 	struct message_size body_size;
 
+	struct message_part_data *data;
+
 	/* total number of message_parts under children */
 	unsigned int children_count;
 	enum message_part_flags flags;
--- a/src/lib-storage/index/index-mail.c	Sun Oct 23 13:10:11 2016 +0200
+++ b/src/lib-storage/index/index-mail.c	Sun Oct 23 13:29:43 2016 +0200
@@ -944,7 +944,7 @@
 static struct message_part *
 index_mail_find_first_text_mime_part(struct message_part *parts)
 {
-	struct message_part_data *body_data = parts->context;
+	struct message_part_data *body_data = parts->data;
 	struct message_part *part;
 
 	i_assert(body_data != NULL);
@@ -966,7 +966,7 @@
 
 		for (part = parts->children; part != NULL; part = part->next) {
 			struct message_part_data *sub_body_data =
-				part->context;
+				part->data;
 
 			i_assert(sub_body_data != NULL);