From: Timo Sirainen Date: Wed, 18 Jun 2008 03:34:34 +0000 (+0300) Subject: Added mailbox_search_result_alloc() for building search results manually. X-Git-Tag: 1.2.alpha1~268 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=53a00f21e1af586498f94220038aa21fb3861b37;p=thirdparty%2Fdovecot%2Fcore.git Added mailbox_search_result_alloc() for building search results manually. --HG-- branch : HEAD --- diff --git a/src/lib-storage/mailbox-search-result-private.h b/src/lib-storage/mailbox-search-result-private.h index 03ef5ebbe8..c65b5a8f42 100644 --- a/src/lib-storage/mailbox-search-result-private.h +++ b/src/lib-storage/mailbox-search-result-private.h @@ -19,6 +19,10 @@ struct mail_search_result { unsigned int args_have_modseq:1; }; +struct mail_search_result * +mailbox_search_result_alloc(struct mailbox *box, struct mail_search_args *args, + enum mailbox_search_result_flags flags); + /* called when initial search is done. */ void mailbox_search_results_initial_done(struct mail_search_context *ctx); diff --git a/src/lib-storage/mailbox-search-result.c b/src/lib-storage/mailbox-search-result.c index 3cd96f556d..9ee534242f 100644 --- a/src/lib-storage/mailbox-search-result.c +++ b/src/lib-storage/mailbox-search-result.c @@ -33,24 +33,23 @@ mailbox_search_result_analyze_args(struct mail_search_result *result, } struct mail_search_result * -mailbox_search_result_save(struct mail_search_context *ctx, - enum mailbox_search_result_flags flags) +mailbox_search_result_alloc(struct mailbox *box, struct mail_search_args *args, + enum mailbox_search_result_flags flags) { struct mail_search_result *result; result = i_new(struct mail_search_result, 1); - result->box = ctx->transaction->box; + result->box = box; result->flags = flags; i_array_init(&result->uids, 32); i_array_init(&result->never_uids, 128); if ((result->flags & MAILBOX_SEARCH_RESULT_FLAG_UPDATE) != 0) { - result->search_args = ctx->args; + result->search_args = args; mail_search_args_ref(result->search_args); - mailbox_search_result_analyze_args(result, ctx->args->args); + mailbox_search_result_analyze_args(result, args->args); } - array_append(&ctx->results, &result, 1); array_append(&result->box->search_results, &result, 1); return result; } @@ -84,6 +83,18 @@ void mailbox_search_result_free(struct mail_search_result **_result) i_free(result); } +struct mail_search_result * +mailbox_search_result_save(struct mail_search_context *ctx, + enum mailbox_search_result_flags flags) +{ + struct mail_search_result *result; + + result = mailbox_search_result_alloc(ctx->transaction->box, + ctx->args, flags); + array_append(&ctx->results, &result, 1); + return result; +} + static void mailbox_search_result_initial_done(struct mail_search_result *result) {