dovecot-2.0: doveadm fetch/search/etc: Handle "NOT" correctly in...
dovecot at dovecot.org
dovecot at dovecot.org
Fri Apr 30 16:15:31 EEST 2010
details: http://hg.dovecot.org/dovecot-2.0/rev/b9efc1ca4c37
changeset: 11239:b9efc1ca4c37
user: Timo Sirainen <tss at iki.fi>
date: Fri Apr 30 16:15:27 2010 +0300
description:
doveadm fetch/search/etc: Handle "NOT" correctly in search query.
diffstat:
src/doveadm/doveadm-mail-fetch.c | 6 ++++--
src/doveadm/doveadm-mail-list-iter.c | 12 +++++++++---
2 files changed, 13 insertions(+), 5 deletions(-)
diffs (59 lines):
diff -r dedf835014a2 -r b9efc1ca4c37 src/doveadm/doveadm-mail-fetch.c
--- a/src/doveadm/doveadm-mail-fetch.c Fri Apr 30 16:14:42 2010 +0300
+++ b/src/doveadm/doveadm-mail-fetch.c Fri Apr 30 16:15:27 2010 +0300
@@ -338,12 +338,14 @@
switch (arg->type) {
case SEARCH_MAILBOX:
case SEARCH_MAILBOX_GUID:
- have_mailbox = TRUE;
+ if (!arg->not)
+ have_mailbox = TRUE;
break;
case SEARCH_SEQSET:
case SEARCH_UIDSET:
seqset = array_get(&arg->value.seqset, &count);
- if (count == 1 && seqset->seq1 == seqset->seq2)
+ if (count == 1 && seqset->seq1 == seqset->seq2 &&
+ !arg->not)
have_msg = TRUE;
break;
default:
diff -r dedf835014a2 -r b9efc1ca4c37 src/doveadm/doveadm-mail-list-iter.c
--- a/src/doveadm/doveadm-mail-list-iter.c Fri Apr 30 16:14:42 2010 +0300
+++ b/src/doveadm/doveadm-mail-list-iter.c Fri Apr 30 16:15:27 2010 +0300
@@ -15,7 +15,7 @@
struct mailbox_list_iterate_context *iter;
};
-static void
+static int
search_args_get_mailbox_patterns(const struct mail_search_arg *args,
ARRAY_TYPE(const_string) *patterns)
{
@@ -28,18 +28,24 @@
case SEARCH_INTHREAD:
subargs = args->value.subargs;
for (; subargs != NULL; subargs = subargs->next) {
- search_args_get_mailbox_patterns(subargs,
- patterns);
+ if (!search_args_get_mailbox_patterns(subargs,
+ patterns))
+ return 0;
}
break;
case SEARCH_MAILBOX:
case SEARCH_MAILBOX_GLOB:
+ if (args->not) {
+ array_clear(patterns);
+ return 0;
+ }
array_append(patterns, &args->value.str, 1);
break;
default:
break;
}
}
+ return 1;
}
struct doveadm_mail_list_iter *
More information about the dovecot-cvs
mailing list