]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-mail: Gave message_part_data its own field in struct message_part.
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sun, 23 Oct 2016 11:29:43 +0000 (13:29 +0200)
committerTimo Sirainen <timo.sirainen@dovecot.fi>
Mon, 20 Feb 2017 09:26:03 +0000 (11:26 +0200)
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

index 81e8f4a9d8c1e788a2c89fba55e51fd620e01e64..c6d001ead6c4796af6829560e7a538d19e3ae828 100644 (file)
@@ -238,16 +238,16 @@ void imap_bodystructure_parse_header(pool_t pool, struct message_part *part,
        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 @@ void imap_bodystructure_parse_header(pool_t pool, struct message_part *part,
        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 @@ part_write_bodystructure_data_common(struct message_part_data *data,
 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_multipart(const struct message_part *part,
 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 @@ static void part_write_body(const struct message_part *part,
                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 @@ static void part_write_body(const struct message_part *part,
 
 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 @@ imap_bodystructure_parse_args(const struct imap_arg *args, pool_t pool,
        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 @@ imap_bodystructure_parse_args(const struct imap_arg *args, pool_t pool,
                }
                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;
index a1866747ac96c2d04e38d9fadcbc9e4e31490a51..5fef7c726560e5bb6436ee322ae05cc71d133fbf 100644 (file)
@@ -24,7 +24,7 @@ struct message_part_data {
 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 @@ void imap_bodystructure_parse_header(pool_t pool, struct message_part *part,
 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);
 
index b6b01e6da6ac66f4c369e8776d31ac6647dfedc0..36d9da9b6e0bd34c3356885f48fad07f57ee2edf 100644 (file)
@@ -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_part {
        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;
index 23b02ee4ba8da52c2ecfdf770d63dccef56d0561..39245788aa071ed820dd3eb06c4687487475a210 100644 (file)
@@ -944,7 +944,7 @@ static void index_mail_cache_dates(struct index_mail *mail)
 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 @@ index_mail_find_first_text_mime_part(struct message_part *parts)
 
                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);