dovecot-1.2: Fixed dbox to work with Maildir++ layout.

dovecot at dovecot.org dovecot at dovecot.org
Sat Nov 15 18:43:58 EET 2008


details:   http://hg.dovecot.org/dovecot-1.2/rev/155700456194
changeset: 8399:155700456194
user:      Timo Sirainen <tss at iki.fi>
date:      Sat Nov 15 18:43:54 2008 +0200
description:
Fixed dbox to work with Maildir++ layout.

diffstat:

6 files changed, 17 insertions(+), 1 deletion(-)
src/lib-storage/index/dbox/dbox-storage.c   |    5 +++++
src/lib-storage/list/mailbox-list-fs.c      |    1 +
src/lib-storage/list/mailbox-list-maildir.c |    2 ++
src/lib-storage/mailbox-list-private.h      |    1 +
src/lib-storage/mailbox-list.c              |    4 +++-
src/lib-storage/mailbox-list.h              |    5 +++++

diffs (85 lines):

diff -r d331b8fc8ba8 -r 155700456194 src/lib-storage/index/dbox/dbox-storage.c
--- a/src/lib-storage/index/dbox/dbox-storage.c	Sat Nov 15 18:42:50 2008 +0200
+++ b/src/lib-storage/index/dbox/dbox-storage.c	Sat Nov 15 18:43:54 2008 +0200
@@ -462,6 +462,11 @@ dbox_list_delete_mailbox(struct mailbox_
 		if (alt_path != NULL) {
 			if (dbox_delete_nonrecursive(list, alt_path, name) < 0)
 				return -1;
+		}
+		if (*list->set.maildir_name == '\0') {
+			/* everything was in the one directory that was
+			   already deleted succesfully. */
+			return 0;
 		}
 		/* try to delete the directory also */
 		deleted = TRUE;
diff -r d331b8fc8ba8 -r 155700456194 src/lib-storage/list/mailbox-list-fs.c
--- a/src/lib-storage/list/mailbox-list-fs.c	Sat Nov 15 18:42:50 2008 +0200
+++ b/src/lib-storage/list/mailbox-list-fs.c	Sat Nov 15 18:43:54 2008 +0200
@@ -356,6 +356,7 @@ struct mailbox_list fs_mailbox_list = {
 struct mailbox_list fs_mailbox_list = {
 	MEMBER(name) "fs",
 	MEMBER(hierarchy_sep) '/',
+	MEMBER(props) 0,
 	MEMBER(mailbox_name_max_length) PATH_MAX,
 
 	{
diff -r d331b8fc8ba8 -r 155700456194 src/lib-storage/list/mailbox-list-maildir.c
--- a/src/lib-storage/list/mailbox-list-maildir.c	Sat Nov 15 18:42:50 2008 +0200
+++ b/src/lib-storage/list/mailbox-list-maildir.c	Sat Nov 15 18:43:54 2008 +0200
@@ -438,6 +438,7 @@ struct mailbox_list maildir_mailbox_list
 struct mailbox_list maildir_mailbox_list = {
 	MEMBER(name) MAILBOX_LIST_NAME_MAILDIRPLUSPLUS,
 	MEMBER(hierarchy_sep) '.',
+	MEMBER(props) MAILBOX_LIST_PROP_NO_MAILDIR_NAME,
 	MEMBER(mailbox_name_max_length) PATH_MAX,
 
 	{
@@ -464,6 +465,7 @@ struct mailbox_list imapdir_mailbox_list
 struct mailbox_list imapdir_mailbox_list = {
 	MEMBER(name) MAILBOX_LIST_NAME_IMAPDIR,
 	MEMBER(hierarchy_sep) '.',
+	MEMBER(props) MAILBOX_LIST_PROP_NO_MAILDIR_NAME,
 	MEMBER(mailbox_name_max_length) PATH_MAX,
 
 	{
diff -r d331b8fc8ba8 -r 155700456194 src/lib-storage/mailbox-list-private.h
--- a/src/lib-storage/mailbox-list-private.h	Sat Nov 15 18:42:50 2008 +0200
+++ b/src/lib-storage/mailbox-list-private.h	Sat Nov 15 18:43:54 2008 +0200
@@ -67,6 +67,7 @@ struct mailbox_list {
 struct mailbox_list {
 	const char *name;
 	char hierarchy_sep;
+	enum mailbox_list_properties props;
 	size_t mailbox_name_max_length;
 
 	struct mailbox_list_vfuncs v;
diff -r d331b8fc8ba8 -r 155700456194 src/lib-storage/mailbox-list.c
--- a/src/lib-storage/mailbox-list.c	Sat Nov 15 18:42:50 2008 +0200
+++ b/src/lib-storage/mailbox-list.c	Sat Nov 15 18:43:54 2008 +0200
@@ -213,7 +213,9 @@ void mailbox_list_init(struct mailbox_li
 	list->set.inbox_path = p_strdup(list->pool, set->inbox_path);
 	list->set.subscription_fname =
 		p_strdup(list->pool, set->subscription_fname);
-	list->set.maildir_name = p_strdup(list->pool, set->maildir_name);
+	list->set.maildir_name =
+		(list->props & MAILBOX_LIST_PROP_NO_MAILDIR_NAME) != 0 ? "" :
+		p_strdup(list->pool, set->maildir_name);
 
 	list->set.mail_storage_flags = set->mail_storage_flags;
 	list->set.lock_method = set->lock_method;
diff -r d331b8fc8ba8 -r 155700456194 src/lib-storage/mailbox-list.h
--- a/src/lib-storage/mailbox-list.h	Sat Nov 15 18:42:50 2008 +0200
+++ b/src/lib-storage/mailbox-list.h	Sat Nov 15 18:43:54 2008 +0200
@@ -6,6 +6,11 @@ struct mail_namespace;
 struct mail_namespace;
 struct mailbox_list;
 struct mailbox_list_iterate_context;
+
+enum mailbox_list_properties {
+	/* maildir_name must always be empty */
+	MAILBOX_LIST_PROP_NO_MAILDIR_NAME       = 0x01
+};
 
 enum mailbox_list_flags {
 	/* Print debugging information while initializing the driver */


More information about the dovecot-cvs mailing list