dovecot: Removed autocreate parameter from mail_index_keyword_lo...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Sep 1 00:36:06 EEST 2007
details: http://hg.dovecot.org/dovecot/rev/a1c587d3d633
changeset: 6335:a1c587d3d633
user: Timo Sirainen <tss at iki.fi>
date: Fri Aug 31 22:58:25 2007 +0300
description:
Removed autocreate parameter from mail_index_keyword_lookup(). Added a new
mail_index_keyword_lookup_or_create().
diffstat:
7 files changed, 30 insertions(+), 27 deletions(-)
src/lib-index/mail-index-sync-keywords.c | 2 -
src/lib-index/mail-index-transaction.c | 4 +--
src/lib-index/mail-index.c | 27 +++++++++++++---------
src/lib-index/mail-index.h | 9 ++++---
src/lib-storage/index/dbox/dbox-keywords.c | 4 +--
src/lib-storage/index/maildir/maildir-keywords.c | 4 ---
src/lib-storage/index/mbox/mbox-sync-parse.c | 7 ++---
diffs (162 lines):
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-index/mail-index-sync-keywords.c
--- a/src/lib-index/mail-index-sync-keywords.c Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-index/mail-index-sync-keywords.c Fri Aug 31 22:58:25 2007 +0300
@@ -21,7 +21,7 @@ keyword_lookup(struct mail_index_sync_ma
}
if (array_is_created(&map->keyword_idx_map) &&
mail_index_keyword_lookup(ctx->view->index, keyword_name,
- FALSE, &keyword_idx)) {
+ &keyword_idx)) {
/* FIXME: slow. maybe create index -> file mapping as well */
idx_map = array_get(&map->keyword_idx_map, &count);
for (i = 0; i < count; i++) {
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-index/mail-index-transaction.c
--- a/src/lib-index/mail-index-transaction.c Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-index/mail-index-transaction.c Fri Aug 31 22:58:25 2007 +0300
@@ -1087,8 +1087,8 @@ mail_index_keywords_create(struct mail_i
/* look up the keywords from index. they're never removed from there
so we can permanently store indexes to them. */
for (i = 0; i < count; i++) {
- (void)mail_index_keyword_lookup(index, keywords[i],
- TRUE, &k->idx[i]);
+ mail_index_keyword_lookup_or_create(index, keywords[i],
+ &k->idx[i]);
}
return k;
}
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-index/mail-index.c
--- a/src/lib-index/mail-index.c Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-index/mail-index.c Fri Aug 31 22:58:25 2007 +0300
@@ -182,10 +182,8 @@ void mail_index_unregister_sync_lost_han
}
bool mail_index_keyword_lookup(struct mail_index *index,
- const char *keyword, bool autocreate,
- unsigned int *idx_r)
-{
- char *keyword_dup;
+ const char *keyword, unsigned int *idx_r)
+{
void *value;
/* keywords_hash keeps a name => index mapping of keywords.
@@ -196,17 +194,24 @@ bool mail_index_keyword_lookup(struct ma
return TRUE;
}
- if (!autocreate) {
- *idx_r = (unsigned int)-1;
- return FALSE;
- }
+ *idx_r = (unsigned int)-1;
+ return FALSE;
+}
+
+void mail_index_keyword_lookup_or_create(struct mail_index *index,
+ const char *keyword,
+ unsigned int *idx_r)
+{
+ char *keyword_dup;
+
+ if (mail_index_keyword_lookup(index, keyword, idx_r))
+ return;
keyword = keyword_dup = p_strdup(index->keywords_pool, keyword);
*idx_r = array_count(&index->keywords);
hash_insert(index->keywords_hash, keyword_dup, POINTER_CAST(*idx_r));
array_append(&index->keywords, &keyword, 1);
- return TRUE;
}
int mail_index_map_parse_keywords(struct mail_index_map *map)
@@ -294,7 +299,7 @@ int mail_index_map_parse_keywords(struct
unsigned int idx;
old_idx = array_idx(&map->keyword_idx_map, i);
- if (!mail_index_keyword_lookup(index, keyword, FALSE, &idx) ||
+ if (!mail_index_keyword_lookup(index, keyword, &idx) ||
idx != *old_idx) {
mail_index_set_error(index, "Corrupted index file %s: "
"Keywords changed unexpectedly",
@@ -315,7 +320,7 @@ int mail_index_map_parse_keywords(struct
index->filepath);
return -1;
}
- (void)mail_index_keyword_lookup(index, keyword, TRUE, &idx);
+ mail_index_keyword_lookup_or_create(index, keyword, &idx);
array_append(&map->keyword_idx_map, &idx, 1);
}
return 0;
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-index/mail-index.h
--- a/src/lib-index/mail-index.h Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-index/mail-index.h Fri Aug 31 22:58:25 2007 +0300
@@ -348,11 +348,12 @@ void mail_index_update_flags_range(struc
only when UIDVALIDITY changes. */
void mail_index_reset(struct mail_index_transaction *t);
-/* Lookup a keyword, returns TRUE if found, FALSE if not. If autocreate is
- TRUE, the keyword is automatically created and TRUE is always returned. */
+/* Lookup a keyword, returns TRUE if found, FALSE if not. */
bool mail_index_keyword_lookup(struct mail_index *index,
- const char *keyword, bool autocreate,
- unsigned int *idx_r);
+ const char *keyword, unsigned int *idx_r);
+void mail_index_keyword_lookup_or_create(struct mail_index *index,
+ const char *keyword,
+ unsigned int *idx_r);
/* Return a pointer to array of NULL-terminated list of keywords. Note that
the array contents (and thus pointers inside it) may change after calling
mail_index_keywords_create() or mail_index_sync_begin(). */
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-storage/index/dbox/dbox-keywords.c
--- a/src/lib-storage/index/dbox/dbox-keywords.c Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-storage/index/dbox/dbox-keywords.c Fri Aug 31 22:58:25 2007 +0300
@@ -52,8 +52,8 @@ int dbox_file_read_keywords(struct dbox_
last_offset = file->input->v_offset;
/* set up map record for the keyword */
- (void)mail_index_keyword_lookup(mbox->ibox.index, line, TRUE,
- &kw.index_idx);
+ mail_index_keyword_lookup_or_create(mbox->ibox.index, line,
+ &kw.index_idx);
kw.file_idx = idx;
/* look up the position where to insert it */
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-storage/index/maildir/maildir-keywords.c
--- a/src/lib-storage/index/maildir/maildir-keywords.c Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-keywords.c Fri Aug 31 22:58:25 2007 +0300
@@ -409,9 +409,7 @@ unsigned int maildir_keywords_char_idx(s
maildir_keywords_create(ctx->mk, name, chridx);
}
- if (!mail_index_keyword_lookup(ctx->index, name, TRUE, &idx))
- i_unreached();
-
+ mail_index_keyword_lookup_or_create(ctx->index, name, &idx);
ctx->chridx_to_idx[chridx] = idx;
return idx;
}
diff -r e6d16b1b5e81 -r a1c587d3d633 src/lib-storage/index/mbox/mbox-sync-parse.c
--- a/src/lib-storage/index/mbox/mbox-sync-parse.c Fri Aug 31 21:26:53 2007 +0300
+++ b/src/lib-storage/index/mbox/mbox-sync-parse.c Fri Aug 31 22:58:25 2007 +0300
@@ -149,9 +149,8 @@ parse_imap_keywords_list(struct mbox_syn
keyword = t_strndup(hdr->full_value + keyword_start,
pos - keyword_start);
if (keyword_is_valid(keyword)) {
- (void)mail_index_keyword_lookup(
- ctx->sync_ctx->mbox->ibox.index,
- keyword, TRUE, &idx);
+ mail_index_keyword_lookup_or_create(
+ ctx->sync_ctx->mbox->ibox.index, keyword, &idx);
}
t_pop();
@@ -292,7 +291,7 @@ static bool parse_x_keywords(struct mbox
str_append_n(keyword, hdr->full_value + keyword_start,
pos - keyword_start);
if (!mail_index_keyword_lookup(ctx->sync_ctx->mbox->ibox.index,
- str_c(keyword), FALSE, &idx)) {
+ str_c(keyword), &idx)) {
/* keyword wasn't found. that means the sent mail
originally contained X-Keywords header. Delete it. */
t_pop();
More information about the dovecot-cvs
mailing list