memcpy(set.sync_box_guid, ctx->mailbox_guid, sizeof(set.sync_box_guid));
set.lock_timeout_secs = ctx->lock_timeout;
set.state = ctx->state_input;
+ set.mailbox_alt_char = doveadm_settings->dsync_alt_char[0];
if (array_count(&ctx->exclude_mailboxes) > 0) {
/* array is NULL-terminated in init() */
set.exclude_mailboxes = array_idx(&ctx->exclude_mailboxes, 0);
#include "lib.h"
#include "str.h"
#include "mail-namespace.h"
-#include "doveadm-settings.h"
#include "dsync-ibc.h"
#include "dsync-mailbox-tree.h"
#include "dsync-brain-private.h"
dsync_brain_check_namespaces(brain);
brain->local_mailbox_tree =
- dsync_mailbox_tree_init(brain->hierarchy_sep,
- doveadm_settings->dsync_alt_char[0]);
+ dsync_mailbox_tree_init(brain->hierarchy_sep, brain->alt_char);
/* we'll convert remote mailbox names to use our own separator */
brain->remote_mailbox_tree =
- dsync_mailbox_tree_init(brain->hierarchy_sep,
- doveadm_settings->dsync_alt_char[0]);
+ dsync_mailbox_tree_init(brain->hierarchy_sep, brain->alt_char);
/* fill the local mailbox tree */
for (ns = brain->user->namespaces; ns != NULL; ns = ns->next) {
struct mail_namespace *ns;
const char *p;
string_t *vname;
- char ns_sep, alt_char = doveadm_settings->dsync_alt_char[0];
+ char ns_sep;
i_assert(*name_parts != NULL);
if (*p != ns_sep)
str_append_c(vname, *p);
else
- str_append_c(vname, alt_char);
+ str_append_c(vname, brain->alt_char);
}
str_append_c(vname, ns_sep);
}
str_truncate(vname, str_len(vname)-1);
- dsync_fix_mailbox_name(ns, vname, alt_char);
+ dsync_fix_mailbox_name(ns, vname, brain->alt_char);
*name_r = str_c(vname);
*ns_r = ns;
return 0;
}
str_delete(sync_ns_str, str_len(sync_ns_str)-1, 1);
}
+ brain->alt_char = set->mailbox_alt_char == '\0' ? '_' :
+ set->mailbox_alt_char;
brain->sync_box = p_strdup(brain->pool, set->sync_box);
brain->exclude_mailboxes = set->exclude_mailboxes == NULL ? NULL :
p_strarray_dup(brain->pool, set->exclude_mailboxes);
/* Exclude these mailboxes from the sync. They can contain '*'
wildcards and be \special-use flags. */
const char *const *exclude_mailboxes;
+ /* Alternative character to use in mailbox names where the original
+ character cannot be used. */
+ char mailbox_alt_char;
/* If non-zero, use dsync lock file for this user */
unsigned int lock_timeout_secs;