changeset 7829:1550dc4f24a5 HEAD

dbox: Set MAILBOX_CHILDREN flag for \NoSelect mailboxes if we know it.
author Timo Sirainen <tss@iki.fi>
date Thu, 12 Jun 2008 02:03:17 +0300
parents 7caab06fb890
children 5a6aa66e2ccd
files src/lib-storage/index/dbox/dbox-storage.c
diffstat 1 files changed, 6 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/dbox/dbox-storage.c	Thu Jun 12 01:48:48 2008 +0300
+++ b/src/lib-storage/index/dbox/dbox-storage.c	Thu Jun 12 02:03:17 2008 +0300
@@ -588,7 +588,7 @@
 				     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 @@
 	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;
 }