From: Timo Sirainen Date: Mon, 15 Sep 2014 15:02:02 +0000 (+0300) Subject: dsync: Moved all doveadm-specific code to doveadm-dsync.c X-Git-Tag: 2.2.14.rc1~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0219a05495ca78d0ccc2a4d5dcfcf17aa859481f;p=thirdparty%2Fdovecot%2Fcore.git dsync: Moved all doveadm-specific code to doveadm-dsync.c --- diff --git a/src/doveadm/dsync/doveadm-dsync.c b/src/doveadm/dsync/doveadm-dsync.c index 86703f9e14..772919a7dc 100644 --- a/src/doveadm/dsync/doveadm-dsync.c +++ b/src/doveadm/dsync/doveadm-dsync.c @@ -541,6 +541,7 @@ cmd_dsync_run(struct doveadm_mail_cmd_context *_ctx, struct mail_user *user) 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); diff --git a/src/doveadm/dsync/dsync-brain-mailbox-tree.c b/src/doveadm/dsync/dsync-brain-mailbox-tree.c index a415ac24d8..ab714b31ef 100644 --- a/src/doveadm/dsync/dsync-brain-mailbox-tree.c +++ b/src/doveadm/dsync/dsync-brain-mailbox-tree.c @@ -3,7 +3,6 @@ #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" @@ -47,12 +46,10 @@ void dsync_brain_mailbox_trees_init(struct dsync_brain *brain) 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) { @@ -238,7 +235,7 @@ dsync_get_mailbox_name(struct dsync_brain *brain, const char *const *name_parts, 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); @@ -254,13 +251,13 @@ dsync_get_mailbox_name(struct dsync_brain *brain, const char *const *name_parts, 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; diff --git a/src/doveadm/dsync/dsync-brain-private.h b/src/doveadm/dsync/dsync-brain-private.h index 5ae0d7782d..f01267becd 100644 --- a/src/doveadm/dsync/dsync-brain-private.h +++ b/src/doveadm/dsync/dsync-brain-private.h @@ -55,6 +55,7 @@ struct dsync_brain { guid_128_t sync_box_guid; const char *const *exclude_mailboxes; enum dsync_brain_sync_type sync_type; + char alt_char; unsigned int lock_timeout; int lock_fd; diff --git a/src/doveadm/dsync/dsync-brain.c b/src/doveadm/dsync/dsync-brain.c index 56776b8142..3db4b5f428 100644 --- a/src/doveadm/dsync/dsync-brain.c +++ b/src/doveadm/dsync/dsync-brain.c @@ -171,6 +171,8 @@ dsync_brain_master_init(struct mail_user *user, struct dsync_ibc *ibc, } 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); diff --git a/src/doveadm/dsync/dsync-brain.h b/src/doveadm/dsync/dsync-brain.h index c89fefdf6d..3326eaa6c6 100644 --- a/src/doveadm/dsync/dsync-brain.h +++ b/src/doveadm/dsync/dsync-brain.h @@ -48,6 +48,9 @@ struct dsync_brain_settings { /* 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; diff --git a/src/doveadm/dsync/dsync-mailbox-tree.c b/src/doveadm/dsync/dsync-mailbox-tree.c index ed83fba57f..5174959172 100644 --- a/src/doveadm/dsync/dsync-mailbox-tree.c +++ b/src/doveadm/dsync/dsync-mailbox-tree.c @@ -4,7 +4,6 @@ #include "array.h" #include "hash.h" #include "str.h" -#include "doveadm-settings.h" #include "mailbox-list-private.h" #include "dsync-mailbox-tree-private.h"