From c63e7bd686e2745857fb5f70fc2126d5de08dcf1 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Fri, 20 Jun 2008 05:30:00 +0300 Subject: [PATCH] Added mailbox_search_result_build(). --HG-- branch : HEAD --- src/lib-storage/mail-storage.c | 21 +++++++++++++++++++++ src/lib-storage/mail-storage.h | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/src/lib-storage/mail-storage.c b/src/lib-storage/mail-storage.c index b48cf769c9..d5bee42b52 100644 --- a/src/lib-storage/mail-storage.c +++ b/src/lib-storage/mail-storage.c @@ -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) diff --git a/src/lib-storage/mail-storage.h b/src/lib-storage/mail-storage.h index 2745b36bea..829819be93 100644 --- a/src/lib-storage/mail-storage.h +++ b/src/lib-storage/mail-storage.h @@ -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); -- 2.47.3