dovecot-2.0: Previous commit accidentally removed mail_index_key...
dovecot at dovecot.org
dovecot at dovecot.org
Mon Jul 13 20:20:28 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/d670b5d66302
changeset: 9614:d670b5d66302
user: Timo Sirainen <tss at iki.fi>
date: Mon Jul 13 13:19:32 2009 -0400
description:
Previous commit accidentally removed mail_index_keywords_create().
diffstat:
1 file changed, 38 insertions(+)
src/lib-index/mail-index.c | 38 ++++++++++++++++++++++++++++++++++++++
diffs (48 lines):
diff -r ed9b4bc28913 -r d670b5d66302 src/lib-index/mail-index.c
--- a/src/lib-index/mail-index.c Mon Jul 13 13:16:45 2009 -0400
+++ b/src/lib-index/mail-index.c Mon Jul 13 13:19:32 2009 -0400
@@ -259,6 +259,44 @@ const ARRAY_TYPE(keywords) *mail_index_g
}
struct mail_keywords *
+mail_index_keywords_create(struct mail_index *index,
+ const char *const keywords[])
+{
+ struct mail_keywords *k;
+ unsigned int src, dest, i, count;
+
+ count = str_array_length(keywords);
+ if (count == 0) {
+ k = i_new(struct mail_keywords, 1);
+ k->index = index;
+ k->refcount = 1;
+ return k;
+ }
+
+ /* @UNSAFE */
+ k = i_malloc(sizeof(struct mail_keywords) +
+ (sizeof(k->idx) * (count-1)));
+ k->index = index;
+ k->refcount = 1;
+
+ /* look up the keywords from index. they're never removed from there
+ so we can permanently store indexes to them. */
+ for (src = dest = 0; src < count; src++) {
+ mail_index_keyword_lookup_or_create(index, keywords[src],
+ &k->idx[dest]);
+ /* ignore if this is a duplicate */
+ for (i = 0; i < src; i++) {
+ if (k->idx[i] == k->idx[dest])
+ break;
+ }
+ if (i == src)
+ dest++;
+ }
+ k->count = dest;
+ return k;
+}
+
+struct mail_keywords *
mail_index_keywords_create_from_indexes(struct mail_index *index,
const ARRAY_TYPE(keyword_indexes)
*keyword_indexes)
More information about the dovecot-cvs
mailing list