dovecot-2.1: mailbox list indexes: Handle name="" mailboxes.
dovecot at dovecot.org
dovecot at dovecot.org
Sun Oct 2 18:40:47 EEST 2011
details: http://hg.dovecot.org/dovecot-2.1/rev/37c078f1745c
changeset: 13593:37c078f1745c
user: Timo Sirainen <tss at iki.fi>
date: Sun Oct 02 18:49:09 2011 +0300
description:
mailbox list indexes: Handle name="" mailboxes.
diffstat:
src/lib-storage/list/mailbox-list-index-sync.c | 5 +++--
src/lib-storage/list/mailbox-list-index.c | 6 ++++--
2 files changed, 7 insertions(+), 4 deletions(-)
diffs (41 lines):
diff -r d9b0cd5b77b5 -r 37c078f1745c src/lib-storage/list/mailbox-list-index-sync.c
--- 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++) {
diff -r d9b0cd5b77b5 -r 37c078f1745c src/lib-storage/list/mailbox-list-index.c
--- 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)
More information about the dovecot-cvs
mailing list