dovecot-1.2: dbox: Set MAILBOX_CHILDREN flag for \NoSelect mailb...
dovecot at dovecot.org
dovecot at dovecot.org
Thu Jun 12 02:15:52 EEST 2008
details: http://hg.dovecot.org/dovecot-1.2/rev/1550dc4f24a5
changeset: 7829:1550dc4f24a5
user: Timo Sirainen <tss at iki.fi>
date: Thu Jun 12 02:03:17 2008 +0300
description:
dbox: Set MAILBOX_CHILDREN flag for \NoSelect mailboxes if we know it.
diffstat:
1 file changed, 6 insertions(+), 2 deletions(-)
src/lib-storage/index/dbox/dbox-storage.c | 8 ++++++--
diffs (26 lines):
diff -r 7caab06fb890 -r 1550dc4f24a5 src/lib-storage/index/dbox/dbox-storage.c
--- 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 @@ static int dbox_list_iter_is_mailbox(str
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(str
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;
}
More information about the dovecot-cvs
mailing list