dovecot-2.2: Maildir++: Return nonexistent subscribed mailbox wi...
dovecot at dovecot.org
dovecot at dovecot.org
Sun May 20 03:26:31 EEST 2012
details: http://hg.dovecot.org/dovecot-2.2/rev/f03e81b702a8
changeset: 14428:f03e81b702a8
user: Timo Sirainen <tss at iki.fi>
date: Wed Apr 04 10:07:41 2012 +0300
description:
Maildir++: Return nonexistent subscribed mailbox with nonexistent flag.
e.g. LIST (SUBSCRIBED) "" *
diffstat:
src/lib-storage/list/mailbox-list-maildir-iter.c | 6 +++++-
src/lib-storage/list/mailbox-list-subscriptions.c | 7 +++++--
src/lib-storage/list/mailbox-list-subscriptions.h | 3 ++-
3 files changed, 12 insertions(+), 4 deletions(-)
diffs (60 lines):
diff -r 7a414d055b3c -r f03e81b702a8 src/lib-storage/list/mailbox-list-maildir-iter.c
--- a/src/lib-storage/list/mailbox-list-maildir-iter.c Wed Apr 04 09:48:46 2012 +0300
+++ b/src/lib-storage/list/mailbox-list-maildir-iter.c Wed Apr 04 10:07:41 2012 +0300
@@ -440,7 +440,11 @@
if ((flags & MAILBOX_LIST_ITER_SELECT_SUBSCRIBED) != 0) {
/* Listing only subscribed mailboxes.
Flags are set later if needed. */
- mailbox_list_subscriptions_fill(&ctx->ctx, ctx->tree_ctx);
+ bool default_nonexistent =
+ (flags & MAILBOX_LIST_ITER_RETURN_NO_FLAGS) == 0;
+
+ mailbox_list_subscriptions_fill(&ctx->ctx, ctx->tree_ctx,
+ default_nonexistent);
}
if ((flags & MAILBOX_LIST_ITER_SELECT_SUBSCRIBED) == 0 ||
diff -r 7a414d055b3c -r f03e81b702a8 src/lib-storage/list/mailbox-list-subscriptions.c
--- a/src/lib-storage/list/mailbox-list-subscriptions.c Wed Apr 04 09:48:46 2012 +0300
+++ b/src/lib-storage/list/mailbox-list-subscriptions.c Wed Apr 04 10:07:41 2012 +0300
@@ -185,7 +185,8 @@
}
void mailbox_list_subscriptions_fill(struct mailbox_list_iterate_context *ctx,
- struct mailbox_tree_context *tree)
+ struct mailbox_tree_context *tree,
+ bool default_nonexistent)
{
struct mailbox_list_iter_update_context update_ctx;
struct mailbox_tree_iterate_context *iter;
@@ -197,6 +198,8 @@
update_ctx.tree_ctx = tree;
update_ctx.glob = ctx->glob;
update_ctx.leaf_flags = MAILBOX_SUBSCRIBED;
+ if (default_nonexistent)
+ update_ctx.leaf_flags |= MAILBOX_NONEXISTENT;
update_ctx.parent_flags = MAILBOX_CHILD_SUBSCRIBED;
update_ctx.match_parents =
(ctx->flags & MAILBOX_LIST_ITER_SELECT_RECURSIVEMATCH) != 0;
@@ -226,7 +229,7 @@
array_create(&ctx->ctx.module_contexts, pool, sizeof(void *), 5);
ctx->tree = mailbox_tree_init(sep);
- mailbox_list_subscriptions_fill(&ctx->ctx, ctx->tree);
+ mailbox_list_subscriptions_fill(&ctx->ctx, ctx->tree, FALSE);
ctx->info.ns = list->ns;
/* the tree usually has only those entries we want to iterate through,
diff -r 7a414d055b3c -r f03e81b702a8 src/lib-storage/list/mailbox-list-subscriptions.h
--- a/src/lib-storage/list/mailbox-list-subscriptions.h Wed Apr 04 09:48:46 2012 +0300
+++ b/src/lib-storage/list/mailbox-list-subscriptions.h Wed Apr 04 10:07:41 2012 +0300
@@ -17,7 +17,8 @@
/* Add subscriptions matching the iteration to the given tree */
void mailbox_list_subscriptions_fill(struct mailbox_list_iterate_context *ctx,
- struct mailbox_tree_context *tree);
+ struct mailbox_tree_context *tree,
+ bool default_nonexistent);
/* Iterate through subscriptions, call mailbox_list.get_mailbox_flags()
if necessary for mailboxes to get their flags. */
More information about the dovecot-cvs
mailing list