Mercurial > dovecot > original-hg > dovecot-1.2
changeset 6335:a1c587d3d633 HEAD
Removed autocreate parameter from mail_index_keyword_lookup(). Added a new
mail_index_keyword_lookup_or_create().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Fri, 31 Aug 2007 22:58:25 +0300 |
parents | e6d16b1b5e81 |
children | f2815306ccda |
files | src/lib-index/mail-index-sync-keywords.c src/lib-index/mail-index-transaction.c src/lib-index/mail-index.c src/lib-index/mail-index.h src/lib-storage/index/dbox/dbox-keywords.c src/lib-storage/index/maildir/maildir-keywords.c src/lib-storage/index/mbox/mbox-sync-parse.c |
diffstat | 7 files changed, 29 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- 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 @@ } 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++) {
--- 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 @@ /* 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; }
--- 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 @@ } 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) { - char *keyword_dup; void *value; /* keywords_hash keeps a name => index mapping of keywords. @@ -196,17 +194,24 @@ 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 @@ 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 @@ 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;
--- 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 @@ 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(). */
--- 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 @@ 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 */
--- 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 @@ 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; }
--- 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 @@ 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 @@ 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();