changeset 5539:7d828d1b39ab HEAD

Added mailbox_list to struct mail_namespace. Added a few functions to get private data out of mailbox_list.
author Timo Sirainen <tss@iki.fi>
date Wed, 11 Apr 2007 13:55:34 +0300
parents b3dd56440595
children 1216c0ebe492
files src/lib-storage/index/cydir/cydir-storage.c src/lib-storage/index/dbox/dbox-storage.c src/lib-storage/index/maildir/maildir-storage.c src/lib-storage/index/mbox/mbox-storage.c src/lib-storage/mail-namespace.c src/lib-storage/mail-namespace.h src/lib-storage/mailbox-list-private.h src/lib-storage/mailbox-list.c src/lib-storage/mailbox-list.h
diffstat 9 files changed, 25 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/cydir/cydir-storage.c	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/index/cydir/cydir-storage.c	Wed Apr 11 13:55:34 2007 +0300
@@ -124,7 +124,7 @@
 		}
 	}
 
-	if (mailbox_list_init("fs", &list_set,
+	if (mailbox_list_init(_storage->ns, "fs", &list_set,
 			      mail_storage_get_list_flags(_storage->flags),
 			      &_storage->list, &error) < 0) {
 		i_error("cydir fs: %s", error);
--- a/src/lib-storage/index/dbox/dbox-storage.c	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/index/dbox/dbox-storage.c	Wed Apr 11 13:55:34 2007 +0300
@@ -205,7 +205,7 @@
 		}
 	}
 
-	if (mailbox_list_init("fs", &list_set,
+	if (mailbox_list_init(_storage->ns, "fs", &list_set,
 			      mail_storage_get_list_flags(_storage->flags),
 			      &list, &error) < 0) {
 		i_error("dbox fs: %s", error);
--- a/src/lib-storage/index/maildir/maildir-storage.c	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/index/maildir/maildir-storage.c	Wed Apr 11 13:55:34 2007 +0300
@@ -250,7 +250,7 @@
 		}
 	}
 
-	if (mailbox_list_init(layout, &list_set,
+	if (mailbox_list_init(_storage->ns, layout, &list_set,
 			      mail_storage_get_list_flags(flags),
 			      &list, &error) < 0) {
 		i_error("maildir %s: %s", layout, error);
--- a/src/lib-storage/index/mbox/mbox-storage.c	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/index/mbox/mbox-storage.c	Wed Apr 11 13:55:34 2007 +0300
@@ -425,7 +425,7 @@
 	list_set.mail_storage_flags = &_storage->flags;
 	list_set.lock_method = &_storage->lock_method;
 
-	if (mailbox_list_init(layout, &list_set,
+	if (mailbox_list_init(_storage->ns, layout, &list_set,
 			      mail_storage_get_list_flags(_storage->flags),
 			      &_storage->list, &error) < 0) {
 		i_error("mbox %s: %s", layout, error);
--- a/src/lib-storage/mail-namespace.c	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/mail-namespace.c	Wed Apr 11 13:55:34 2007 +0300
@@ -9,8 +9,9 @@
 
 static void namespace_init_storage(struct mail_namespace *ns)
 {
+	ns->list = mail_storage_get_list(ns->storage);
 	ns->prefix_len = strlen(ns->prefix);
-	ns->real_sep = mail_storage_get_hierarchy_sep(ns->storage);
+	ns->real_sep = mailbox_list_get_hierarchy_sep(ns->list);
 
 	if (ns->sep == '\0')
                 ns->sep = ns->real_sep;
--- a/src/lib-storage/mail-namespace.h	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/mail-namespace.h	Wed Apr 11 13:55:34 2007 +0300
@@ -17,6 +17,8 @@
 	size_t prefix_len;
 
 	bool inbox, hidden, subscriptions;
+	struct mailbox_list *list;
+	/* FIXME: we should support multiple storages in one namespace */
 	struct mail_storage *storage;
 };
 
--- a/src/lib-storage/mailbox-list-private.h	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/mailbox-list-private.h	Wed Apr 11 13:55:34 2007 +0300
@@ -69,6 +69,7 @@
 
 /* private: */
 	pool_t pool;
+	struct mail_namespace *ns;
 	struct mailbox_list_settings set;
 	enum mailbox_list_flags flags;
 
--- a/src/lib-storage/mailbox-list.c	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/mailbox-list.c	Wed Apr 11 13:55:34 2007 +0300
@@ -74,7 +74,7 @@
 		array_free(&mailbox_list_drivers);
 }
 
-int mailbox_list_init(const char *driver,
+int mailbox_list_init(struct mail_namespace *ns, const char *driver,
 		      const struct mailbox_list_settings *set,
 		      enum mailbox_list_flags flags,
 		      struct mailbox_list **list_r, const char **error_r)
@@ -95,6 +95,7 @@
 	class_p = array_idx(&mailbox_list_drivers, idx);
 	list = (*class_p)->v.alloc();
 
+	list->ns = ns;
 	list->flags = flags;
 
 	/* copy settings */
@@ -164,6 +165,16 @@
 	return list->hierarchy_sep;
 }
 
+enum mailbox_list_flags mailbox_list_get_flags(struct mailbox_list *list)
+{
+	return list->flags;
+}
+
+struct mail_namespace *mailbox_list_get_namespace(struct mailbox_list *list)
+{
+	return list->ns;
+}
+
 bool mailbox_list_is_valid_mask(struct mailbox_list *list, const char *mask)
 {
 	return list->v.is_valid_mask(list, mask);
--- a/src/lib-storage/mailbox-list.h	Wed Apr 11 13:32:02 2007 +0300
+++ b/src/lib-storage/mailbox-list.h	Wed Apr 11 13:55:34 2007 +0300
@@ -1,6 +1,7 @@
 #ifndef __MAILBOX_LIST_H
 #define __MAILBOX_LIST_H
 
+struct mail_namespace;
 struct mailbox_list;
 struct mailbox_list_iterate_context;
 
@@ -99,7 +100,7 @@
 void mailbox_list_unregister(const struct mailbox_list *list);
 
 /* Returns 0 if ok, -1 if initialization failed. */
-int mailbox_list_init(const char *driver,
+int mailbox_list_init(struct mail_namespace *ns, const char *driver,
 		      const struct mailbox_list_settings *set,
 		      enum mailbox_list_flags flags,
 		      struct mailbox_list **list_r, const char **error_r);
@@ -107,6 +108,8 @@
 
 const char *mailbox_list_get_driver_name(struct mailbox_list *list);
 char mailbox_list_get_hierarchy_sep(struct mailbox_list *list);
+enum mailbox_list_flags mailbox_list_get_flags(struct mailbox_list *list);
+struct mail_namespace *mailbox_list_get_namespace(struct mailbox_list *list);
 
 /* Returns TRUE if the name doesn't contain any invalid characters.
    The create name check can be more strict. */