dovecot-2.0: Mailbox list iteration: Added MAILBOX_LIST_ITER_SKI...
dovecot at dovecot.org
dovecot at dovecot.org
Wed Jun 24 01:35:34 EEST 2009
details: http://hg.dovecot.org/dovecot-2.0/rev/87990dce79d4
changeset: 9518:87990dce79d4
user: Timo Sirainen <tss at iki.fi>
date: Tue Jun 23 17:32:01 2009 -0400
description:
Mailbox list iteration: Added MAILBOX_LIST_ITER_SKIP_ALIASES flag.
diffstat:
2 files changed, 16 insertions(+), 2 deletions(-)
src/lib-storage/mailbox-list.c | 15 +++++++++++++--
src/lib-storage/mailbox-list.h | 3 +++
diffs (55 lines):
diff -r f5d95f4fd954 -r 87990dce79d4 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c Tue Jun 23 17:31:29 2009 -0400
+++ b/src/lib-storage/mailbox-list.c Tue Jun 23 17:32:01 2009 -0400
@@ -516,6 +516,16 @@ mailbox_list_iter_init_multiple(struct m
return list->v.iter_init(list, patterns, flags);
}
+static struct mail_namespace *
+ns_next(struct ns_list_iterate_context *ctx, struct mail_namespace *ns)
+{
+ if ((ctx->ctx.flags & MAILBOX_LIST_ITER_SKIP_ALIASES) != 0) {
+ while (ns != NULL && ns->alias_for != NULL)
+ ns = ns->next;
+ }
+ return ns;
+}
+
static const struct mailbox_info *
mailbox_list_ns_iter_next(struct mailbox_list_iterate_context *_ctx)
{
@@ -533,7 +543,7 @@ mailbox_list_ns_iter_next(struct mailbox
mailbox_list_iter_init_multiple(ctx->namespaces->list,
ctx->patterns,
_ctx->flags);
- ctx->namespaces = ctx->namespaces->next;
+ ctx->namespaces = ns_next(ctx, ctx->namespaces->next);
return mailbox_list_ns_iter_next(_ctx);
}
return info;
@@ -577,10 +587,11 @@ mailbox_list_iter_init_namespaces(struct
for (i = 0; i < count; i++)
ctx->patterns[i] = p_strdup(pool, patterns[i]);
+ namespaces = ns_next(ctx, namespaces);
ctx->ctx.list->ns = namespaces;
ctx->backend_ctx = mailbox_list_iter_init_multiple(namespaces->list,
patterns, flags);
- ctx->namespaces = namespaces->next;
+ ctx->namespaces = ns_next(ctx, namespaces->next);
return &ctx->ctx;
}
diff -r f5d95f4fd954 -r 87990dce79d4 src/lib-storage/mailbox-list.h
--- a/src/lib-storage/mailbox-list.h Tue Jun 23 17:31:29 2009 -0400
+++ b/src/lib-storage/mailbox-list.h Tue Jun 23 17:32:01 2009 -0400
@@ -46,6 +46,9 @@ enum mailbox_list_iter_flags {
/* Use virtual mailbox names (virtual separators and namespace
prefixes) for patterns and for returned mailbox names. */
MAILBOX_LIST_ITER_VIRTUAL_NAMES = 0x000002,
+ /* For mailbox_list_iter_init_namespaces(): Skip namespaces that
+ have alias_for set. */
+ MAILBOX_LIST_ITER_SKIP_ALIASES = 0x000004,
/* List only subscribed mailboxes */
MAILBOX_LIST_ITER_SELECT_SUBSCRIBED = 0x000010,
More information about the dovecot-cvs
mailing list