Mercurial > dovecot > core-2.2
changeset 14635:45952eee7ad4
lib-mail: message_header_decode_utf8() API changed to not give return value.
It's a rather unnecessary optimization and it wasn't even correct when the
input wasn't valid UTF8.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 24 Jun 2012 19:51:40 +0300 |
parents | a65006d95d53 |
children | 0cb5fdb4c60d |
files | src/lib-mail/message-header-decode.c src/lib-mail/message-header-decode.h src/lib-mail/test-message-decoder.c src/lib-mail/test-message-header-decode.c src/lib-storage/index/index-mail-headers.c |
diffstat | 5 files changed, 9 insertions(+), 19 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-mail/message-header-decode.c Sun Jun 24 19:35:11 2012 +0300 +++ b/src/lib-mail/message-header-decode.c Sun Jun 24 19:51:40 2012 +0300 @@ -136,7 +136,6 @@ struct decode_utf8_context { buffer_t *dest; unsigned int changed:1; - unsigned int called:1; unsigned int dtcase:1; }; @@ -148,12 +147,6 @@ struct charset_translation *t; enum charset_flags flags; - /* one call with charset=NULL means nothing changed */ - if (!ctx->called && charset == NULL) - ctx->called = TRUE; - else - ctx->changed = TRUE; - if (charset == NULL || charset_is_utf8(charset)) { /* ASCII / UTF-8 */ if (ctx->dtcase) { @@ -181,7 +174,7 @@ return TRUE; } -bool message_header_decode_utf8(const unsigned char *data, size_t size, +void message_header_decode_utf8(const unsigned char *data, size_t size, buffer_t *dest, bool dtcase) { struct decode_utf8_context ctx; @@ -191,5 +184,4 @@ ctx.dest = dest; ctx.dtcase = dtcase; message_header_decode(data, size, decode_utf8_callback, &ctx); - return ctx.changed || (dest->used - used != size); }
--- a/src/lib-mail/message-header-decode.h Sun Jun 24 19:35:11 2012 +0300 +++ b/src/lib-mail/message-header-decode.h Sun Jun 24 19:51:40 2012 +0300 @@ -14,9 +14,8 @@ void *context); /* Append decoded RFC2047 header as UTF-8 to given buffer. If dtcase=TRUE, - the header is appended through uni_utf8_to_decomposed_titlecase(). - Returns TRUE if output changed in any way from input. */ -bool message_header_decode_utf8(const unsigned char *data, size_t size, + the header is appended through uni_utf8_to_decomposed_titlecase(). */ +void message_header_decode_utf8(const unsigned char *data, size_t size, buffer_t *dest, bool dtcase); #endif
--- a/src/lib-mail/test-message-decoder.c Sun Jun 24 19:35:11 2012 +0300 +++ b/src/lib-mail/test-message-decoder.c Sun Jun 24 19:51:40 2012 +0300 @@ -9,11 +9,10 @@ #include "message-decoder.h" #include "test-common.h" -bool message_header_decode_utf8(const unsigned char *data, size_t size, +void message_header_decode_utf8(const unsigned char *data, size_t size, buffer_t *dest, bool dtcase ATTR_UNUSED) { buffer_append(dest, data, size); - return FALSE; } void quoted_printable_decode(const unsigned char *src, size_t src_size,
--- a/src/lib-mail/test-message-header-decode.c Sun Jun 24 19:35:11 2012 +0300 +++ b/src/lib-mail/test-message-header-decode.c Sun Jun 24 19:51:40 2012 +0300 @@ -40,9 +40,8 @@ dest = t_str_new(256); for (i = 0; i < N_ELEMENTS(data); i += 2) { str_truncate(dest, 0); - test_assert(message_header_decode_utf8((const unsigned char *)data[i], - strlen(data[i]), - dest, FALSE)); + message_header_decode_utf8((const unsigned char *)data[i], + strlen(data[i]), dest, FALSE); test_assert(strcmp(str_c(dest), data[i+1]) == 0); } test_end();
--- a/src/lib-storage/index/index-mail-headers.c Sun Jun 24 19:35:11 2012 +0300 +++ b/src/lib-storage/index/index-mail-headers.c Sun Jun 24 19:51:40 2012 +0300 @@ -715,8 +715,9 @@ return -1; /* decode MIME encoded-words. decoding may also add new LFs. */ - if (message_header_decode_utf8((const unsigned char *)input, - strlen(input), str, FALSE)) + message_header_decode_utf8((const unsigned char *)input, + strlen(input), str, FALSE); + if (strcmp(str_c(str), input) != 0) input = p_strdup(mail->data_pool, str_c(str)); decoded_list[i] = input; }