Mercurial > dovecot > core-2.2
changeset 21316:72af7bbcb8e2
lib-storage: Make dovecot.list.index's filename configurable.
This is useful when there are multiple namespaces pointing to the same mail
root directory. For example mdbox with lazy-expunge:
namespace {
prefix = Expunged/
location = mdbox:~/mdbox:MAILBOXDIR=expunged:LISTINDEX=expunged.list.index
..
}
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 15 Dec 2016 18:15:21 +0200 |
parents | 56569adc701b |
children | 1892618b85f9 |
files | src/lib-storage/list/mailbox-list-index.c src/lib-storage/list/mailbox-list-index.h src/lib-storage/mailbox-list-private.h src/lib-storage/mailbox-list.c src/lib-storage/mailbox-list.h |
diffstat | 5 files changed, 10 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-storage/list/mailbox-list-index.c Thu Dec 15 18:13:34 2016 +0200 +++ b/src/lib-storage/list/mailbox-list-index.c Thu Dec 15 18:15:21 2016 +0200 @@ -783,9 +783,10 @@ } i_assert(ilist->has_backing_store || dir != NULL); + i_assert(list->set.list_index_fname != NULL); ilist->path = dir == NULL ? "(in-memory mailbox list index)" : - p_strdup_printf(list->pool, "%s/"MAILBOX_LIST_INDEX_PREFIX, dir); - ilist->index = mail_index_alloc(dir, MAILBOX_LIST_INDEX_PREFIX); + p_strdup_printf(list->pool, "%s/%s", dir, list->set.list_index_fname); + ilist->index = mail_index_alloc(dir, list->set.list_index_fname); ilist->ext_id = mail_index_ext_register(ilist->index, "list", sizeof(struct mailbox_list_index_header),
--- a/src/lib-storage/list/mailbox-list-index.h Thu Dec 15 18:13:34 2016 +0200 +++ b/src/lib-storage/list/mailbox-list-index.h Thu Dec 15 18:15:21 2016 +0200 @@ -30,7 +30,6 @@ #include <sys/time.h> #define MAILBOX_LIST_INDEX_HIERARHCY_SEP '~' -#define MAILBOX_LIST_INDEX_PREFIX "dovecot.list.index" #define INDEX_LIST_CONTEXT(obj) \ MODULE_CONTEXT(obj, mailbox_list_index_module)
--- a/src/lib-storage/mailbox-list-private.h Thu Dec 15 18:13:34 2016 +0200 +++ b/src/lib-storage/mailbox-list-private.h Thu Dec 15 18:15:21 2016 +0200 @@ -14,6 +14,7 @@ #define MAILBOX_LIST_NAME_INDEX "index" #define MAILBOX_LIST_NAME_NONE "none" +#define MAILBOX_LIST_INDEX_DEFAULT_PREFIX "dovecot.list.index" #define MAILBOX_LOG_FILE_NAME "dovecot.mailbox.log" #define T_MAILBOX_LIST_ERR_NOT_FOUND(list, name) \
--- a/src/lib-storage/mailbox-list.c Thu Dec 15 18:13:34 2016 +0200 +++ b/src/lib-storage/mailbox-list.c Thu Dec 15 18:15:21 2016 +0200 @@ -163,6 +163,8 @@ list->set.inbox_path = p_strdup(list->pool, set->inbox_path); list->set.subscription_fname = p_strdup(list->pool, set->subscription_fname); + list->set.list_index_fname = + p_strdup(list->pool, set->list_index_fname); list->set.maildir_name = p_strdup(list->pool, set->maildir_name); list->set.mailbox_dir_name = @@ -266,6 +268,7 @@ memset(set_r, 0, sizeof(*set_r)); set_r->mailbox_dir_name = ""; set_r->maildir_name = ""; + set_r->list_index_fname = MAILBOX_LIST_INDEX_DEFAULT_PREFIX; } static int @@ -333,6 +336,8 @@ dest = &set_r->maildir_name; else if (strcmp(key, "MAILBOXDIR") == 0) dest = &set_r->mailbox_dir_name; + else if (strcmp(key, "LISTINDEX") == 0) + dest = &set_r->list_index_fname; else if (strcmp(key, "FULLDIRNAME") == 0) { set_r->index_control_use_maildir_name = TRUE; dest = &set_r->maildir_name;
--- a/src/lib-storage/mailbox-list.h Thu Dec 15 18:13:34 2016 +0200 +++ b/src/lib-storage/mailbox-list.h Thu Dec 15 18:15:21 2016 +0200 @@ -101,6 +101,7 @@ const char *inbox_path; const char *subscription_fname; + const char *list_index_fname; /* If non-empty, it means that mails exist in a maildir_name subdirectory. eg. if you have a directory containing directories: