Mercurial > dovecot > original-hg > dovecot-1.2
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 }