Mercurial > dovecot > core-2.2
changeset 13107:254bcfcb64b1
fts-squat: Convert search key to decomposed titlecase instead of assuming it is.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 26 Jul 2011 13:54:23 +0300 |
parents | 87430246c3e1 |
children | a16971f5937b |
files | src/plugins/fts-squat/fts-backend-squat.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/fts-squat/fts-backend-squat.c Tue Jul 26 13:52:20 2011 +0300 +++ b/src/plugins/fts-squat/fts-backend-squat.c Tue Jul 26 13:54:23 2011 +0300 @@ -3,6 +3,7 @@ #include "lib.h" #include "array.h" #include "str.h" +#include "unichar.h" #include "mail-user.h" #include "mail-namespace.h" #include "mail-storage-private.h" @@ -343,6 +344,7 @@ { enum squat_index_type squat_type; ARRAY_TYPE(seq_range) tmp_definite_uids, tmp_maybe_uids; + string_t *dtc; uint32_t last_uid; int ret; @@ -366,7 +368,12 @@ i_array_init(&tmp_definite_uids, 128); i_array_init(&tmp_maybe_uids, 128); - ret = squat_trie_lookup(backend->trie, arg->value.str, squat_type, + dtc = t_str_new(128); + if (uni_utf8_to_decomposed_titlecase(arg->value.str, + strlen(arg->value.str), dtc) < 0) + i_panic("squat: search key not utf8"); + + ret = squat_trie_lookup(backend->trie, str_c(dtc), squat_type, &tmp_definite_uids, &tmp_maybe_uids); if (arg->match_not) { /* definite -> non-match