From a73fdf07ebed30da152f33082a561c38a73d9b6d Mon Sep 17 00:00:00 2001 From: Karl Fleischmann Date: Thu, 7 Apr 2022 16:17:33 +0300 Subject: [PATCH] doveadm: Remove obsolete dsync-operation for doveadm command As there is no way anymore to call doveadm as dsync this behavior can be removed fully. --- src/doveadm/doveadm-dsync.c | 146 ------------------------------------ src/doveadm/doveadm-dsync.h | 2 - src/doveadm/doveadm.c | 1 - 3 files changed, 149 deletions(-) diff --git a/src/doveadm/doveadm-dsync.c b/src/doveadm/doveadm-dsync.c index fbb1ce8d85..102d19bed1 100644 --- a/src/doveadm/doveadm-dsync.c +++ b/src/doveadm/doveadm-dsync.c @@ -1452,149 +1452,3 @@ DOVEADM_CMD_PARAM('U', "replicator-notify", CMD_PARAM_BOOL, 0) DOVEADM_CMD_PARAM('\0', "ignore-arg", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; - -void doveadm_dsync_main(int *_argc, char **_argv[]) -{ - int argc = *_argc; - const char *getopt_str; - char **argv = *_argv; - char **new_argv, *mailbox = NULL, *alt_char = NULL, *username = NULL; - char *p, *dup, new_flags[6]; - int max_argc, src, dest, i, j; - bool flag_f = FALSE, flag_R = FALSE, flag_m, flag_u, flag_C, has_arg; - bool dsync_server = FALSE; - - p = strrchr(argv[0], '/'); - if (p == NULL) p = argv[0]; - if (strstr(p, "dsync") == NULL) - return; - - /* @UNSAFE: this is called when the "doveadm" binary is called as - "dsync" (for backwards compatibility) */ - max_argc = argc + 7; - new_argv = t_new(char *, max_argc); - new_argv[0] = argv[0]; - dest = 1; - getopt_str = master_service_getopt_string(); - - /* add global doveadm flags */ - for (src = 1; src < argc; src++) { - if (argv[src][0] != '-') - break; - - flag_m = FALSE; flag_C = FALSE; has_arg = FALSE; flag_u = FALSE; - dup = t_strdup_noconst(argv[src]); - for (i = j = 1; argv[src][i] != '\0'; i++) { - switch (argv[src][i]) { - case 'C': - flag_C = TRUE; - break; - case 'f': - flag_f = TRUE; - break; - case 'R': - flag_R = TRUE; - break; - case 'm': - flag_m = TRUE; - break; - case 'u': - flag_u = TRUE; - break; - default: - p = strchr(getopt_str, argv[src][i]); - if (p != NULL && p[1] == ':') - has_arg = TRUE; - dup[j++] = argv[src][i]; - break; - } - } - if (j > 1) { - dup[j++] = '\0'; - new_argv[dest++] = dup; - if (has_arg && src+1 < argc) - new_argv[dest++] = argv[++src]; - } - if (flag_m) { - if (src+1 == argc) - i_fatal("-m missing parameter"); - mailbox = argv[++src]; - } - if (flag_u) { - if (src+1 == argc) - i_fatal("-u missing parameter"); - username = argv[++src]; - } - if (flag_C) { - if (src+1 == argc) - i_fatal("-C missing parameter"); - alt_char = argv[++src]; - } - } - if (alt_char != NULL) { - new_argv[dest++] = "-o"; - new_argv[dest++] = - p_strconcat(pool_datastack_create(), - "dsync_alt_char=", alt_char, NULL); - } - - /* mirror|backup|server */ - if (src == argc) - i_fatal("Missing mirror or backup parameter"); - if (strcmp(argv[src], "sync") == 0 || - strcmp(argv[src], "dsync-server") == 0) { - /* we're re-executing dsync due to doveconf. - "backup" re-exec detection is later. */ - return; - } - if (strcmp(argv[src], "mirror") == 0) - new_argv[dest] = "sync"; - else if (strcmp(argv[src], "backup") == 0) - new_argv[dest] = "backup"; - else if (strcmp(argv[src], "server") == 0) { - new_argv[dest] = "dsync-server"; - dsync_server = TRUE; - } else - i_fatal("Invalid parameter: %s", argv[src]); - src++; dest++; - - if (src < argc && str_begins_with(argv[src], "-E")) { - /* we're re-executing dsync due to doveconf */ - return; - } - - /* dsync flags */ - new_flags[0] = '-'; - new_flags[1] = 'E'; i = 2; - if (!dsync_server) { - if (flag_f) - new_flags[i++] = 'f'; - if (flag_R) - new_flags[i++] = 'R'; - if (mailbox != NULL) - new_flags[i++] = 'm'; - } - i_assert((unsigned int)i < sizeof(new_flags)); - new_flags[i] = '\0'; - - if (i > 1) { - new_argv[dest++] = strdup(new_flags); - if (mailbox != NULL) - new_argv[dest++] = mailbox; - } - if (username != NULL) { - new_argv[dest++] = "-u"; - new_argv[dest++] = username; - } - - /* rest of the parameters */ - for (; src < argc; src++) - new_argv[dest++] = argv[src]; - i_assert(dest < max_argc); - new_argv[dest] = NULL; - - legacy_dsync = TRUE; - *_argc = dest; - *_argv = new_argv; - i_getopt_reset(); -} diff --git a/src/doveadm/doveadm-dsync.h b/src/doveadm/doveadm-dsync.h index c4bf08bd16..7d17b71ae9 100644 --- a/src/doveadm/doveadm-dsync.h +++ b/src/doveadm/doveadm-dsync.h @@ -5,6 +5,4 @@ extern struct doveadm_cmd_ver2 doveadm_cmd_dsync_mirror; extern struct doveadm_cmd_ver2 doveadm_cmd_dsync_backup; extern struct doveadm_cmd_ver2 doveadm_cmd_dsync_server; -void doveadm_dsync_main(int *_argc, char **_argv[]); - #endif diff --git a/src/doveadm/doveadm.c b/src/doveadm/doveadm.c index 5ffc45f5e6..15c2d0c5af 100644 --- a/src/doveadm/doveadm.c +++ b/src/doveadm/doveadm.c @@ -268,7 +268,6 @@ int main(int argc, char *argv[]) cctx.conn_type = DOVEADM_CONNECTION_TYPE_CLI; i_set_failure_exit_callback(failure_exit_callback); - doveadm_dsync_main(&argc, &argv); /* "+" is GNU extension to stop at the first non-option. others just accept -+ option. */ -- 2.47.3