Mercurial > dovecot > core-2.2
changeset 13593:37c078f1745c
mailbox list indexes: Handle name="" mailboxes.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Sun, 02 Oct 2011 18:49:09 +0300 |
parents | d9b0cd5b77b5 |
children | 65696275eaa6 |
files | src/lib-storage/list/mailbox-list-index-sync.c src/lib-storage/list/mailbox-list-index.c |
diffstat | 2 files changed, 7 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-index-sync.c Sun Oct 02 18:39:49 2011 +0300 +++ b/src/lib-storage/list/mailbox-list-index-sync.c Sun Oct 02 18:49:09 2011 +0300 @@ -76,12 +76,13 @@ const char *name, enum mailbox_list_index_flags flags) { - const char *const *path; + const char *const *path, *empty_path[] = { "", NULL }; struct mailbox_list_index_node *node, *parent; unsigned int i; uint32_t seq = 0; - path = t_strsplit(name, ctx->sep); + path = *name == '\0' ? empty_path : + t_strsplit(name, ctx->sep); /* find the last node that exists in the path */ node = ctx->ilist->mailbox_tree; parent = NULL; for (i = 0; path[i] != NULL; i++) {
--- a/src/lib-storage/list/mailbox-list-index.c Sun Oct 02 18:39:49 2011 +0300 +++ b/src/lib-storage/list/mailbox-list-index.c Sun Oct 02 18:49:09 2011 +0300 @@ -46,14 +46,16 @@ mailbox_list_index_lookup_real(struct mailbox_list *list, const char *name) { struct mailbox_list_index *ilist = INDEX_LIST_CONTEXT(list); - struct mailbox_list_index_node *node; + struct mailbox_list_index_node *node = ilist->mailbox_tree; const char *const *path; unsigned int i; char sep[2]; + if (*name == '\0') + return mailbox_list_index_node_find_sibling(node, ""); + sep[0] = mailbox_list_get_hierarchy_sep(list); sep[1] = '\0'; path = t_strsplit(name, sep); - node = ilist->mailbox_tree; for (i = 0;; i++) { node = mailbox_list_index_node_find_sibling(node, path[i]); if (node == NULL || path[i+1] == NULL)