From: Timo Sirainen Date: Mon, 7 May 2012 22:22:32 +0000 (+0300) Subject: layout=fs: Fixes to mail_shared_explicit_inbox=no X-Git-Tag: 2.1.7~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=00a31960723536636a59554d93dc1e71b1b42bd4;p=thirdparty%2Fdovecot%2Fcore.git layout=fs: Fixes to mail_shared_explicit_inbox=no --- diff --git a/src/lib-storage/list/mailbox-list-fs-iter.c b/src/lib-storage/list/mailbox-list-fs-iter.c index 58b83622cc..5b660a5bb6 100644 --- a/src/lib-storage/list/mailbox-list-fs-iter.c +++ b/src/lib-storage/list/mailbox-list-fs-iter.c @@ -123,7 +123,8 @@ dir_get_storage_name(struct list_dir_context *dir, const char *fname) return t_strconcat("/", fname, NULL); } else { /* child */ - return t_strconcat(dir->storage_name, "/", fname, NULL); + return *fname == '\0' ? dir->storage_name : + t_strconcat(dir->storage_name, "/", fname, NULL); } } @@ -403,6 +404,11 @@ static void fs_list_get_roots(struct fs_list_iterate_context *ctx) we just want to see its contents (not the INBOX's children). */ root = ""; + } else if (*prefix_vname == '\0') { + /* we need to handle "" explicitly here, because getting + storage name with mail_shared_explicit_inbox=no + would return root=INBOX. */ + root = ""; } else { root = mailbox_list_get_storage_name(ctx->ctx.list, prefix_vname);