]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
dsync: Moved all doveadm-specific code to doveadm-dsync.c
authorTimo Sirainen <tss@iki.fi>
Mon, 15 Sep 2014 15:02:02 +0000 (18:02 +0300)
committerTimo Sirainen <tss@iki.fi>
Mon, 15 Sep 2014 15:02:02 +0000 (18:02 +0300)
src/doveadm/dsync/doveadm-dsync.c
src/doveadm/dsync/dsync-brain-mailbox-tree.c
src/doveadm/dsync/dsync-brain-private.h
src/doveadm/dsync/dsync-brain.c
src/doveadm/dsync/dsync-brain.h
src/doveadm/dsync/dsync-mailbox-tree.c

index 86703f9e1439b240325f68dfa1cd43843e1f4f44..772919a7dcffe5de7c8be58f6f2e4dea28066dd0 100644 (file)
@@ -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);
index a415ac24d8fcc2f5f954dc4220ae57c4249202a2..ab714b31efe156d69e1bb6222dc005cacd88c9b6 100644 (file)
@@ -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;
index 5ae0d7782d95f8952fdc0a506b63b64f86ce35f1..f01267becd27fea5bdf85f2f9b010f3e6d5cba6e 100644 (file)
@@ -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;
index 56776b8142cf628ecb164cbfc7df2dc99eb4bb40..3db4b5f4280575ba5dbc4e0dda148b3af931a39b 100644 (file)
@@ -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);
index c89fefdf6d52503003d4fb2ca4687a55b77a62c5..3326eaa6c69cc37f461190ad7f7081bf87ffd013 100644 (file)
@@ -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;
index ed83fba57f19fd2063cc352fd69ce7ea75def310..51749591724a40e6e1da7f44fff876a7cf5331f2 100644 (file)
@@ -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"