]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
Added mailbox_search_result_build().
authorTimo Sirainen <tss@iki.fi>
Fri, 20 Jun 2008 02:30:00 +0000 (05:30 +0300)
committerTimo Sirainen <tss@iki.fi>
Fri, 20 Jun 2008 02:30:00 +0000 (05:30 +0300)
--HG--
branch : HEAD

src/lib-storage/mail-storage.c
src/lib-storage/mail-storage.h

index b48cf769c904e8d03a131dd1b37eb091fd1c7f0e..d5bee42b5246557f4190c5d772bd340689efc21a 100644 (file)
@@ -686,6 +686,27 @@ int mailbox_search_next_nonblock(struct mail_search_context *ctx,
        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)
index 2745b36beab9f4127c8c6a0de5a4785ca0bff63f..829819be93ec83134e08dec8978389b5892f0a73 100644 (file)
@@ -416,6 +416,11 @@ mailbox_search_result_save(struct mail_search_context *ctx,
                           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);