Mercurial > dovecot > core-2.2
changeset 13443:84e31a32293e
lib-storage: Fixed mailbox_list_mailbox() for backends without get_mailbox_flags().
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 12 Sep 2011 12:40:34 +0300 |
parents | 7669862d95e7 |
children | 59c7b30973cf |
files | src/lib-storage/mailbox-list.c |
diffstat | 1 files changed, 17 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/mailbox-list.c Mon Sep 12 12:38:04 2011 +0300 +++ b/src/lib-storage/mailbox-list.c Mon Sep 12 12:40:34 2011 +0300 @@ -1314,13 +1314,26 @@ return 1; } + if (list->v.get_mailbox_flags == NULL) { + /* can't do this optimized. do it the slow way. */ + struct mailbox_list_iterate_context *iter; + const struct mailbox_info *info; + const char *vname; + + vname = mailbox_list_get_vname(list, name); + iter = mailbox_list_iter_init(list, vname, 0); + info = mailbox_list_iter_next(iter); + if (info == NULL) + *flags_r = MAILBOX_NONEXISTENT; + else + *flags_r = info->flags; + return mailbox_list_iter_deinit(&iter); + } + rootdir = mailbox_list_get_path(list, NULL, MAILBOX_LIST_PATH_TYPE_MAILBOX); + i_assert(rootdir != NULL); path = mailbox_list_get_path(list, name, MAILBOX_LIST_PATH_TYPE_DIR); - if (rootdir == NULL) { - /* shouldn't happen with anything except shared mailboxes */ - return 0; - } fname = strrchr(path, '/'); if (fname == NULL) {