From 71f67d52101b34d0126a4f4484bae7202df77887 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Tue, 22 Apr 2003 21:11:35 +0300 Subject: [PATCH] SEARCH OR fixes. --HG-- branch : HEAD --- src/lib-storage/index/index-search.c | 12 +++++++----- src/lib-storage/mail-search.c | 6 +++--- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/lib-storage/index/index-search.c b/src/lib-storage/index/index-search.c index 894cf5069f..a84c0e3e0d 100644 --- a/src/lib-storage/index/index-search.c +++ b/src/lib-storage/index/index-search.c @@ -737,15 +737,17 @@ static int seq_update(const char *set, unsigned int *first_seq, static int search_get_sequid(struct index_mailbox *ibox, const struct mail_search_arg *args, unsigned int *first_seq, unsigned int *last_seq, - unsigned int *first_uid, unsigned int *last_uid) + unsigned int *first_uid, unsigned int *last_uid, + int default_all) { for (; args != NULL; args = args->next) { if (args->type == SEARCH_OR || args->type == SEARCH_SUB) { if (!search_get_sequid(ibox, args->value.subargs, first_seq, last_seq, - first_uid, last_uid)) + first_uid, last_uid, + args->type == SEARCH_OR)) return FALSE; - } if (args->type == SEARCH_SET) { + } else if (args->type == SEARCH_SET) { if (!seq_update(args->value.str, first_seq, last_seq, ibox->synced_messages_count)) { mail_storage_set_error(ibox->box.storage, @@ -761,7 +763,7 @@ static int search_get_sequid(struct index_mailbox *ibox, args->value.str); return FALSE; } - } else if (args->type == SEARCH_ALL) { + } else if (args->type == SEARCH_ALL || default_all) { /* go through everything */ *first_seq = 1; *last_seq = ibox->synced_messages_count; @@ -859,7 +861,7 @@ static int search_get_uid_range(struct index_mailbox *ibox, first_seq = last_seq = 0; if (!search_get_sequid(ibox, args, &first_seq, &last_seq, - first_uid, last_uid)) + first_uid, last_uid, FALSE)) return -1; /* seq_update() should make sure that these can't happen */ diff --git a/src/lib-storage/mail-search.c b/src/lib-storage/mail-search.c index 2fa82031ea..ce10a32196 100644 --- a/src/lib-storage/mail-search.c +++ b/src/lib-storage/mail-search.c @@ -48,7 +48,7 @@ static void search_arg_foreach(struct mail_search_arg *arg, i_assert(arg->value.subargs != NULL); subarg = arg->value.subargs; - arg->result = -1; + arg->result = 0; while (subarg != NULL) { if (subarg->result == -1) search_arg_foreach(subarg, callback, context); @@ -59,8 +59,8 @@ static void search_arg_foreach(struct mail_search_arg *arg, arg->result = 1; break; } - - arg->result = 0; + } else { + arg->result = -1; } subarg = subarg->next; -- 2.47.3