dovecot-2.0-sslstream: mailbox_search_next*() API changed to ret...

dovecot at dovecot.org dovecot at dovecot.org
Sat Feb 13 02:56:29 EET 2010


details:   http://hg.dovecot.org/dovecot-2.0-sslstream/rev/0156d98bc822
changeset: 10348:0156d98bc822
user:      Timo Sirainen <tss at iki.fi>
date:      Tue Nov 17 18:34:29 2009 -0500
description:
mailbox_search_next*() API changed to return bool.
If search fails, it'll be noticed anyway by mailbox_search_deinit().

diffstat:

27 files changed, 85 insertions(+), 103 deletions(-)
src/dsync/dsync-worker-local.c              |    7 ----
src/imap/cmd-copy.c                         |    2 -
src/imap/cmd-store.c                        |    2 -
src/imap/imap-expunge.c                     |    2 -
src/imap/imap-fetch.c                       |    5 +--
src/imap/imap-search.c                      |    2 -
src/lib-storage/index/index-search-result.c |    4 +-
src/lib-storage/index/index-search.c        |   13 ++++----
src/lib-storage/index/index-storage.h       |    6 +---
src/lib-storage/index/index-thread.c        |    4 +-
src/lib-storage/mail-storage-private.h      |    4 +-
src/lib-storage/mail-storage.c              |   40 ++++++++++++---------------
src/lib-storage/mail-storage.h              |   10 +++---
src/lib-storage/test-mailbox.c              |    4 +-
src/plugins/convert/convert-storage.c       |    2 -
src/plugins/expire/expire-tool.c            |    6 ++--
src/plugins/fts-squat/fts-backend-squat.c   |    7 ++--
src/plugins/fts/fts-storage.c               |   11 ++++---
src/plugins/mbox-snarf/mbox-snarf-plugin.c  |    3 +-
src/plugins/quota/quota-count.c             |    2 -
src/plugins/quota/quota-storage.c           |    2 -
src/plugins/trash/trash-plugin.c            |    2 -
src/plugins/virtual/virtual-search.c        |   32 ++++++++-------------
src/plugins/virtual/virtual-storage.h       |    4 +-
src/plugins/virtual/virtual-sync.c          |    2 -
src/pop3/pop3-client.c                      |    2 -
src/pop3/pop3-commands.c                    |    8 ++---

diffs (truncated from 644 to 300 lines):

diff -r f8e03cda78d9 -r 0156d98bc822 src/dsync/dsync-worker-local.c
--- a/src/dsync/dsync-worker-local.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/dsync/dsync-worker-local.c	Tue Nov 17 18:34:29 2009 -0500
@@ -793,8 +793,7 @@ local_worker_msg_iter_next(struct dsync_
 		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_
 		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;
 
diff -r f8e03cda78d9 -r 0156d98bc822 src/imap/cmd-copy.c
--- a/src/imap/cmd-copy.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/imap/cmd-copy.c	Tue Nov 17 18:34:29 2009 -0500
@@ -52,7 +52,7 @@ static int fetch_and_copy(struct 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;
diff -r f8e03cda78d9 -r 0156d98bc822 src/imap/cmd-store.c
--- a/src/imap/cmd-store.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/imap/cmd-store.c	Tue Nov 17 18:34:29 2009 -0500
@@ -178,7 +178,7 @@ bool cmd_store(struct client_command_con
 	}
 
 	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 */
diff -r f8e03cda78d9 -r 0156d98bc822 src/imap/imap-expunge.c
--- a/src/imap/imap-expunge.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/imap/imap-expunge.c	Tue Nov 17 18:34:29 2009 -0500
@@ -31,7 +31,7 @@ int imap_expunge(struct mailbox *box, st
 	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;
 	}
diff -r f8e03cda78d9 -r 0156d98bc822 src/imap/imap-fetch.c
--- a/src/imap/imap-fetch.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/imap/imap-fetch.c	Tue Nov 17 18:34:29 2009 -0500
@@ -199,7 +199,7 @@ static int get_expunges_fallback(struct 
 	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 im
 			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;
 
diff -r f8e03cda78d9 -r 0156d98bc822 src/imap/imap-search.c
--- a/src/imap/imap-search.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/imap/imap-search.c	Tue Nov 17 18:34:29 2009 -0500
@@ -347,7 +347,7 @@ static bool cmd_search_more(struct clien
 		(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++;
 
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/index/index-search-result.c
--- a/src/lib-storage/index/index-search-result.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/index/index-search-result.c	Tue Nov 17 18:34:29 2009 -0500
@@ -75,7 +75,7 @@ search_result_update_search(struct mail_
 	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(s
 	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);
 
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/index/index-search.c
--- a/src/lib-storage/index/index-search.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/index/index-search.c	Tue Nov 17 18:34:29 2009 -0500
@@ -1257,8 +1257,8 @@ static bool search_would_block(struct in
 	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(s
 		/* 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(s
 		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)
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/index/index-storage.h
--- a/src/lib-storage/index/index-storage.h	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/index/index-storage.h	Tue Nov 17 18:34:29 2009 -0500
@@ -148,10 +148,8 @@ index_storage_search_init(struct mailbox
 			  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,
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/index/index-thread.c
--- a/src/lib-storage/index/index-thread.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/index/index-thread.c	Tue Nov 17 18:34:29 2009 -0500
@@ -340,7 +340,7 @@ static int mail_thread_index_map_build(s
 	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(s
 	   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);
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/mail-storage-private.h
--- a/src/lib-storage/mail-storage-private.h	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/mail-storage-private.h	Tue Nov 17 18:34:29 2009 -0500
@@ -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);
 
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/mail-storage.c
--- a/src/lib-storage/mail-storage.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/mail-storage.c	Tue Nov 17 18:34:29 2009 -0500
@@ -817,30 +817,28 @@ int mailbox_search_deinit(struct mail_se
 	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 ret;
-}
-
-int mailbox_search_next_nonblock(struct mail_search_context *ctx,
-				 struct mail *mail, bool *tryagain_r)
-{
-	int ret;
-
-	ret = ctx->transaction->box->v.
-		search_next_nonblock(ctx, mail, tryagain_r);
-	if (ret > 0)
+			return FALSE;
+	}
+	return TRUE;
+}
+
+bool mailbox_search_next_nonblock(struct mail_search_context *ctx,
+				  struct mail *mail, bool *tryagain_r)
+{
+	struct mailbox *box = ctx->transaction->box;
+
+	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 m
 	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);
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/mail-storage.h
--- a/src/lib-storage/mail-storage.h	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/mail-storage.h	Tue Nov 17 18:34:29 2009 -0500
@@ -491,12 +491,12 @@ mailbox_search_init(struct mailbox_trans
 		    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
diff -r f8e03cda78d9 -r 0156d98bc822 src/lib-storage/test-mailbox.c
--- a/src/lib-storage/test-mailbox.c	Tue Nov 17 18:18:28 2009 -0500
+++ b/src/lib-storage/test-mailbox.c	Tue Nov 17 18:34:29 2009 -0500
@@ -238,13 +238,13 @@ static int test_mailbox_search_deinit(st
 	return 0;
 }
 
-static int
+static bool


More information about the dovecot-cvs mailing list