]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added mailbox_search_result_alloc() for building search results manually.
authorTimo Sirainen <tss@iki.fi>
Wed, 18 Jun 2008 03:34:34 +0000 (06:34 +0300)
committerTimo Sirainen <tss@iki.fi>
Wed, 18 Jun 2008 03:34:34 +0000 (06:34 +0300)
--HG--
branch : HEAD

src/lib-storage/mailbox-search-result-private.h
src/lib-storage/mailbox-search-result.c

index 03ef5ebbe8cabe733d32ec8f97303d1a03919878..c65b5a8f42e6aebf7ca3b11ec8debe23e5f2f566 100644 (file)
@@ -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);
 
index 3cd96f556d3e2435817b28043511188e8f333cb2..9ee534242f97a88d3bf1449997eda3cc36b73c5e 100644 (file)
@@ -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)
 {