str_append_c(ctx->path,
mailbox_list_get_hierarchy_sep(ctx->ctx.list));
}
- str_append(ctx->path, node->raw_name);
+ char escape_chars[] = {
+ ctx->ctx.list->set.storage_name_escape_char,
+ mailbox_list_get_hierarchy_sep(ctx->ctx.list),
+ '\0'
+ };
+ mailbox_list_name_escape(node->raw_name, escape_chars, ctx->path);
ctx->info.vname = mailbox_list_get_vname(ctx->ctx.list, str_c(ctx->path));
ctx->info.flags = node->children != NULL ?
{
struct mailbox_list_index_node *node;
char *dup_name;
+ mailbox_list_name_unescape(&name, ctx->list->set.storage_name_escape_char);
node = p_new(ctx->ilist->mailbox_pool,
struct mailbox_list_index_node, 1);
/* find the last node that exists in the path */
node = ctx->ilist->mailbox_tree; parent = NULL;
for (i = 0; path[i] != NULL; i++) {
- node = mailbox_list_index_node_find_sibling(node, path[i]);
+ node = mailbox_list_index_node_find_sibling(ctx->list, node, path[i]);
if (node == NULL)
break;
}
struct mailbox_list_index_node *
-mailbox_list_index_node_find_sibling(struct mailbox_list_index_node *node,
+mailbox_list_index_node_find_sibling(const struct mailbox_list *list,
+ struct mailbox_list_index_node *node,
const char *name)
{
+ mailbox_list_name_unescape(&name, list->set.storage_name_escape_char);
+
while (node != NULL) {
if (strcmp(node->raw_name, name) == 0)
return node;
char sep[2];
if (*name == '\0')
- return mailbox_list_index_node_find_sibling(node, "");
+ return mailbox_list_index_node_find_sibling(list, node, "");
sep[0] = mailbox_list_get_hierarchy_sep(list); sep[1] = '\0';
path = t_strsplit(name, sep);
for (i = 0;; i++) {
- node = mailbox_list_index_node_find_sibling(node, path[i]);
+ node = mailbox_list_index_node_find_sibling(list, node, path[i]);
if (node == NULL || path[i+1] == NULL)
break;
node = node->children;
uint32_t *seq_r);
struct mailbox_list_index_node *
-mailbox_list_index_node_find_sibling(struct mailbox_list_index_node *node,
+mailbox_list_index_node_find_sibling(const struct mailbox_list *list,
+ struct mailbox_list_index_node *node,
const char *name);
void mailbox_list_index_reset(struct mailbox_list_index *ilist);
int mailbox_list_index_parse(struct mailbox_list *list,