Mercurial > dovecot > core-2.2
changeset 22707:42e50736aac0
LAYOUT=index: List INBOX as \NoInferiors when necessary
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 14 Dec 2017 01:31:10 +0200 |
parents | 6ea402d0c650 |
children | fe21125a7ba8 |
files | src/lib-storage/list/mailbox-list-index-iter.c |
diffstat | 1 files changed, 13 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-index-iter.c Thu Dec 14 01:23:45 2017 +0200 +++ b/src/lib-storage/list/mailbox-list-index-iter.c Thu Dec 14 01:31:10 2017 +0200 @@ -85,16 +85,25 @@ str_append(ctx->path, node->name); ctx->info.vname = mailbox_list_get_vname(ctx->ctx.list, str_c(ctx->path)); - ctx->info.vname = p_strdup(ctx->info_pool, ctx->info.vname); - ctx->info.flags = 0; + ctx->info.flags = node->children != NULL ? + MAILBOX_CHILDREN : MAILBOX_NOCHILDREN; + if (strcmp(ctx->info.vname, "INBOX") != 0) { + /* non-INBOX */ + ctx->info.vname = p_strdup(ctx->info_pool, ctx->info.vname); + } else { + /* listing INBOX itself */ + ctx->info.vname = "INBOX"; + if (mail_namespace_is_inbox_noinferiors(ctx->info.ns)) { + ctx->info.flags &= ~(MAILBOX_CHILDREN|MAILBOX_NOCHILDREN); + ctx->info.flags |= MAILBOX_NOINFERIORS; + } + } if ((node->flags & MAILBOX_LIST_INDEX_FLAG_NONEXISTENT) != 0) ctx->info.flags |= MAILBOX_NONEXISTENT; else if ((node->flags & MAILBOX_LIST_INDEX_FLAG_NOSELECT) != 0) ctx->info.flags |= MAILBOX_NOSELECT; if ((node->flags & MAILBOX_LIST_INDEX_FLAG_NOINFERIORS) != 0) ctx->info.flags |= MAILBOX_NOINFERIORS; - ctx->info.flags |= node->children != NULL ? - MAILBOX_CHILDREN : MAILBOX_NOCHILDREN; if ((ctx->ctx.flags & (MAILBOX_LIST_ITER_SELECT_SUBSCRIBED | MAILBOX_LIST_ITER_RETURN_SUBSCRIBED)) != 0) {