changeset 13106:87430246c3e1

lib-mail: message_search_init() now converts search key to decomposed titlecase.
author Timo Sirainen <tss@iki.fi>
date Tue, 26 Jul 2011 13:52:20 +0300
parents e6eac5f1e21b
children 254bcfcb64b1
files src/lib-mail/message-search.c src/lib-mail/message-search.h
diffstat 2 files changed, 13 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-mail/message-search.c	Tue Jul 26 13:38:35 2011 +0300
+++ b/src/lib-mail/message-search.c	Tue Jul 26 13:52:20 2011 +0300
@@ -5,6 +5,7 @@
 #include "istream.h"
 #include "str.h"
 #include "str-find.h"
+#include "unichar.h"
 #include "rfc822-parser.h"
 #include "message-decoder.h"
 #include "message-parser.h"
@@ -20,7 +21,7 @@
 };
 
 struct message_search_context *
-message_search_init(const char *key_utf8_dtc,
+message_search_init(const char *key_utf8,
 		    enum message_search_flags flags)
 {
 	struct message_search_context *ctx;
@@ -28,7 +29,15 @@
 	ctx = i_new(struct message_search_context, 1);
 	ctx->flags = flags;
 	ctx->decoder = message_decoder_init(MESSAGE_DECODER_FLAG_DTCASE);
-	ctx->str_find_ctx = str_find_init(default_pool, key_utf8_dtc);
+
+	T_BEGIN {
+		string_t *dtc = t_str_new(128);
+
+		if (uni_utf8_to_decomposed_titlecase(key_utf8, strlen(key_utf8),
+						     dtc) < 0)
+			i_panic("message_search_init(): key not utf8");
+		ctx->str_find_ctx = str_find_init(default_pool, str_c(dtc));
+	} T_END;
 	return ctx;
 }
 
--- a/src/lib-mail/message-search.h	Tue Jul 26 13:38:35 2011 +0300
+++ b/src/lib-mail/message-search.h	Tue Jul 26 13:52:20 2011 +0300
@@ -10,10 +10,9 @@
 	MESSAGE_SEARCH_FLAG_SKIP_HEADERS	= 0x01
 };
 
-/* The key must be given in UTF-8 charset and decomposed titlecase
-   (CHARSET_FLAG_DECOMP_TITLECASE) */
+/* The key must be given in UTF-8 charset */
 struct message_search_context *
-message_search_init(const char *key_utf8_dtc,
+message_search_init(const char *key_utf8,
 		    enum message_search_flags flags);
 void message_search_deinit(struct message_search_context **ctx);