dovecot-2.0: lib-storage: Removed code related to listing mailbo...

dovecot at dovecot.org dovecot at dovecot.org
Sun Jul 11 21:32:33 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/b25a30644e68
changeset: 11790:b25a30644e68
user:      Timo Sirainen <tss at iki.fi>
date:      Sun Jul 11 19:32:28 2010 +0100
description:
lib-storage: Removed code related to listing mailboxes with non-virtual names.
The non-virtual listing code would have already crashed with assert.

diffstat:

 src/doveadm/doveadm-mail-altmove.c                       |   1 -
 src/doveadm/doveadm-mail-expunge.c                       |   1 -
 src/doveadm/doveadm-mail-fetch.c                         |   1 -
 src/doveadm/doveadm-mail-list-iter.c                     |   2 -
 src/doveadm/doveadm-mail-mailbox-status.c                |   1 -
 src/doveadm/doveadm-mail-mailbox.c                       |   1 -
 src/doveadm/doveadm-mail-search.c                        |   1 -
 src/dsync/dsync-worker-local.c                           |   2 -
 src/imap/cmd-list.c                                      |   7 +-
 src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c |   1 -
 src/lib-storage/index/shared/shared-list.c               |   2 -
 src/lib-storage/list/mailbox-list-fs-iter.c              |  24 ++-----
 src/lib-storage/list/mailbox-list-maildir-iter.c         |  46 +++------------
 src/lib-storage/list/mailbox-list-maildir.c              |   1 -
 src/lib-storage/mailbox-list.c                           |  38 ++++--------
 src/lib-storage/mailbox-list.h                           |   5 +-
 src/plugins/acl/acl-backend-vfile-acllist.c              |   1 -
 src/plugins/acl/acl-mailbox-list.c                       |  17 +----
 src/plugins/acl/acl-shared-storage.c                     |   1 -
 src/plugins/listescape/listescape-plugin.c               |   6 +-
 src/plugins/quota/quota-count.c                          |   1 -
 src/plugins/quota/quota-maildir.c                        |   1 -
 src/plugins/virtual/virtual-config.c                     |   1 -
 23 files changed, 40 insertions(+), 122 deletions(-)

diffs (truncated from 562 to 300 lines):

diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-altmove.c
--- a/src/doveadm/doveadm-mail-altmove.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-altmove.c	Sun Jul 11 19:32:28 2010 +0100
@@ -46,7 +46,6 @@
 {
 	const enum mailbox_list_iter_flags iter_flags =
 		MAILBOX_LIST_ITER_RAW_LIST |
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX |
 		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
 	struct doveadm_mail_list_iter *iter;
diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-expunge.c
--- a/src/doveadm/doveadm-mail-expunge.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-expunge.c	Sun Jul 11 19:32:28 2010 +0100
@@ -166,7 +166,6 @@
 {
 	const enum mailbox_list_iter_flags iter_flags =
 		MAILBOX_LIST_ITER_RAW_LIST |
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX |
 		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
 	struct doveadm_mail_list_iter *iter;
diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-fetch.c
--- a/src/doveadm/doveadm-mail-fetch.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-fetch.c	Sun Jul 11 19:32:28 2010 +0100
@@ -422,7 +422,6 @@
 {
 	struct fetch_cmd_context *ctx = (struct fetch_cmd_context *)_ctx;
 	const enum mailbox_list_iter_flags iter_flags =
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX |
 		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
 	struct doveadm_mail_list_iter *iter;
diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-list-iter.c
--- a/src/doveadm/doveadm-mail-list-iter.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-list-iter.c	Sun Jul 11 19:32:28 2010 +0100
@@ -58,8 +58,6 @@
 	struct doveadm_mail_list_iter *iter;
 	ARRAY_TYPE(const_string) patterns;
 
-	i_assert((iter_flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0);
-
 	iter = i_new(struct doveadm_mail_list_iter, 1);
 	iter->search_args = search_args;
 
diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-mailbox-status.c
--- a/src/doveadm/doveadm-mail-mailbox-status.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-mailbox-status.c	Sun Jul 11 19:32:28 2010 +0100
@@ -134,7 +134,6 @@
 {
 	struct status_cmd_context *ctx = (struct status_cmd_context *)_ctx;
 	enum mailbox_list_iter_flags iter_flags =
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_RAW_LIST |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX |
 		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-mailbox.c
--- a/src/doveadm/doveadm-mail-mailbox.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-mailbox.c	Sun Jul 11 19:32:28 2010 +0100
@@ -110,7 +110,6 @@
 	struct list_cmd_context *ctx = (struct list_cmd_context *)_ctx;
 	enum mailbox_list_iter_flags iter_flags =
 		MAILBOX_LIST_ITER_RAW_LIST |
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX |
 		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
 	struct doveadm_mail_list_iter *iter;
diff -r 54807112d1d6 -r b25a30644e68 src/doveadm/doveadm-mail-search.c
--- a/src/doveadm/doveadm-mail-search.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/doveadm/doveadm-mail-search.c	Sun Jul 11 19:32:28 2010 +0100
@@ -46,7 +46,6 @@
 {
 	const enum mailbox_list_iter_flags iter_flags =
 		MAILBOX_LIST_ITER_RAW_LIST |
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX |
 		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
 	struct doveadm_mail_list_iter *iter;
diff -r 54807112d1d6 -r b25a30644e68 src/dsync/dsync-worker-local.c
--- a/src/dsync/dsync-worker-local.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/dsync/dsync-worker-local.c	Sun Jul 11 19:32:28 2010 +0100
@@ -388,7 +388,6 @@
 		(struct local_dsync_worker *)_worker;
 	struct local_dsync_worker_mailbox_iter *iter;
 	enum mailbox_list_iter_flags list_flags =
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_SKIP_ALIASES |
 		MAILBOX_LIST_ITER_NO_AUTO_INBOX;
 	static const char *patterns[] = { "*", NULL };
@@ -592,7 +591,6 @@
 		(struct local_dsync_worker *)_worker;
 	struct local_dsync_worker_subs_iter *iter;
 	enum mailbox_list_iter_flags list_flags =
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 		MAILBOX_LIST_ITER_SKIP_ALIASES |
 		MAILBOX_LIST_ITER_SELECT_SUBSCRIBED;
 	static const char *patterns[] = { "*", NULL };
diff -r 54807112d1d6 -r b25a30644e68 src/imap/cmd-list.c
--- a/src/imap/cmd-list.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/imap/cmd-list.c	Sun Jul 11 19:32:28 2010 +0100
@@ -184,8 +184,7 @@
 
 	/* find the INBOX flags */
 	ns = mail_namespace_find_inbox(ctx->cmd->client->user->namespaces);
-	list_iter = mailbox_list_iter_init(ns->list, "INBOX",
-					   MAILBOX_LIST_ITER_VIRTUAL_NAMES);
+	list_iter = mailbox_list_iter_init(ns->list, "INBOX", 0);
 	info = mailbox_list_iter_next(list_iter);
 	if (info != NULL) {
 		i_assert(strcasecmp(info->name, "INBOX") == 0);
@@ -198,8 +197,7 @@
 static bool list_namespace_has_children(struct cmd_list_context *ctx)
 {
 	enum mailbox_list_iter_flags list_flags =
-		MAILBOX_LIST_ITER_RETURN_NO_FLAGS |
-		MAILBOX_LIST_ITER_VIRTUAL_NAMES;
+		MAILBOX_LIST_ITER_RETURN_NO_FLAGS;
 	struct mailbox_list_iterate_context *list_iter;
 	const struct mailbox_info *info;
 	bool ret = FALSE;
@@ -925,7 +923,6 @@
 		args += 2;
 	}
 
-	ctx->list_flags |= MAILBOX_LIST_ITER_VIRTUAL_NAMES;
 	if (lsub) {
 		/* LSUB - we don't care about flags */
 		ctx->list_flags |= MAILBOX_LIST_ITER_SELECT_SUBSCRIBED |
diff -r 54807112d1d6 -r b25a30644e68 src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c
--- a/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/lib-storage/index/dbox-multi/mdbox-storage-rebuild.c	Sun Jul 11 19:32:28 2010 +0100
@@ -549,7 +549,6 @@
 		ctx->default_list = ns->list;
 
 	iter = mailbox_list_iter_init(ns->list, "*",
-				      MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 				      MAILBOX_LIST_ITER_RAW_LIST |
 				      MAILBOX_LIST_ITER_RETURN_NO_FLAGS);
 	while ((info = mailbox_list_iter_next(iter)) != NULL) {
diff -r 54807112d1d6 -r b25a30644e68 src/lib-storage/index/shared/shared-list.c
--- a/src/lib-storage/index/shared/shared-list.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/lib-storage/index/shared/shared-list.c	Sun Jul 11 19:32:28 2010 +0100
@@ -196,8 +196,6 @@
 		   prefix matches without the trailing separator */
 		i_assert(ns->prefix_len > 0);
 		ctx->info.name = t_strndup(ns->prefix, ns->prefix_len - 1);
-		if ((_ctx->flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) == 0)
-			ctx->info.name += ctx->info.ns->prefix_len;
 		if (imap_match(ctx->glob, ctx->info.name) == IMAP_MATCH_YES) {
 			ctx->cur_ns = ns->next;
 			return &ctx->info;
diff -r 54807112d1d6 -r b25a30644e68 src/lib-storage/list/mailbox-list-fs-iter.c
--- a/src/lib-storage/list/mailbox-list-fs-iter.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/lib-storage/list/mailbox-list-fs-iter.c	Sun Jul 11 19:32:28 2010 +0100
@@ -223,8 +223,7 @@
 	ctx->ctx.flags = flags;
 	ctx->info_pool = pool_alloconly_create("fs list", 1024);
 	ctx->next = fs_list_next;
-	ctx->sep = (flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0 ?
-		_list->ns->sep : _list->ns->real_sep;
+	ctx->sep = _list->ns->sep;
 	ctx->info.ns = _list->ns;
 
 	prefix_len = strlen(_list->ns->prefix);
@@ -232,14 +231,11 @@
 	for (; *patterns != NULL; patterns++) {
 		/* check that we're not trying to do any "../../" lists */
 		test_pattern = *patterns;
-		if ((flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0) {
-			/* skip namespace prefix if possible. this allows using
-			   e.g. ~/mail/ prefix and have it pass the pattern
-			   validation. */
-			if (strncmp(test_pattern, _list->ns->prefix,
-				    prefix_len) == 0)
-				test_pattern += prefix_len;
-		}
+		/* skip namespace prefix if possible. this allows using
+		   e.g. ~/mail/ prefix and have it pass the pattern
+		   validation. */
+		if (strncmp(test_pattern, _list->ns->prefix, prefix_len) == 0)
+			test_pattern += prefix_len;
 		if (mailbox_list_is_valid_pattern(_list, test_pattern)) {
 			if (strcasecmp(*patterns, "INBOX") == 0) {
 				ctx->inbox_match = TRUE;
@@ -278,8 +274,7 @@
 		return &ctx->ctx;
 	}
 
-	vpath = (flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0 ?
-		_list->ns->prefix : "";
+	vpath = _list->ns->prefix;
 	rootdir = list_get_rootdir(ctx, &vpath);
 	if (rootdir == NULL) {
 		path = mailbox_list_get_path(_list, NULL,
@@ -663,10 +658,7 @@
 						&storage_name);
 	if (ns == NULL) {
 		ns = ctx->info.ns;
-		if ((ctx->ctx.flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0)
-			storage_name = mail_namespace_get_storage_name(ns, storage_name);
-		else
-			storage_name = ctx->info.name;
+		storage_name = mail_namespace_get_storage_name(ns, storage_name);
 	}
 
 	/* if name ends with hierarchy separator, drop the separator */
diff -r 54807112d1d6 -r b25a30644e68 src/lib-storage/list/mailbox-list-maildir-iter.c
--- a/src/lib-storage/list/mailbox-list-maildir-iter.c	Sun Jul 11 19:19:45 2010 +0100
+++ b/src/lib-storage/list/mailbox-list-maildir-iter.c	Sun Jul 11 19:32:28 2010 +0100
@@ -47,28 +47,18 @@
 	struct mail_namespace *ns = ctx->ctx.list->ns;
 	struct mailbox_node *node;
 	const char *p, *mailbox_c;
-	char hierarchy_sep;
 	bool created;
-	unsigned int prefix_len;
-
-	if ((ctx->ctx.flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0) {
-		hierarchy_sep = ns->sep;
-		prefix_len = ns->prefix_len;
-	} else {
-		hierarchy_sep = ns->real_sep;
-		prefix_len = 0;
-	}
 
 	mailbox_c = str_c(mailbox);
-	while ((p = strrchr(mailbox_c, hierarchy_sep)) != NULL) {
+	while ((p = strrchr(mailbox_c, ns->sep)) != NULL) {
 		str_truncate(mailbox, (size_t) (p-mailbox_c));
 		mailbox_c = str_c(mailbox);
 		if (imap_match(glob, mailbox_c) != IMAP_MATCH_YES)
 			continue;
 
-		if (prefix_len > 0 && str_len(mailbox) == prefix_len-1 &&
-		    strncmp(mailbox_c, ns->prefix, prefix_len - 1) == 0 &&
-		    mailbox_c[prefix_len-1] == hierarchy_sep) {
+		if (ns->prefix_len > 0 && str_len(mailbox) == ns->prefix_len-1 &&
+		    strncmp(mailbox_c, ns->prefix, ns->prefix_len - 1) == 0 &&
+		    mailbox_c[ns->prefix_len-1] == ns->sep) {
 			/* don't return matches to namespace prefix itself */
 			continue;
 		}
@@ -99,10 +89,7 @@
 	const char *p, *mailbox_c;
 	char hierarchy_sep;
 
-	if ((ctx->ctx.flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0)
-		hierarchy_sep = ctx->ctx.list->ns->sep;
-	else
-		hierarchy_sep = ctx->ctx.list->ns->real_sep;
+	hierarchy_sep = ctx->ctx.list->ns->sep;
 
 	/* mark the first existing parent as containing children */
 	mailbox_c = str_c(mailbox);
@@ -287,7 +274,7 @@
 	enum mailbox_info_flags flags;
 	enum imap_match_result match;
 	struct mailbox_node *node;
-	bool created, virtual_names;
+	bool created;
 	struct stat st;
 	int ret;
 
@@ -304,8 +291,6 @@
 		return 0;
 	}
 
-	virtual_names = (ctx->ctx.flags & MAILBOX_LIST_ITER_VIRTUAL_NAMES) != 0;
-
 	mailbox = t_str_new(MAILBOX_LIST_NAME_MAX_LENGTH);
 	while ((d = readdir(dirp)) != NULL) {
 		const char *fname = d->d_name;
@@ -323,14 +308,8 @@
 		    (fname[1] == '\0' || (fname[1] == '.' && fname[2] == '\0')))
 			continue;
 
-		if (!virtual_names) {
-			str_truncate(mailbox, 0);
-			str_append(mailbox, mailbox_name);
-			mailbox_name = str_c(mailbox);
-		} else {
-			mailbox_name = mail_namespace_get_vname(ns, mailbox,
-								mailbox_name);
-		}
+		mailbox_name = mail_namespace_get_vname(ns, mailbox,
+							mailbox_name);
 
 		/* make sure the pattern matches */
 		match = imap_match(glob, mailbox_name);
@@ -412,7 +391,6 @@
 	struct mailbox_node *node;
 
 	iter = mailbox_list_iter_init(ns->list, "*",
-				      MAILBOX_LIST_ITER_VIRTUAL_NAMES |
 				      MAILBOX_LIST_ITER_RETURN_CHILDREN);
 	while ((info = mailbox_list_iter_next(iter)) != NULL) {
 		node = mailbox_tree_lookup(ctx->tree_ctx, info->name);
@@ -459,24 +437,20 @@
 {
 	struct maildir_list_iterate_context *ctx;


More information about the dovecot-cvs mailing list