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);