changeset 7893:9e4be86d4b7d HEAD

Added mailbox_search_result_alloc() for building search results manually.
author Timo Sirainen <tss@iki.fi>
date Wed, 18 Jun 2008 06:34:34 +0300
parents 053d1aa325f6
children 15f01af8449a
files src/lib-storage/mailbox-search-result-private.h src/lib-storage/mailbox-search-result.c
diffstat 2 files changed, 21 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/mailbox-search-result-private.h	Wed Jun 18 06:33:08 2008 +0300
+++ b/src/lib-storage/mailbox-search-result-private.h	Wed Jun 18 06:34:34 2008 +0300
@@ -19,6 +19,10 @@
 	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);
 
--- a/src/lib-storage/mailbox-search-result.c	Wed Jun 18 06:33:08 2008 +0300
+++ b/src/lib-storage/mailbox-search-result.c	Wed Jun 18 06:34:34 2008 +0300
@@ -33,24 +33,23 @@
 }
 
 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 @@
 	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)
 {