dovecot-1.2: Added mailbox_search_result_build().

dovecot at dovecot.org dovecot at dovecot.org
Fri Jun 20 05:37:40 EEST 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/021c39f58af3
changeset: 7907:021c39f58af3
user:      Timo Sirainen <tss at iki.fi>
date:      Fri Jun 20 05:30:00 2008 +0300
description:
Added mailbox_search_result_build().

diffstat:

2 files changed, 26 insertions(+)
src/lib-storage/mail-storage.c |   21 +++++++++++++++++++++
src/lib-storage/mail-storage.h |    5 +++++

diffs (46 lines):

diff -r d987e018483b -r 021c39f58af3 src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c	Fri Jun 20 05:29:19 2008 +0300
+++ b/src/lib-storage/mail-storage.c	Fri Jun 20 05:30:00 2008 +0300
@@ -686,6 +686,27 @@ int mailbox_search_next_nonblock(struct 
 	return ret;
 }
 
+int mailbox_search_result_build(struct mailbox_transaction_context *t,
+				struct mail_search_args *args,
+				enum mailbox_search_result_flags flags,
+				struct mail_search_result **result_r)
+{
+	struct mail_search_context *ctx;
+	struct mail *mail;
+	int ret;
+
+	ctx = mailbox_search_init(t, args, NULL);
+	*result_r = mailbox_search_result_save(ctx, flags);
+	mail = mail_alloc(t, 0, NULL);
+	while (mailbox_search_next(ctx, mail) > 0) ;
+	mail_free(&mail);
+
+	ret = mailbox_search_deinit(&ctx);
+	if (ret < 0)
+		mailbox_search_result_free(result_r);
+	return ret;
+}
+
 struct mailbox_transaction_context *
 mailbox_transaction_begin(struct mailbox *box,
 			  enum mailbox_transaction_flags flags)
diff -r d987e018483b -r 021c39f58af3 src/lib-storage/mail-storage.h
--- a/src/lib-storage/mail-storage.h	Fri Jun 20 05:29:19 2008 +0300
+++ b/src/lib-storage/mail-storage.h	Fri Jun 20 05:30:00 2008 +0300
@@ -416,6 +416,11 @@ mailbox_search_result_save(struct mail_s
 			   enum mailbox_search_result_flags flags);
 /* Free memory used by search result. */
 void mailbox_search_result_free(struct mail_search_result **result);
+/* A simplified API for searching and saving the result. */
+int mailbox_search_result_build(struct mailbox_transaction_context *t,
+				struct mail_search_args *args,
+				enum mailbox_search_result_flags flags,
+				struct mail_search_result **result_r);
 /* Return all messages' UIDs in the search result. */
 const ARRAY_TYPE(seq_range) *
 mailbox_search_result_get(struct mail_search_result *result);


More information about the dovecot-cvs mailing list