changeset 8399:155700456194 HEAD

Fixed dbox to work with Maildir++ layout.
author Timo Sirainen <tss@iki.fi>
date Sat, 15 Nov 2008 18:43:54 +0200
parents d331b8fc8ba8
children ce4779b95fc8
files src/lib-storage/index/dbox/dbox-storage.c src/lib-storage/list/mailbox-list-fs.c src/lib-storage/list/mailbox-list-maildir.c src/lib-storage/mailbox-list-private.h src/lib-storage/mailbox-list.c src/lib-storage/mailbox-list.h
diffstat 6 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- 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
@@ -463,6 +463,11 @@
 			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;
 		path = mailbox_list_get_path(list, name,
--- 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 = {
 	MEMBER(name) "fs",
 	MEMBER(hierarchy_sep) '/',
+	MEMBER(props) 0,
 	MEMBER(mailbox_name_max_length) PATH_MAX,
 
 	{
--- 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 = {
 	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 = {
 	MEMBER(name) MAILBOX_LIST_NAME_IMAPDIR,
 	MEMBER(hierarchy_sep) '.',
+	MEMBER(props) MAILBOX_LIST_PROP_NO_MAILDIR_NAME,
 	MEMBER(mailbox_name_max_length) PATH_MAX,
 
 	{
--- 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 {
 	const char *name;
 	char hierarchy_sep;
+	enum mailbox_list_properties props;
 	size_t mailbox_name_max_length;
 
 	struct mailbox_list_vfuncs v;
--- 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 @@
 	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;
--- 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
@@ -7,6 +7,11 @@
 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 */
 	MAILBOX_LIST_FLAG_DEBUG			= 0x01,