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,
struct mailbox_list fs_mailbox_list = {
MEMBER(name) "fs",
MEMBER(hierarchy_sep) '/',
+ MEMBER(props) 0,
MEMBER(mailbox_name_max_length) PATH_MAX,
{
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,
{
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,
{
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;
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;
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,