Mercurial > dovecot > core-2.2
changeset 5511:518a77f3bf49 HEAD
Renamed message_decoder_init() to message_decoder_init_ucase() and changed
it to uppercase all the output.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 03 Apr 2007 21:03:55 +0300 |
parents | 93e9e081855a |
children | fbdf65a581b8 |
files | src/lib-mail/message-decoder.c src/lib-mail/message-decoder.h src/plugins/fts/fts-storage.c |
diffstat | 3 files changed, 18 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-decoder.c Tue Apr 03 21:02:44 2007 +0300 +++ b/src/lib-mail/message-decoder.c Tue Apr 03 21:03:55 2007 +0300 @@ -44,7 +44,7 @@ unsigned int charset_utf8:1; }; -struct message_decoder_context *message_decoder_init(void) +struct message_decoder_context *message_decoder_init_ucase(void) { struct message_decoder_context *ctx; @@ -77,9 +77,9 @@ struct charset_translation *t; bool unknown_charset; - if (charset == NULL || strcasecmp(charset, "UTF-8") == 0) { + if (charset == NULL || charset_is_utf8(charset)) { /* ASCII */ - buffer_append(ctx->buf, data, size); + _charset_utf8_ucase(data, size, ctx->buf, ctx->buf->used); return TRUE; } @@ -141,6 +141,8 @@ struct message_header_line *hdr, struct message_block *output) { + size_t value_len; + if (hdr->continues) { hdr->use_full_value = TRUE; return FALSE; @@ -165,11 +167,19 @@ buffer_set_used_size(ctx->buf, 0); message_header_decode(hdr->full_value, hdr->full_value_len, message_decode_header_callback, ctx); + value_len = ctx->buf->used; + + _charset_utf8_ucase((const unsigned char *)hdr->name, hdr->name_len, + ctx->buf, ctx->buf->used); + buffer_append_c(ctx->buf, '\0'); ctx->hdr = *hdr; ctx->hdr.full_value = ctx->buf->data; - ctx->hdr.full_value_len = ctx->buf->used; + ctx->hdr.full_value_len = value_len; ctx->hdr.value_len = 0; + ctx->hdr.name = CONST_PTR_OFFSET(ctx->buf->data, + ctx->hdr.full_value_len); + ctx->hdr.name_len = ctx->buf->used - 1 - value_len; output->hdr = &ctx->hdr; return TRUE;
--- a/src/lib-mail/message-decoder.h Tue Apr 03 21:02:44 2007 +0300 +++ b/src/lib-mail/message-decoder.h Tue Apr 03 21:03:55 2007 +0300 @@ -4,8 +4,9 @@ struct message_block; /* Decode message's contents as UTF-8, both the headers and the MIME bodies. - The bodies are decoded from quoted-printable and base64 formats if needed. */ -struct message_decoder_context *message_decoder_init(void); + The bodies are decoded from quoted-printable and base64 formats if needed. + The data is returned uppercased. */ +struct message_decoder_context *message_decoder_init_ucase(void); void message_decoder_deinit(struct message_decoder_context **ctx); /* Decode input and return decoded output. Headers are returned only in their
--- a/src/plugins/fts/fts-storage.c Tue Apr 03 21:02:44 2007 +0300 +++ b/src/plugins/fts/fts-storage.c Tue Apr 03 21:03:55 2007 +0300 @@ -174,7 +174,7 @@ prev_part = skip_part = NULL; parser = message_parser_init(pool_datastack_create(), input); - decoder = message_decoder_init(); + decoder = message_decoder_init_ucase(); for (;;) { ret = message_parser_parse_next_block(parser, &raw_block); i_assert(ret != 0);