]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
mailbox_search_next*() API changed to return bool.
authorTimo Sirainen <tss@iki.fi>
Tue, 17 Nov 2009 23:34:29 +0000 (18:34 -0500)
committerTimo Sirainen <tss@iki.fi>
Tue, 17 Nov 2009 23:34:29 +0000 (18:34 -0500)
If search fails, it'll be noticed anyway by mailbox_search_deinit().

--HG--
branch : HEAD

27 files changed:
src/dsync/dsync-worker-local.c
src/imap/cmd-copy.c
src/imap/cmd-store.c
src/imap/imap-expunge.c
src/imap/imap-fetch.c
src/imap/imap-search.c
src/lib-storage/index/index-search-result.c
src/lib-storage/index/index-search.c
src/lib-storage/index/index-storage.h
src/lib-storage/index/index-thread.c
src/lib-storage/mail-storage-private.h
src/lib-storage/mail-storage.c
src/lib-storage/mail-storage.h
src/lib-storage/test-mailbox.c
src/plugins/convert/convert-storage.c
src/plugins/expire/expire-tool.c
src/plugins/fts-squat/fts-backend-squat.c
src/plugins/fts/fts-storage.c
src/plugins/mbox-snarf/mbox-snarf-plugin.c
src/plugins/quota/quota-count.c
src/plugins/quota/quota-storage.c
src/plugins/trash/trash-plugin.c
src/plugins/virtual/virtual-search.c
src/plugins/virtual/virtual-storage.h
src/plugins/virtual/virtual-sync.c
src/pop3/pop3-client.c
src/pop3/pop3-commands.c

index 7487192858461ba64357aa460b53f29618045f7e..55effc19ebd2f8990d857f56500db32f89f43fe6 100644 (file)
@@ -793,8 +793,7 @@ local_worker_msg_iter_next(struct dsync_worker_msg_iter *_iter,
                return -1;
 
        prev_uid = iter->mail->uid;
-       switch (mailbox_search_next(iter->search_ctx, iter->mail)) {
-       case 0:
+       if (!mailbox_search_next(iter->search_ctx, iter->mail)) {
                if (iter_local_mailbox_next_expunge(iter, prev_uid, msg_r)) {
                        *mailbox_idx_r = iter->mailbox_idx;
                        return 1;
@@ -804,10 +803,6 @@ local_worker_msg_iter_next(struct dsync_worker_msg_iter *_iter,
                if (iter_local_mailbox_open(iter) < 0)
                        return -1;
                return local_worker_msg_iter_next(_iter, mailbox_idx_r, msg_r);
-       case -1:
-               return -1;
-       default:
-               break;
        }
        *mailbox_idx_r = iter->mailbox_idx;
 
index f37ed3c9da66cbc3053649316186fdb34e32fbc3..0756a397d2d4443ceb3f80c2e0f3253282c29252 100644 (file)
@@ -52,7 +52,7 @@ static int fetch_and_copy(struct client *client,
        mail = mail_alloc(src_trans, MAIL_FETCH_STREAM_HEADER |
                          MAIL_FETCH_STREAM_BODY, NULL);
        ret = 1;
-       while (mailbox_search_next(search_ctx, mail) > 0 && ret > 0) {
+       while (mailbox_search_next(search_ctx, mail) && ret > 0) {
                if (mail->expunged) {
                        ret = 0;
                        break;
index 20a5caa3b7fb96198ab03e488f3ff8f52acb2895..bfc97299b04ae087737c62a692d9b986ddd5358b 100644 (file)
@@ -178,7 +178,7 @@ bool cmd_store(struct client_command_context *cmd)
        }
 
        mail = mail_alloc(t, MAIL_FETCH_FLAGS, NULL);
-       while (mailbox_search_next(search_ctx, mail) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                if (ctx.max_modseq < (uint64_t)-1) {
                        /* check early so there's less work for transaction
                           commit if something has to be cancelled */
index e31be4adc8590e552b279b2d5d5b07794f4a0ab8..6812b08dbf6c58892010a64d76bda82d693f6479 100644 (file)
@@ -31,7 +31,7 @@ int imap_expunge(struct mailbox *box, struct mail_search_arg *next_search_arg)
        mail_search_args_unref(&search_args);
 
        mail = mail_alloc(t, 0, NULL);
-       while (mailbox_search_next(ctx, mail) > 0) {
+       while (mailbox_search_next(ctx, mail)) {
                mail_expunge(mail);
                expunges = TRUE;
        }
index cc4c8c9591f2823e50eaae3c77a32c46b5beec0d..19e8b7983919092a1383349347946c5665d26c1c 100644 (file)
@@ -199,7 +199,7 @@ static int get_expunges_fallback(struct imap_fetch_context *ctx,
        search_ctx = mailbox_search_init(trans, search_args, NULL);
        mail_search_args_unref(&search_args);
 
-       while (mailbox_search_next(search_ctx, mail) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                if (mail->uid == next_uid) {
                        if (next_uid < uid_filter[i].seq2)
                                next_uid++;
@@ -442,8 +442,7 @@ static int imap_fetch_more_int(struct imap_fetch_context *ctx)
                        if (ctx->cmd->cancel)
                                return 1;
 
-                       if (mailbox_search_next(ctx->search_ctx,
-                                               ctx->mail) <= 0)
+                       if (!mailbox_search_next(ctx->search_ctx, ctx->mail))
                                break;
                        ctx->cur_mail = ctx->mail;
 
index 63ab9ccde905a6caef7c1bffd63f2947e39ed8e5..5d95ab8e9a8ab727a002708c6bc4fe86db5fb64b 100644 (file)
@@ -347,7 +347,7 @@ static bool cmd_search_more(struct client_command_context *cmd)
                (opts & ~(SEARCH_RETURN_NORESULTS |
                          SEARCH_RETURN_MIN | SEARCH_RETURN_MAX)) == 0;
        while (mailbox_search_next_nonblock(ctx->search_ctx, ctx->mail,
-                                           &tryagain) > 0) {
+                                           &tryagain)) {
                id = cmd->uid ? ctx->mail->uid : ctx->mail->seq;
                ctx->result_count++;
 
index c5a12a3065b3215c70c7ff19006e328f05b6cd6e..32db0cfc2cca762f7f74d3d4a17aeeaccb89e557 100644 (file)
@@ -75,7 +75,7 @@ search_result_update_search(struct mail_search_result *result,
        search_ctx->update_result = result;
 
        mail = mail_alloc(t, 0, NULL);
-       while (mailbox_search_next(search_ctx, mail) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                i_assert(next_uid != 0);
 
                if (next_uid != mail->uid) {
@@ -168,7 +168,7 @@ int index_search_result_update_appends(struct mail_search_result *result,
        search_ctx = mailbox_search_init(t, result->search_args, NULL);
 
        mail = mail_alloc(t, 0, NULL);
-       while (mailbox_search_next(search_ctx, mail) > 0)
+       while (mailbox_search_next(search_ctx, mail))
                mailbox_search_result_add(result, mail->uid);
        mail_free(&mail);
 
index 5d849bfdbfe66ad0e7354ba10c03bd99c94a96ee..50a0fe639f4294d984f062c22383acbaae937235 100644 (file)
@@ -1257,8 +1257,8 @@ static bool search_would_block(struct index_search_context *ctx)
        return ret;
 }
 
-int index_storage_search_next_nonblock(struct mail_search_context *_ctx,
-                                      struct mail *mail, bool *tryagain_r)
+bool index_storage_search_next_nonblock(struct mail_search_context *_ctx,
+                                       struct mail *mail, bool *tryagain_r)
 {
         struct index_search_context *ctx = (struct index_search_context *)_ctx;
        struct mailbox *box = _ctx->transaction->box;
@@ -1272,15 +1272,15 @@ int index_storage_search_next_nonblock(struct mail_search_context *_ctx,
                /* everything searched at this point already. just returning
                   matches from sort list */
                if (!index_sort_list_next(ctx->mail_ctx.sort_program, mail))
-                       return 0;
-               return 1;
+                       return FALSE;
+               return TRUE;
        }
 
        if (search_would_block(ctx)) {
                /* this lookup is useful when a large number of
                   messages match */
                *tryagain_r = TRUE;
-               return 0;
+               return FALSE;
        }
 
        ctx->mail = mail;
@@ -1343,8 +1343,7 @@ int index_storage_search_next_nonblock(struct mail_search_context *_ctx,
                return index_storage_search_next_nonblock(_ctx, mail,
                                                          tryagain_r);
        }
-
-       return ctx->failed ? -1 : (match ? 1 : 0);
+       return !ctx->failed && match;
 }
 
 bool index_storage_search_next_update_seq(struct mail_search_context *_ctx)
index 253df2e4a10dd0f7a1f54bfa2ea3ca526cc605b0..8a6a72e0acdeb8044a304ecc2e8233f3c954e4ad 100644 (file)
@@ -148,10 +148,8 @@ index_storage_search_init(struct mailbox_transaction_context *t,
                          struct mail_search_args *args,
                          const enum mail_sort_type *sort_program);
 int index_storage_search_deinit(struct mail_search_context *ctx);
-int index_storage_search_next(struct mail_search_context *ctx,
-                             struct mail *mail);
-int index_storage_search_next_nonblock(struct mail_search_context *ctx,
-                                      struct mail *mail, bool *tryagain_r);
+bool index_storage_search_next_nonblock(struct mail_search_context *ctx,
+                                       struct mail *mail, bool *tryagain_r);
 bool index_storage_search_next_update_seq(struct mail_search_context *ctx);
 
 void index_transaction_set_max_modseq(struct mailbox_transaction_context *_t,
index 1549638fe5bcddb8d93d594aced209df52447b01..6b9cb45a4e40f561083369362adad0811063449d 100644 (file)
@@ -340,7 +340,7 @@ static int mail_thread_index_map_build(struct mail_thread_context *ctx)
        mail = mail_alloc(ctx->t, 0, headers_ctx);
        mailbox_header_lookup_unref(&headers_ctx);
 
-       while (mailbox_search_next(search_ctx, mail) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                if (mail_thread_map_add_mail(ctx, mail) < 0) {
                        ret = -1;
                        break;
@@ -533,7 +533,7 @@ static void mail_thread_cache_sync_add(struct mail_thread_mailbox *tbox,
           count - kind of kludgy) */
        i_assert(msgid_map[count].uid == 0);
        i = 0;
-       while (i < count && mailbox_search_next(search_ctx, mail) > 0) {
+       while (i < count && mailbox_search_next(search_ctx, mail)) {
                while (msgid_map[i].uid < mail->uid)
                        i++;
                i_assert(i < count);
index b17111af3c820561004264b2427287fb908496e0..202bf6058cec16db68be0667664e0929849e8e28 100644 (file)
@@ -189,8 +189,8 @@ struct mailbox_vfuncs {
                       struct mail_search_args *args,
                       const enum mail_sort_type *sort_program);
        int (*search_deinit)(struct mail_search_context *ctx);
-       int (*search_next_nonblock)(struct mail_search_context *ctx,
-                                   struct mail *mail, bool *tryagain_r);
+       bool (*search_next_nonblock)(struct mail_search_context *ctx,
+                                    struct mail *mail, bool *tryagain_r);
        /* Internal search function which updates ctx->seq */
        bool (*search_next_update_seq)(struct mail_search_context *ctx);
 
index b493dc7c1387ccf9f7fde6a74b811f3e5b3b09b0..b9dafb9deb96e0b81db53aabff728abb3fb6f95e 100644 (file)
@@ -817,30 +817,28 @@ int mailbox_search_deinit(struct mail_search_context **_ctx)
        return ret;
 }
 
-int mailbox_search_next(struct mail_search_context *ctx, struct mail *mail)
+bool mailbox_search_next(struct mail_search_context *ctx, struct mail *mail)
 {
        bool tryagain;
-       int ret;
 
-       while ((ret = mailbox_search_next_nonblock(ctx, mail,
-                                                  &tryagain)) == 0) {
+       while (!mailbox_search_next_nonblock(ctx, mail, &tryagain)) {
                if (!tryagain)
-                       break;
+                       return FALSE;
        }
-
-       return ret;
+       return TRUE;
 }
 
-int mailbox_search_next_nonblock(struct mail_search_context *ctx,
-                                struct mail *mail, bool *tryagain_r)
+bool mailbox_search_next_nonblock(struct mail_search_context *ctx,
+                                 struct mail *mail, bool *tryagain_r)
 {
-       int ret;
+       struct mailbox *box = ctx->transaction->box;
 
-       ret = ctx->transaction->box->v.
-               search_next_nonblock(ctx, mail, tryagain_r);
-       if (ret > 0)
+       if (!box->v.search_next_nonblock(ctx, mail, tryagain_r))
+               return FALSE;
+       else {
                mailbox_search_results_add(ctx, mail->uid);
-       return ret;
+               return TRUE;
+       }
 }
 
 bool mailbox_search_seen_lost_data(struct mail_search_context *ctx)
@@ -860,7 +858,7 @@ int mailbox_search_result_build(struct mailbox_transaction_context *t,
        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) ;
+       while (mailbox_search_next(ctx, mail)) ;
        mail_free(&mail);
 
        ret = mailbox_search_deinit(&ctx);
index 3903581920876a7816aac8f2e16a28c21a5cbd1b..98625853019df7930ed855dcbe3f8730f201e3bf 100644 (file)
@@ -491,12 +491,12 @@ mailbox_search_init(struct mailbox_transaction_context *t,
                    const enum mail_sort_type *sort_program);
 /* Deinitialize search request. */
 int mailbox_search_deinit(struct mail_search_context **ctx);
-/* Search the next message. Returns 1 if found, 0 if not, -1 if failure. */
-int mailbox_search_next(struct mail_search_context *ctx, struct mail *mail);
+/* Search the next message. Returns TRUE if found, FALSE if not. */
+bool mailbox_search_next(struct mail_search_context *ctx, struct mail *mail);
 /* Like mailbox_search_next(), but don't spend too much time searching.
-   Returns 1 if found, -1 if failure or 0 with tryagain_r=FALSE if
-   finished, and TRUE if more results will by calling the function again. */
-int mailbox_search_next_nonblock(struct mail_search_context *ctx,
+   Returns FALSE with tryagain_r=FALSE if finished, and tryagain_r=TRUE if
+   more results will be returned by calling the function again. */
+bool mailbox_search_next_nonblock(struct mail_search_context *ctx,
                                 struct mail *mail, bool *tryagain_r);
 /* Returns TRUE if some messages were already expunged and we couldn't
    determine correctly if those messages should have been returned in this
index e037d7241906cbc371cb8522d8d9e0f7e1359add..b367cb63d1b8068fae146ac53c6210acc5fb24a3 100644 (file)
@@ -238,13 +238,13 @@ static int test_mailbox_search_deinit(struct mail_search_context *ctx)
        return 0;
 }
 
-static int
+static bool
 test_mailbox_search_next_nonblock(struct mail_search_context *ctx ATTR_UNUSED,
                                  struct mail *mail ATTR_UNUSED,
                                  bool *tryagain_r)
 {
        *tryagain_r = FALSE;
-       return 0;
+       return FALSE;
 }
 
 static bool
index 497307354116f0f30392e84cf9862d26a211aacf..2f5849896f5b53dd4f4c9b209477f56e58c2ff16 100644 (file)
@@ -59,7 +59,7 @@ static int mailbox_copy_mails(struct mailbox *srcbox, struct mailbox *destbox,
                          MAIL_FETCH_FLAGS | MAIL_FETCH_RECEIVED_DATE |
                          MAIL_FETCH_STREAM_HEADER | MAIL_FETCH_STREAM_BODY |
                          MAIL_FETCH_FROM_ENVELOPE, NULL);
-       while (mailbox_search_next(ctx, mail) > 0) {
+       while (mailbox_search_next(ctx, mail)) {
                if ((mail->seq % 100) == 0) {
                        /* touch the lock file so that if there are tons of
                           mails another process won't override our lock. */
index 46c326d20734bd5063a454debddd5dd09099a68f..22c47b732116cbce0809236607f547d3f498d44f 100644 (file)
@@ -133,8 +133,8 @@ mailbox_delete_old_mails(struct expire_context *ctx, const char *user,
 
        mail = mail_alloc(t, 0, NULL);
 
-       now = time(NULL);
-       while ((ret = mailbox_search_next(search_ctx, mail)) > 0) {
+       now = time(NULL); ret = 0;
+       while (mailbox_search_next(search_ctx, mail)) {
                if (mail_get_save_date(mail, &save_time) < 0) {
                        /* maybe just got expunged. anyway try again later. */
                        if (ctx->testrun) {
@@ -190,7 +190,7 @@ mailbox_delete_old_mails(struct expire_context *ctx, const char *user,
                ret = -1;
 
        mailbox_close(&box);
-       return ret < 0 ? -1 : 0;
+       return ret;
 }
 
 static void expire_run(struct master_service *service, bool testrun)
index 48ebbdbb839abc91277afee7ee588abe465f9ea8..a18769366cb4bb47635a2971efc77764916ea01f 100644 (file)
@@ -150,7 +150,7 @@ static int get_all_msg_uids(struct mailbox *box, ARRAY_TYPE(seq_range) *uids)
        struct mail_search_context *search_ctx;
        struct mail_search_args *search_args;
        struct mail *mail;
-       int ret = 0;
+       int ret;
 
        t = mailbox_transaction_begin(box, 0);
        mail = mail_alloc(t, 0, NULL);
@@ -160,13 +160,12 @@ static int get_all_msg_uids(struct mailbox *box, ARRAY_TYPE(seq_range) *uids)
        search_ctx = mailbox_search_init(t, search_args, NULL);
        mail_search_args_unref(&search_args);
 
-       while ((ret = mailbox_search_next(search_ctx, mail)) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                /* *2 because even/odd is for body/header */
                seq_range_array_add_range(uids, mail->uid * 2,
                                          mail->uid * 2 + 1);
        }
-       if (mailbox_search_deinit(&search_ctx) < 0)
-               ret = -1;
+       ret = mailbox_search_deinit(&search_ctx);
        mail_free(&mail);
        (void)mailbox_transaction_commit(&t);
        return ret;
index 538831da9e5108cc3723be27a04351035c2f2252..4a6704e759ecd3de4b660b6b427a85a2f6665833 100644 (file)
@@ -529,7 +529,7 @@ static int fts_build_more(struct fts_storage_build_context *ctx)
            FTS_BUILD_NOTIFY_INTERVAL_SECS)
                fts_build_notify(ctx);
 
-       while (mailbox_search_next(ctx->search_ctx, ctx->mail) > 0) {
+       while (mailbox_search_next(ctx->search_ctx, ctx->mail)) {
                T_BEGIN {
                        ret = fts_build_mail(ctx, ctx->mail->uid);
                } T_END;
@@ -615,8 +615,9 @@ fts_mailbox_search_init(struct mailbox_transaction_context *t,
        return ctx;
 }
 
-static int fts_mailbox_search_next_nonblock(struct mail_search_context *ctx,
-                                           struct mail *mail, bool *tryagain_r)
+static bool
+fts_mailbox_search_next_nonblock(struct mail_search_context *ctx,
+                                struct mail *mail, bool *tryagain_r)
 {
        struct fts_mailbox *fbox = FTS_CONTEXT(ctx->transaction->box);
        struct fts_search_context *fctx = FTS_CONTEXT(ctx);
@@ -627,7 +628,7 @@ static int fts_mailbox_search_next_nonblock(struct mail_search_context *ctx,
                   to finish building the indexes */
                if (!fts_try_build_init(ctx, fctx)) {
                        *tryagain_r = TRUE;
-                       return 0;
+                       return FALSE;
                }
        }
 
@@ -636,7 +637,7 @@ static int fts_mailbox_search_next_nonblock(struct mail_search_context *ctx,
                ret = fts_build_more(fctx->build_ctx);
                if (ret == 0) {
                        *tryagain_r = TRUE;
-                       return 0;
+                       return FALSE;
                }
 
                /* finished / error */
index 6d85a02e4953afdf7bdef3319e8c46a9b3b6fa6e..aac7bfa389e3e1833261e2fd56409535f7eec3be 100644 (file)
@@ -56,9 +56,10 @@ static int mbox_snarf(struct mailbox *srcbox, struct mailbox *destbox)
        search_ctx = mailbox_search_init(src_trans, search_args, NULL);
        mail_search_args_unref(&search_args);
 
+       ret = 0;
        mail = mail_alloc(src_trans, MAIL_FETCH_STREAM_HEADER |
                          MAIL_FETCH_STREAM_BODY, NULL);
-       while ((ret = mailbox_search_next(search_ctx, mail)) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                if (mail->expunged)
                        continue;
 
index 4f425621a799929f574b32c625b4b9a1a9055c5e..cf01fdb16f5357ca354b80a5b34bf212a0483930 100644 (file)
@@ -51,7 +51,7 @@ quota_count_mailbox(struct quota_root *root, struct mail_namespace *ns,
        ctx = mailbox_search_init(trans, search_args, NULL);
        mail_search_args_unref(&search_args);
 
-       while (mailbox_search_next(ctx, mail) > 0) {
+       while (mailbox_search_next(ctx, mail)) {
                if (mail_get_physical_size(mail, &size) == 0)
                        *bytes_r += size;
                *count_r += 1;
index 547a41bab737512dfb57b695399dee709cd23c61..a8225aa1a5e5c375e9163a0af320eb7c1e1d96d2 100644 (file)
@@ -398,7 +398,7 @@ quota_mailbox_delete_shrink_quota(struct mailbox *box)
        mail_search_args_unref(&search_args);
 
        mail = mail_alloc(t, 0, NULL);
-       while (mailbox_search_next(ctx, mail) > 0)
+       while (mailbox_search_next(ctx, mail))
                quota_free(qt, mail);
        mail_free(&mail);
 
index 5dd0f1fbfc899c0091a3b4454e03abb75ad0c413..a6a91f06c70b5df9af2996ebe68ccbcff31260ba 100644 (file)
@@ -87,7 +87,7 @@ static int trash_clean_mailbox_get_next(struct trash_mailbox *trash,
                        ret = trash_clean_mailbox_open(trash);
                else
                        ret = mailbox_search_next(trash->search_ctx,
-                                                 trash->mail);
+                                                 trash->mail) ? 1 : 0;
                if (ret <= 0) {
                        *received_time_r = 0;
                        return ret;
index 4923ca2b29b42dd2d604cfb5a3ffcb810872323b..7d00579b708d28421757b1d42c228c3447ceed93 100644 (file)
@@ -9,7 +9,6 @@
 #include <stdlib.h>
 
 enum virtual_search_state {
-       VIRTUAL_SEARCH_STATE_FAILED = -1,
        VIRTUAL_SEARCH_STATE_BUILD,
        VIRTUAL_SEARCH_STATE_RETURN,
        VIRTUAL_SEARCH_STATE_SORT,
@@ -63,8 +62,8 @@ static int mail_search_get_result(struct mail_search_context *ctx)
        return ret;
 }
 
-static int virtual_search_get_records(struct mail_search_context *ctx,
-                                     struct virtual_search_context *vctx)
+static void virtual_search_get_records(struct mail_search_context *ctx,
+                                      struct virtual_search_context *vctx)
 {
        struct virtual_mailbox *mbox =
                (struct virtual_mailbox *)ctx->transaction->box;
@@ -72,10 +71,10 @@ static int virtual_search_get_records(struct mail_search_context *ctx,
        struct virtual_search_record srec;
        const void *data;
        bool expunged;
-       int ret, result;
+       int result;
 
        memset(&srec, 0, sizeof(srec));
-       while ((ret = index_storage_search_next_update_seq(ctx)) > 0) {
+       while (index_storage_search_next_update_seq(ctx)) {
                result = mail_search_get_result(ctx);
                i_assert(result != 0);
                if (result > 0) {
@@ -98,7 +97,6 @@ static int virtual_search_get_records(struct mail_search_context *ctx,
        array_sort(&vctx->records, virtual_search_record_cmp);
 
        ctx->progress_max = array_count(&vctx->records);
-       return ret;
 }
 
 struct mail_search_context *
@@ -117,9 +115,7 @@ virtual_search_init(struct mailbox_transaction_context *t,
        i_array_init(&vctx->records, 64);
        MODULE_CONTEXT_SET(ctx, virtual_storage_module, vctx);
 
-       if (virtual_search_get_records(ctx, vctx) < 0)
-               vctx->search_state = VIRTUAL_SEARCH_STATE_FAILED;
-
+       virtual_search_get_records(ctx, vctx);
        seq_range_array_iter_init(&vctx->result_iter, &vctx->result);
        return ctx;
 }
@@ -134,16 +130,13 @@ int virtual_search_deinit(struct mail_search_context *ctx)
        return index_storage_search_deinit(ctx);
 }
 
-int virtual_search_next_nonblock(struct mail_search_context *ctx,
-                                struct mail *mail, bool *tryagain_r)
+bool virtual_search_next_nonblock(struct mail_search_context *ctx,
+                                 struct mail *mail, bool *tryagain_r)
 {
        struct virtual_search_context *vctx = VIRTUAL_CONTEXT(ctx);
        uint32_t seq;
-       int ret;
 
        switch (vctx->search_state) {
-       case VIRTUAL_SEARCH_STATE_FAILED:
-               return -1;
        case VIRTUAL_SEARCH_STATE_BUILD:
                if (ctx->sort_program == NULL)
                        vctx->search_state = VIRTUAL_SEARCH_STATE_SORT;
@@ -155,11 +148,10 @@ int virtual_search_next_nonblock(struct mail_search_context *ctx,
        case VIRTUAL_SEARCH_STATE_SORT:
                /* the messages won't be returned sorted, so we'll have to
                   do it ourself */
-               while ((ret = index_storage_search_next_nonblock(ctx, mail,
-                                                       tryagain_r)) > 0)
+               while (index_storage_search_next_nonblock(ctx, mail, tryagain_r))
                        seq_range_array_add(&vctx->result, 0, mail->seq);
-               if (ret < 0 || *tryagain_r)
-                       return ret;
+               if (*tryagain_r)
+                       return FALSE;
 
                vctx->next_result_n = 0;
                vctx->search_state = VIRTUAL_SEARCH_STATE_SORT_DONE;
@@ -168,10 +160,10 @@ int virtual_search_next_nonblock(struct mail_search_context *ctx,
                *tryagain_r = FALSE;
                if (!seq_range_array_iter_nth(&vctx->result_iter,
                                              vctx->next_result_n, &seq))
-                       return 0;
+                       return FALSE;
                vctx->next_result_n++;
                mail_set_seq(mail, seq);
-               return 1;
+               return TRUE;
        }
        i_unreached();
 }
index 7d24884e9530d48f200e088b8dca4c5c98cf8d98..4f8e3348fca1e3c20633db327e920f30b859b954 100644 (file)
@@ -145,8 +145,8 @@ virtual_search_init(struct mailbox_transaction_context *t,
                    struct mail_search_args *args,
                    const enum mail_sort_type *sort_program);
 int virtual_search_deinit(struct mail_search_context *ctx);
-int virtual_search_next_nonblock(struct mail_search_context *ctx,
-                                struct mail *mail, bool *tryagain_r);
+bool virtual_search_next_nonblock(struct mail_search_context *ctx,
+                                 struct mail *mail, bool *tryagain_r);
 bool virtual_search_next_update_seq(struct mail_search_context *ctx);
 
 struct mail *
index 8a5749533825468d7c4104d6a163049defd5d6b2..19e1b71cf4dcb0d298fa80de7d520a36f63b59e4 100644 (file)
@@ -484,7 +484,7 @@ static int virtual_sync_backend_box_init(struct virtual_backend_box *bbox)
        /* add the found UIDs to uidmap. virtual_uid gets assigned later. */
        memset(&uidmap, 0, sizeof(uidmap));
        array_clear(&bbox->uids);
-       while (mailbox_search_next(search_ctx, mail) > 0) {
+       while (mailbox_search_next(search_ctx, mail)) {
                uidmap.real_uid = mail->uid;
                array_append(&bbox->uids, &uidmap, 1);
        }
index 9158d71bb30d97dc3e5a001d7bf2d41f2d95a668..b590bc5e484b77db62bb8c4a5d1f03f62dd227eb 100644 (file)
@@ -100,7 +100,7 @@ static bool init_mailbox(struct client *client, const char **error_r)
 
                failed = FALSE;
                mail = mail_alloc(t, MAIL_FETCH_VIRTUAL_SIZE, NULL);
-               while (mailbox_search_next(ctx, mail) > 0) {
+               while (mailbox_search_next(ctx, mail)) {
                        if (mail_get_virtual_size(mail, &size) < 0) {
                                expunged = mail->expunged;
                                failed = TRUE;
index 9681ccef27b99f605a380f188ec11fedaf2c625c..b6bbf6d1f06d1deb67fbff42e35de7b09ff93864 100644 (file)
@@ -213,7 +213,7 @@ bool client_update_mails(struct client *client)
        mail_search_args_unref(&search_args);
 
        mail = mail_alloc(client->trans, 0, NULL);
-       while (mailbox_search_next(ctx, mail) > 0) {
+       while (mailbox_search_next(ctx, mail)) {
                idx = mail->seq - 1;
                bit = 1 << (idx % CHAR_BIT);
                if (client->deleted_bitmask != NULL &&
@@ -402,7 +402,7 @@ static int fetch(struct client *client, unsigned int msgnum, uoff_t body_lines)
        ctx->mail = mail_alloc(client->trans, MAIL_FETCH_STREAM_HEADER |
                               MAIL_FETCH_STREAM_BODY, NULL);
 
-       if (mailbox_search_next(ctx->search_ctx, ctx->mail) <= 0 ||
+       if (!mailbox_search_next(ctx->search_ctx, ctx->mail) ||
            mail_get_stream(ctx->mail, NULL, NULL, &ctx->stream) < 0) {
                ret = client_reply_msg_expunged(client, msgnum);
                fetch_deinit(ctx);
@@ -476,7 +476,7 @@ static int cmd_rset(struct client *client, const char *args ATTR_UNUSED)
                mail_search_args_unref(&search_args);
 
                mail = mail_alloc(client->trans, 0, NULL);
-               while (mailbox_search_next(search_ctx, mail) > 0)
+               while (mailbox_search_next(search_ctx, mail))
                        mail_update_flags(mail, MODIFY_REMOVE, MAIL_SEEN);
                mail_free(&mail);
                (void)mailbox_search_deinit(&search_ctx);
@@ -585,7 +585,7 @@ static bool list_uids_iter(struct client *client, struct cmd_uidl_context *ctx)
        tab[0].value = t_strdup_printf("%u", client->uid_validity);
 
        str = t_str_new(128);
-       while (mailbox_search_next(ctx->search_ctx, ctx->mail) > 0) {
+       while (mailbox_search_next(ctx->search_ctx, ctx->mail)) {
                if (client->deleted) {
                        uint32_t idx = ctx->mail->seq - 1;
                        if (client->deleted_bitmask[idx / CHAR_BIT] &