From 55434a0f16c838b3fd1ddb27a1a876356ffb22e7 Mon Sep 17 00:00:00 2001 From: Timo Sirainen Date: Thu, 12 Jun 2008 02:03:17 +0300 Subject: [PATCH] dbox: Set MAILBOX_CHILDREN flag for \NoSelect mailboxes if we know it. --HG-- branch : HEAD --- src/lib-storage/index/dbox/dbox-storage.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/lib-storage/index/dbox/dbox-storage.c b/src/lib-storage/index/dbox/dbox-storage.c index 8cc9040d8e..a37c4aaf27 100644 --- a/src/lib-storage/index/dbox/dbox-storage.c +++ b/src/lib-storage/index/dbox/dbox-storage.c @@ -588,7 +588,7 @@ static int dbox_list_iter_is_mailbox(struct mailbox_list_iterate_context *ctx enum mailbox_info_flags *flags) { const char *path, *maildir_path; - struct stat st; + struct stat st, st2; int ret = 1; /* try to avoid stat() with these checks */ @@ -634,8 +634,12 @@ static int dbox_list_iter_is_mailbox(struct mailbox_list_iterate_context *ctx if ((*flags & (MAILBOX_NOSELECT | MAILBOX_NONEXISTENT)) == 0) { /* make sure it's a selectable mailbox */ maildir_path = t_strconcat(path, "/"DBOX_MAILDIR_NAME, NULL); - if (stat(maildir_path, &st) < 0 || !S_ISDIR(st.st_mode)) + if (stat(maildir_path, &st2) < 0 || !S_ISDIR(st2.st_mode)) { *flags |= MAILBOX_NOSELECT; + if (st.st_nlink == 3 && + *ctx->list->set.maildir_name != '\0') + *flags |= MAILBOX_CHILDREN; + } } return ret; } -- 2.47.3