Mercurial > dovecot > original-hg > dovecot-1.2
changeset 9279:7615ccab3829 HEAD
listescape: Fixed problems with handling mailbox listing.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 03 Aug 2009 00:18:30 -0400 |
parents | f55e989de7ac |
children | 25c9df95fda6 |
files | src/plugins/listescape/listescape-plugin.c |
diffstat | 1 files changed, 13 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/plugins/listescape/listescape-plugin.c Mon Aug 03 00:16:58 2009 -0400 +++ b/src/plugins/listescape/listescape-plugin.c Mon Aug 03 00:18:30 2009 -0400 @@ -54,9 +54,12 @@ str++; } for (; *str != '\0'; str++) { - if (*str == ns->sep && change_sep) - str_append_c(esc, ns->list->hierarchy_sep); - else if (*str == ns->list->hierarchy_sep || + if (*str == ns->sep) { + if (change_sep) + str_append_c(esc, ns->list->hierarchy_sep); + else + str_append_c(esc, *str); + } else if (*str == ns->list->hierarchy_sep || *str == escape_char || *str == '/') str_printfa(esc, "%c%02x", escape_char, *str); else @@ -101,14 +104,18 @@ struct mailbox_list_iterate_context *ctx; const char **escaped_patterns; unsigned int i; + bool change_sep; - t_push(); - if ((flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0) { + /* this is kind of kludgy. In ACL code we want to convert patterns, + in maildir renaming code we don't. so for now just use the _RAW_LIST + flag.. */ + if ((flags & MAILBOX_LIST_ITER_RAW_LIST) == 0) { + change_sep = (flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) == 0; escaped_patterns = t_new(const char *, str_array_length(patterns) + 1); for (i = 0; patterns[i] != NULL; i++) { escaped_patterns[i] = - list_escape(list->ns, patterns[i], FALSE); + list_escape(list->ns, patterns[i], change_sep); } patterns = escaped_patterns; } @@ -120,7 +127,6 @@ list->ns->real_sep = list->hierarchy_sep; ctx = mlist->module_ctx.super.iter_init(list, patterns, flags); list->ns->real_sep = list->ns->sep; - t_pop(); return ctx; }