dovecot-2.0: lib-storage: layout=noop now shows INBOX as existin...
dovecot at dovecot.org
dovecot at dovecot.org
Sun Jan 30 23:16:54 EET 2011
details: http://hg.dovecot.org/dovecot-2.0/rev/ff73c325ff01
changeset: 12580:ff73c325ff01
user: Timo Sirainen <tss at iki.fi>
date: Sun Jan 30 23:16:46 2011 +0200
description:
lib-storage: layout=noop now shows INBOX as existing if namespace has inbox=yes.
It also shows INBOX as always being subscribed.
diffstat:
src/lib-storage/list/mailbox-list-none.c | 40 +++++++++++++++----
1 files changed, 31 insertions(+), 9 deletions(-)
diffs (75 lines):
diff -r 7ec1982fb275 -r ff73c325ff01 src/lib-storage/list/mailbox-list-none.c
--- a/src/lib-storage/list/mailbox-list-none.c Sun Jan 30 17:51:17 2011 +0200
+++ b/src/lib-storage/list/mailbox-list-none.c Sun Jan 30 23:16:46 2011 +0200
@@ -6,6 +6,12 @@
#define MAILBOX_LIST_NAME_NONE "none"
#define GLOBAL_TEMP_PREFIX ".temp."
+struct noop_list_iterate_context {
+ struct mailbox_list_iterate_context ctx;
+ struct mailbox_info inbox_info;
+ unsigned int list_inbox:1;
+};
+
extern struct mailbox_list none_mailbox_list;
static struct mailbox_list *none_list_alloc(void)
@@ -58,11 +64,15 @@
}
static int
-none_list_get_mailbox_name_status(struct mailbox_list *list ATTR_UNUSED,
- const char *name ATTR_UNUSED,
+none_list_get_mailbox_name_status(struct mailbox_list *list,
+ const char *name,
enum mailbox_name_status *status)
{
- *status = MAILBOX_NAME_VALID;
+ if (strcasecmp(name, "INBOX") == 0 &&
+ (list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0)
+ *status = MAILBOX_NAME_EXISTS_MAILBOX;
+ else
+ *status = MAILBOX_NAME_VALID;
return 0;
}
@@ -121,12 +131,17 @@
const char *const *patterns ATTR_UNUSED,
enum mailbox_list_iter_flags flags)
{
- struct mailbox_list_iterate_context *ctx;
+ struct noop_list_iterate_context *ctx;
- ctx = i_new(struct mailbox_list_iterate_context, 1);
- ctx->list = list;
- ctx->flags = flags;
- return ctx;
+ ctx = i_new(struct noop_list_iterate_context, 1);
+ ctx->ctx.list = list;
+ ctx->ctx.flags = flags;
+ if ((list->ns->flags & NAMESPACE_FLAG_INBOX_USER) != 0) {
+ ctx->list_inbox = TRUE;
+ ctx->inbox_info.ns = list->ns;
+ ctx->inbox_info.name = "INBOX";
+ }
+ return &ctx->ctx;
}
static int
@@ -137,8 +152,15 @@
}
static const struct mailbox_info *
-none_list_iter_next(struct mailbox_list_iterate_context *ctx ATTR_UNUSED)
+none_list_iter_next(struct mailbox_list_iterate_context *_ctx)
{
+ struct noop_list_iterate_context *ctx =
+ (struct noop_list_iterate_context *)_ctx;
+
+ if (ctx->list_inbox) {
+ ctx->list_inbox = FALSE;
+ return &ctx->inbox_info;
+ }
return NULL;
}
More information about the dovecot-cvs
mailing list