From: Timo Sirainen Date: Wed, 11 Jun 2008 23:03:17 +0000 (+0300) Subject: dbox: Set MAILBOX_CHILDREN flag for \NoSelect mailboxes if we know it. X-Git-Tag: 1.2.alpha1~332 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=55434a0f16c838b3fd1ddb27a1a876356ffb22e7;p=thirdparty%2Fdovecot%2Fcore.git dbox: Set MAILBOX_CHILDREN flag for \NoSelect mailboxes if we know it. --HG-- branch : HEAD --- 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; }