dovecot-2.2: imapc: Code cleanup: Don't access imapc settings vi...

dovecot at dovecot.org dovecot at dovecot.org
Wed Jul 10 06:05:30 EEST 2013


details:   http://hg.dovecot.org/dovecot-2.2/rev/e45ad5524f1a
changeset: 16585:e45ad5524f1a
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Jul 10 06:05:20 2013 +0300
description:
imapc: Code cleanup: Don't access imapc settings via storage.

diffstat:

 src/lib-storage/index/imapc/imapc-list.c |  40 +++++++++++++++++++------------
 src/lib-storage/index/imapc/imapc-list.h |   1 +
 2 files changed, 25 insertions(+), 16 deletions(-)

diffs (132 lines):

diff -r 673648c6fb4b -r e45ad5524f1a src/lib-storage/index/imapc/imapc-list.c
--- a/src/lib-storage/index/imapc/imapc-list.c	Wed Jul 10 05:57:36 2013 +0300
+++ b/src/lib-storage/index/imapc/imapc-list.c	Wed Jul 10 06:05:20 2013 +0300
@@ -56,6 +56,17 @@
 	return &list->list;
 }
 
+static int
+imapc_list_init(struct mailbox_list *_list, const char **error_r ATTR_UNUSED)
+{
+	struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list;
+
+	list->set = mail_user_set_get_driver_settings(_list->ns->user->set_info,
+						      _list->ns->user->set,
+						      IMAPC_STORAGE_NAME);
+	return 0;
+}
+
 static void imapc_list_deinit(struct mailbox_list *_list)
 {
 	struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list;
@@ -205,7 +216,7 @@
 imapc_list_get_storage_name(struct mailbox_list *_list, const char *vname)
 {
 	struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list;
-	const char *prefix = list->storage->set->imapc_list_prefix;
+	const char *prefix = list->set->imapc_list_prefix;
 	const char *storage_name;
 
 	storage_name = mailbox_list_default_get_storage_name(_list, vname);
@@ -222,7 +233,7 @@
 imapc_list_get_vname(struct mailbox_list *_list, const char *storage_name)
 {
 	struct imapc_mailbox_list *list = (struct imapc_mailbox_list *)_list;
-	const char *prefix = list->storage->set->imapc_list_prefix;
+	const char *prefix = list->set->imapc_list_prefix;
 	unsigned int prefix_len;
 
 	if (*storage_name == '\0') {
@@ -285,7 +296,7 @@
 		return NULL;
 
 	vname = mailbox_list_get_vname(&list->list, name);
-	if (list->storage->set->imapc_list_prefix[0] != '\0') {
+	if (list->set->imapc_list_prefix[0] != '\0') {
 		/* put back the prefix, so it gets included in the filesystem. */
 		unsigned int vname_len = strlen(vname);
 
@@ -301,10 +312,10 @@
 		}
 		if (vname[0] == '\0') {
 			vname = t_strconcat(ns->prefix,
-				list->storage->set->imapc_list_prefix, NULL);
+				list->set->imapc_list_prefix, NULL);
 		} else {
 			vname = t_strdup_printf("%s%s%c%s", ns->prefix,
-						list->storage->set->imapc_list_prefix,
+						list->set->imapc_list_prefix,
 						ns_sep, vname);
 		}
 	}
@@ -366,7 +377,7 @@
 	struct mailbox_list *fs_list = imapc_list_get_fs(list);
 	struct mailbox_list_iterate_context *iter;
 	const struct mailbox_info *info;
-	const char *imapc_list_prefix = list->storage->set->imapc_list_prefix;
+	const char *imapc_list_prefix = list->set->imapc_list_prefix;
 	unsigned int imapc_list_prefix_len = strlen(imapc_list_prefix);
 	const char *fs_name, *vname;
 
@@ -417,14 +428,13 @@
 	if (list->refreshed_mailboxes)
 		return 0;
 
-	if (*list->storage->set->imapc_list_prefix == '\0')
+	if (*list->set->imapc_list_prefix == '\0')
 		pattern = "*";
 	else {
 		/* list "prefix*" instead of "prefix.*". this may return a bit
 		   more than we want, but we're also interested in the flags
 		   of the prefix itself. */
-		pattern = t_strdup_printf("%s*",
-			list->storage->set->imapc_list_prefix);
+		pattern = t_strdup_printf("%s*", list->set->imapc_list_prefix);
 	}
 
 	cmd = imapc_list_simple_context_init(&ctx, list);
@@ -440,7 +450,7 @@
 		   imapc_list_prefix doesn't match it */
 		bool created;
 		node = mailbox_tree_get(list->mailboxes, "INBOX", &created);
-		if (*list->storage->set->imapc_list_prefix != '\0') {
+		if (*list->set->imapc_list_prefix != '\0') {
 			/* this listing didn't include the INBOX itself, but
 			   might have included its children. make sure there
 			   aren't any extra flags in it (especially
@@ -640,12 +650,10 @@
 		mailbox_tree_init(mail_namespace_get_sep(_src_list->ns));
 
 	cmd = imapc_list_simple_context_init(&ctx, src_list);
-	if (*src_list->storage->set->imapc_list_prefix == '\0')
+	if (*src_list->set->imapc_list_prefix == '\0')
 		pattern = "*";
-	else {
-		pattern = t_strdup_printf("%s*",
-				src_list->storage->set->imapc_list_prefix);
-	}
+	else
+		pattern = t_strdup_printf("%s*", src_list->set->imapc_list_prefix);
 	imapc_command_sendf(cmd, "LSUB \"\" %s", pattern);
 	imapc_simple_run(&ctx);
 
@@ -789,7 +797,7 @@
 
 	{
 		imapc_list_alloc,
-		NULL,
+		imapc_list_init,
 		imapc_list_deinit,
 		NULL,
 		imapc_list_get_hierarchy_sep,
diff -r 673648c6fb4b -r e45ad5524f1a src/lib-storage/index/imapc/imapc-list.h
--- a/src/lib-storage/index/imapc/imapc-list.h	Wed Jul 10 05:57:36 2013 +0300
+++ b/src/lib-storage/index/imapc/imapc-list.h	Wed Jul 10 06:05:20 2013 +0300
@@ -9,6 +9,7 @@
 
 struct imapc_mailbox_list {
 	struct mailbox_list list;
+	const struct imapc_settings *set;
 	struct imapc_storage *storage;
 	struct mailbox_list *index_list;
 


More information about the dovecot-cvs mailing list