# HG changeset patch # User Timo Sirainen # Date 1226767732 -7200 # Node ID ce4779b95fc819dcd09d0fb3b0d6eb78aa637ff6 # Parent 155700456194ef1792293a54ba499b4c86f8c0fe Maildir: Fixed to work with LAYOUT=fs and non-empty DIRNAME. diff -r 155700456194 -r ce4779b95fc8 src/lib-storage/index/maildir/maildir-storage.c --- a/src/lib-storage/index/maildir/maildir-storage.c Sat Nov 15 18:43:54 2008 +0200 +++ b/src/lib-storage/index/maildir/maildir-storage.c Sat Nov 15 18:48:52 2008 +0200 @@ -930,19 +930,33 @@ if (stat(cur_path, &st2) < 0 || !S_ISDIR(st2.st_mode)) *flags |= MAILBOX_NOSELECT; - /* now we can figure out based on the link count if we have - child mailboxes or not. for a selectable mailbox we have - 3 more links (cur/, new/ and tmp/) than non-selectable. */ - if ((*flags & MAILBOX_NOSELECT) == 0) { - if (st.st_nlink > 5) + if (*ctx->list->set.maildir_name == '\0') { + /* now we can figure out based on the link count if we + have child mailboxes or not. for a selectable + mailbox we have 3 more links (cur/, new/ and tmp/) + than non-selectable. */ + if ((*flags & MAILBOX_NOSELECT) == 0) { + if (st.st_nlink > 5) + *flags |= MAILBOX_CHILDREN; + else + *flags |= MAILBOX_NOCHILDREN; + } else { + if (st.st_nlink > 2) + *flags |= MAILBOX_CHILDREN; + else + *flags |= MAILBOX_NOCHILDREN; + } + } else { + /* link count 3 may mean either a selectable mailbox + or a non-selectable mailbox with 1 child. */ + if (st.st_nlink > 3) *flags |= MAILBOX_CHILDREN; - else - *flags |= MAILBOX_NOCHILDREN; - } else { - if (st.st_nlink > 2) - *flags |= MAILBOX_CHILDREN; - else - *flags |= MAILBOX_NOCHILDREN; + else if (st.st_nlink == 3) { + if ((*flags & MAILBOX_NOSELECT) != 0) + *flags |= MAILBOX_CHILDREN; + else + *flags |= MAILBOX_NOCHILDREN; + } } } return 1;