dovecot-2.2: lib-storage: Cleanup - separate search arg values t...
dovecot at dovecot.org
dovecot at dovecot.org
Mon May 18 10:24:10 UTC 2015
details: http://hg.dovecot.org/dovecot-2.2/rev/e6513dd519d5
changeset: 18722:e6513dd519d5
user: Timo Sirainen <tss at iki.fi>
date: Mon May 18 06:21:50 2015 -0400
description:
lib-storage: Cleanup - separate search arg values that are set by mail_search_init()
diffstat:
src/lib-storage/index/index-search.c | 14 +++++++-------
src/lib-storage/mail-search-args-imap.c | 2 +-
src/lib-storage/mail-search.c | 28 ++++++++++++++--------------
src/lib-storage/mail-search.h | 11 +++++++----
4 files changed, 29 insertions(+), 26 deletions(-)
diffs (165 lines):
diff -r 9809f68aaa36 -r e6513dd519d5 src/lib-storage/index/index-search.c
--- a/src/lib-storage/index/index-search.c Sun May 17 00:51:50 2015 +0300
+++ b/src/lib-storage/index/index-search.c Mon May 18 06:21:50 2015 -0400
@@ -127,7 +127,7 @@
struct mail_search_arg *arg)
{
ARRAY_TYPE(keyword_indexes) keyword_indexes_arr;
- const struct mail_keywords *search_kws = arg->value.keywords;
+ const struct mail_keywords *search_kws = arg->initialized.keywords;
const unsigned int *keyword_indexes;
unsigned int i, j, count;
@@ -202,9 +202,9 @@
if (arg->value.flags != 0) {
modseq = mail_index_modseq_lookup_flags(ctx->view,
arg->value.flags, ctx->mail_ctx.seq);
- } else if (arg->value.keywords != NULL) {
+ } else if (arg->initialized.keywords != NULL) {
modseq = mail_index_modseq_lookup_keywords(ctx->view,
- arg->value.keywords, ctx->mail_ctx.seq);
+ arg->initialized.keywords, ctx->mail_ctx.seq);
} else {
modseq = mail_index_modseq_lookup(ctx->view,
ctx->mail_ctx.seq);
@@ -260,12 +260,12 @@
return strcasecmp(arg->value.str, "INBOX") == 0;
return strcmp(str, arg->value.str) == 0;
case SEARCH_MAILBOX_GLOB:
- if (imap_match(arg->value.mailbox_glob, box->vname) == IMAP_MATCH_YES)
+ if (imap_match(arg->initialized.mailbox_glob, box->vname) == IMAP_MATCH_YES)
return 1;
if (mail_get_special(ctx->cur_mail, MAIL_FETCH_MAILBOX_NAME,
&str) < 0)
return -1;
- return imap_match(arg->value.mailbox_glob, str) == IMAP_MATCH_YES;
+ return imap_match(arg->initialized.mailbox_glob, str) == IMAP_MATCH_YES;
default:
return -1;
}
@@ -1073,11 +1073,11 @@
int ret = 0;
/* mail_search_args_init() must have been called by now */
- i_assert(arg->value.search_args != NULL);
+ i_assert(arg->initialized.search_args != NULL);
p_array_init(&arg->value.seqset, ctx->mail_ctx.args->pool, 64);
if (mailbox_search_result_build(ctx->mail_ctx.transaction,
- arg->value.search_args,
+ arg->initialized.search_args,
MAILBOX_SEARCH_RESULT_FLAG_UPDATE |
MAILBOX_SEARCH_RESULT_FLAG_QUEUE_SYNC,
&arg->value.search_result) < 0)
diff -r 9809f68aaa36 -r e6513dd519d5 src/lib-storage/mail-search-args-imap.c
--- a/src/lib-storage/mail-search-args-imap.c Sun May 17 00:51:50 2015 +0300
+++ b/src/lib-storage/mail-search-args-imap.c Mon May 18 06:21:50 2015 -0400
@@ -98,7 +98,7 @@
str_append_c(dest, ')');
break;
case SEARCH_KEYWORDS: {
- const struct mail_keywords *kw = arg->value.keywords;
+ const struct mail_keywords *kw = arg->initialized.keywords;
const ARRAY_TYPE(keywords) *names_arr;
const char *const *namep;
unsigned int i;
diff -r 9809f68aaa36 -r e6513dd519d5 src/lib-storage/mail-search.c
--- a/src/lib-storage/mail-search.c Sun May 17 00:51:50 2015 +0300
+++ b/src/lib-storage/mail-search.c Mon May 18 06:21:50 2015 -0400
@@ -85,8 +85,8 @@
keywords[0] = arg->value.str;
keywords[1] = NULL;
- i_assert(arg->value.keywords == NULL);
- arg->value.keywords =
+ i_assert(arg->initialized.keywords == NULL);
+ arg->initialized.keywords =
mailbox_keywords_create_valid(args->box,
keywords);
break;
@@ -95,15 +95,15 @@
struct mail_namespace *ns =
mailbox_get_namespace(args->box);
- arg->value.mailbox_glob =
+ arg->initialized.mailbox_glob =
imap_match_init(default_pool, arg->value.str,
TRUE, mail_namespace_get_sep(ns));
break;
}
case SEARCH_INTHREAD:
- thread_args = arg->value.search_args;
+ thread_args = arg->initialized.search_args;
if (thread_args == NULL) {
- arg->value.search_args = thread_args =
+ arg->initialized.search_args = thread_args =
p_new(args->pool,
struct mail_search_args, 1);
thread_args->pool = args->pool;
@@ -153,25 +153,25 @@
switch (arg->type) {
case SEARCH_MODSEQ:
case SEARCH_KEYWORDS:
- if (arg->value.keywords == NULL)
+ if (arg->initialized.keywords == NULL)
break;
- mailbox_keywords_unref(&arg->value.keywords);
+ mailbox_keywords_unref(&arg->initialized.keywords);
break;
case SEARCH_MAILBOX_GLOB:
- if (arg->value.mailbox_glob == NULL)
+ if (arg->initialized.mailbox_glob == NULL)
break;
- imap_match_deinit(&arg->value.mailbox_glob);
+ imap_match_deinit(&arg->initialized.mailbox_glob);
break;
case SEARCH_INTHREAD:
- i_assert(arg->value.search_args->refcount > 0);
+ i_assert(arg->initialized.search_args->refcount > 0);
if (args->refcount == 0 &&
arg->value.search_result != NULL) {
mailbox_search_result_free(
&arg->value.search_result);
}
- arg->value.search_args->refcount--;
- arg->value.search_args->box = NULL;
+ arg->initialized.search_args->refcount--;
+ arg->initialized.search_args->box = NULL;
/* fall through */
case SEARCH_SUB:
case SEARCH_OR:
@@ -650,8 +650,8 @@
m1->type == m2->type;
}
case SEARCH_INTHREAD:
- return mail_search_args_equal(arg1->value.search_args,
- arg2->value.search_args);
+ return mail_search_args_equal(arg1->initialized.search_args,
+ arg2->initialized.search_args);
}
i_unreached();
return FALSE;
diff -r 9809f68aaa36 -r e6513dd519d5 src/lib-storage/mail-search.h
--- a/src/lib-storage/mail-search.h Sun May 17 00:51:50 2015 +0300
+++ b/src/lib-storage/mail-search.h Mon May 18 06:21:50 2015 -0400
@@ -83,12 +83,15 @@
enum mail_search_arg_flag search_flags;
enum mail_search_date_type date_type;
enum mail_thread_type thread_type;
+ struct mail_search_modseq *modseq;
+ struct mail_search_result *search_result;
+ } value;
+ /* set by mail_search_args_init(): */
+ struct {
+ struct mail_search_args *search_args;
struct mail_keywords *keywords;
- struct mail_search_modseq *modseq;
- struct mail_search_args *search_args;
- struct mail_search_result *search_result;
struct imap_match_glob *mailbox_glob;
- } value;
+ } initialized;
void *context;
const char *hdr_field_name; /* for SEARCH_HEADER* */
More information about the dovecot-cvs
mailing list