const char *root_dir, *p;
size_t len;
- if (list->set.iter_from_index_dir && list->set.keep_noselect &&
+ if (list->set.iter_from_index_dir &&
+ !list->mail_set->mailbox_list_drop_noselect &&
mailbox_list_path_is_index(list, type)) {
/* Don't auto-rmdir parent index directories with ITERINDEX.
Otherwise it'll get us into inconsistent state with a
} else {
ret = fs_list_delete_maildir(list, name);
}
- if (ret == 0 && !list->set.keep_noselect)
+ if (ret == 0 && list->mail_set->mailbox_list_drop_noselect)
mailbox_list_delete_until_root(list, path, MAILBOX_LIST_PATH_TYPE_MAILBOX);
i_assert(ret <= 0);
if (index_list_delete_entry(list, name, TRUE) < 0)
return -1;
}
- if (!_list->set.keep_noselect && ret == 0)
+ if (_list->mail_set->mailbox_list_drop_noselect && ret == 0)
(void)index_list_try_delete_nonexistent_parent(_list, name);
return ret;
ret = mailbox_list_index_sync_end(&sync_ctx, TRUE);
- if (!_oldlist->set.keep_noselect && ret == 0)
+ if (_oldlist->mail_set->mailbox_list_drop_noselect && ret == 0)
(void)index_list_try_delete_nonexistent_parent(_oldlist, oldname);
return ret;
{
if ((info->flags & (MAILBOX_NOSELECT|MAILBOX_NOCHILDREN)) ==
(MAILBOX_NOSELECT|MAILBOX_NOCHILDREN) &&
- !ctx->list->set.keep_noselect) {
+ ctx->list->mail_set->mailbox_list_drop_noselect) {
/* Try to rmdir() all \NoSelect mailbox leafs and
afterwards their parents. */
mailbox_list_delete_mailbox_until_root(ctx->list, storage_name);
DEF(BOOL, mailbox_list_index),
DEF(BOOL, mailbox_list_index_very_dirty_syncs),
DEF(BOOL, mailbox_list_index_include_inbox),
+ DEF(BOOL_HIDDEN, mailbox_list_drop_noselect),
DEF(BOOL_HIDDEN, mailbox_list_validate_fs_names),
DEF(BOOL_HIDDEN, mail_full_filesystem_access),
DEF(BOOL, maildir_stat_dirs),
.mailbox_list_index = TRUE,
.mailbox_list_index_very_dirty_syncs = FALSE,
.mailbox_list_index_include_inbox = FALSE,
+ .mailbox_list_drop_noselect = TRUE,
.mailbox_list_validate_fs_names = TRUE,
.mail_full_filesystem_access = FALSE,
.maildir_stat_dirs = FALSE,
bool mailbox_list_index;
bool mailbox_list_index_very_dirty_syncs;
bool mailbox_list_index_include_inbox;
+ bool mailbox_list_drop_noselect;
bool mailbox_list_validate_fs_names;
bool mail_full_filesystem_access;
bool maildir_stat_dirs;
list->root_permissions.dir_create_mode = (mode_t)-1;
list->root_permissions.file_create_gid = (gid_t)-1;
list->changelog_timestamp = (time_t)-1;
- if (!set->keep_noselect)
+ if (list->mail_set->mailbox_list_drop_noselect)
list->props |= MAILBOX_LIST_PROP_NO_NOSELECT;
/* copy settings */
list->set.index_control_use_maildir_name =
set->index_control_use_maildir_name;
list->set.iter_from_index_dir = set->iter_from_index_dir;
- list->set.keep_noselect = set->keep_noselect;
if (*set->mailbox_dir_name == '\0')
list->set.mailbox_dir_name = "";
} else if (strcmp(key, "ITERINDEX") == 0) {
set_r->iter_from_index_dir = TRUE;
continue;
- } else if (strcmp(key, "KEEP-NOSELECT") == 0) {
- set_r->keep_noselect = TRUE;
- continue;
- } else if (strcmp(key, "NO-NOSELECT") == 0) {
- /* retained only for backward compatibility */
- set_r->keep_noselect = FALSE;
- continue;
} else {
*error_r = t_strdup_printf("Unknown setting: %s", key);
return -1;
faster storage. This could perhaps be made the default at some point,
but for now since it's less tested it's optional. */
bool iter_from_index_dir:1;
- /* Control creation and listing of \NoSelect mailboxes. */
- bool keep_noselect:1;
};
struct mailbox_permissions {