Skip to content

Commit

Permalink
lib-mail: Gave message_part_data its own field in struct message_part.
Browse files Browse the repository at this point in the history
  • Loading branch information
stephanbosch authored and sirainen committed Feb 20, 2017
1 parent d61ce13 commit 50ace8c
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 21 deletions.
26 changes: 13 additions & 13 deletions src/lib-imap/imap-bodystructure.c
Expand Up @@ -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);
Expand All @@ -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 {
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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) {
Expand Down Expand Up @@ -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)
Expand All @@ -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);

Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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;
Expand Down
12 changes: 6 additions & 6 deletions src/lib-imap/imap-bodystructure.h
Expand Up @@ -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);

Expand All @@ -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);

Expand Down
4 changes: 4 additions & 0 deletions src/lib-mail/message-part.h
Expand Up @@ -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 {
Expand Down Expand Up @@ -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;
Expand Down
4 changes: 2 additions & 2 deletions src/lib-storage/index/index-mail.c
Expand Up @@ -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);
Expand All @@ -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);

Expand Down

0 comments on commit 50ace8c

Please sign in to comment.