Mercurial > dovecot > core-2.2
changeset 4635:210bb1ff0e6e HEAD
Added fill_missing parameter to message_address_parse() which specifies if
missing mailbox and domain should be returned as MISSING_MAILBOX and
MISSING_DOMAIN or just as empty strings.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 08 Oct 2006 22:22:33 +0300 |
parents | 5e94f1332189 |
children | 630e6121fb8d |
files | src/lib-imap/imap-envelope.c src/lib-mail/message-address.c src/lib-mail/message-address.h src/lib-storage/index/index-search.c src/lib-storage/index/index-sort.c |
diffstat | 5 files changed, 19 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-imap/imap-envelope.c Sun Oct 08 20:27:14 2006 +0300 +++ b/src/lib-imap/imap-envelope.c Sun Oct 08 22:22:33 2006 +0300 @@ -146,7 +146,7 @@ if (addr_p != NULL) { *addr_p = message_address_parse(pool, hdr->full_value, hdr->full_value_len, - (unsigned int)-1); + (unsigned int)-1, TRUE); } if (str_p != NULL)
--- a/src/lib-mail/message-address.c Sun Oct 08 20:27:14 2006 +0300 +++ b/src/lib-mail/message-address.c Sun Oct 08 22:22:33 2006 +0300 @@ -12,6 +12,8 @@ struct message_address *first_addr, *last_addr, addr; string_t *str; + + bool fill_missing; }; static void add_address(struct message_address_parser_context *ctx) @@ -189,10 +191,14 @@ return -1; } - if (ctx->addr.mailbox == NULL) - ctx->addr.mailbox = p_strdup(ctx->pool, "MISSING_MAILBOX"); - if (ctx->addr.domain == NULL) - ctx->addr.domain = p_strdup(ctx->pool, "MISSING_DOMAIN"); + if (ctx->addr.mailbox == NULL) { + ctx->addr.mailbox = !ctx->fill_missing ? "" : + p_strdup(ctx->pool, "MISSING_MAILBOX"); + } + if (ctx->addr.domain == NULL) { + ctx->addr.domain = !ctx->fill_missing ? "" : + p_strdup(ctx->pool, "MISSING_DOMAIN"); + } add_address(ctx); return ret; @@ -273,7 +279,7 @@ struct message_address * message_address_parse(pool_t pool, const unsigned char *data, size_t size, - unsigned int max_addresses) + unsigned int max_addresses, bool fill_missing) { struct message_address_parser_context ctx; @@ -284,6 +290,7 @@ rfc822_parser_init(&ctx.parser, data, size, t_str_new(128)); ctx.pool = pool; ctx.str = t_str_new(128); + ctx.fill_missing = fill_missing; rfc822_skip_lwsp(&ctx.parser);
--- a/src/lib-mail/message-address.h Sun Oct 08 20:27:14 2006 +0300 +++ b/src/lib-mail/message-address.h Sun Oct 08 22:22:33 2006 +0300 @@ -10,10 +10,12 @@ const char *name, *route, *mailbox, *domain; }; -/* Parse message addresses from given data. */ +/* Parse message addresses from given data. If fill_missing is TRUE, missing + mailbox and domain are set to MISSING_MAILBOX and MISSING_DOMAIN strings. + Otherwise they're set to "". */ struct message_address * message_address_parse(pool_t pool, const unsigned char *data, size_t size, - unsigned int max_addresses); + unsigned int max_addresses, bool fill_missing); void message_address_write(string_t *str, const struct message_address *addr);
--- a/src/lib-storage/index/index-search.c Sun Oct 08 20:27:14 2006 +0300 +++ b/src/lib-storage/index/index-search.c Sun Oct 08 22:22:33 2006 +0300 @@ -395,7 +395,7 @@ addr = message_address_parse(pool_datastack_create(), ctx->hdr->full_value, ctx->hdr->full_value_len, - (unsigned int)-1); + (unsigned int)-1, TRUE); str = t_str_new(ctx->hdr->value_len); message_address_write(str, addr); ret = message_header_search(str_data(str), str_len(str),
--- a/src/lib-storage/index/index-sort.c Sun Oct 08 20:27:14 2006 +0300 +++ b/src/lib-storage/index/index-sort.c Sun Oct 08 22:22:33 2006 +0300 @@ -163,7 +163,7 @@ addr = message_address_parse(pool_datastack_create(), (const unsigned char *)str, - strlen(str), 1); + strlen(str), 1, TRUE); return addr != NULL ? addr->mailbox : ""; }