changeset 8869:8cedfefc98e0 HEAD

Fix to IMAP LIST pattern matching.
author Timo Sirainen <tss@iki.fi>
date Wed, 25 Mar 2009 20:27:02 -0400
parents 39f1644ed150
children c5b2260f767d
files src/lib-imap/imap-match.c src/tests/test-imap.c
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-imap/imap-match.c	Wed Mar 25 19:43:39 2009 -0400
+++ b/src/lib-imap/imap-match.c	Wed Mar 25 20:27:02 2009 -0400
@@ -207,7 +207,13 @@
 	data += i;
 	pattern += i;
 
-        match = IMAP_MATCH_NO;
+	if (*data == '\0' && *data_p != data && data[-1] == ctx->sep &&
+	    *pattern != '\0') {
+		/* data="/" pattern="/%..." */
+		match = IMAP_MATCH_CHILDREN;
+	} else {
+		match = IMAP_MATCH_NO;
+	}
 	while (*pattern == '%') {
 		pattern++;
 
--- a/src/tests/test-imap.c	Wed Mar 25 19:43:39 2009 -0400
+++ b/src/tests/test-imap.c	Wed Mar 25 20:27:02 2009 -0400
@@ -37,7 +37,7 @@
 		{ "foo*bar", "foobar/baz", IMAP_MATCH_CHILDREN | IMAP_MATCH_PARENT },
 		{ "*foo*", "fobo", IMAP_MATCH_CHILDREN },
 		{ "%/%/%", "foo/", IMAP_MATCH_CHILDREN },
-		{ "%/%o/%", "foo/", IMAP_MATCH_NO },
+		{ "%/%o/%", "foo/", IMAP_MATCH_CHILDREN },
 		{ "%/%o/%", "foo", IMAP_MATCH_CHILDREN },
 		{ "inbox", "inbox", IMAP_MATCH_YES },
 		{ "inbox", "INBOX", IMAP_MATCH_NO }