dovecot-2.2: lib-storage: Fixed listescape when escape_char was ...
dovecot at dovecot.org
dovecot at dovecot.org
Sat Sep 21 23:35:28 EEST 2013
details: http://hg.dovecot.org/dovecot-2.2/rev/fce84463f508
changeset: 16800:fce84463f508
user: Timo Sirainen <tss at iki.fi>
date: Sat Sep 21 23:33:42 2013 +0300
description:
lib-storage: Fixed listescape when escape_char was the same as namespace separator.
diffstat:
src/lib-storage/mailbox-list.c | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
diffs (43 lines):
diff -r c019b298e0f6 -r fce84463f508 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c Sat Sep 21 05:28:45 2013 +0300
+++ b/src/lib-storage/mailbox-list.c Sat Sep 21 23:33:42 2013 +0300
@@ -429,7 +429,7 @@
}
for (; *vname != '\0'; vname++) {
if (*vname == ns_sep)
- str_append_c(escaped_name, *vname);
+ str_append_c(escaped_name, list_sep);
else if (*vname == list_sep ||
*vname == list->set.escape_char ||
*vname == '/' ||
@@ -541,7 +541,7 @@
storage_name = "INBOX";
}
- if (list_sep != ns_sep) {
+ if (list_sep != ns_sep && list->set.escape_char == '\0') {
if (ns->type == MAIL_NAMESPACE_TYPE_SHARED &&
(ns->flags & NAMESPACE_FLAG_AUTOCREATED) == 0) {
/* shared namespace root. the backend storage's
@@ -689,6 +689,12 @@
}
prefix_len = strlen(list->ns->prefix);
+ if (list->set.escape_char != '\0') {
+ vname = mailbox_list_unescape_name(list, vname);
+ return prefix_len == 0 ? vname :
+ t_strconcat(list->ns->prefix, vname, NULL);
+ }
+
list_sep = mailbox_list_get_hierarchy_sep(list);
ns_sep = mail_namespace_get_sep(list->ns);
@@ -704,8 +710,6 @@
ret[i + prefix_len] = '\0';
vname = ret;
}
- if (list->set.escape_char != '\0')
- vname = mailbox_list_unescape_name(list, vname);
return vname;
}
More information about the dovecot-cvs
mailing list