]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Remove obsolete dsync-operation for doveadm command
authorKarl Fleischmann <karl.fleischmann@open-xchange.com>
Thu, 7 Apr 2022 13:17:33 +0000 (16:17 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Tue, 12 Apr 2022 17:34:37 +0000 (17:34 +0000)
As there is no way anymore to call doveadm as dsync this behavior can be
removed fully.

src/doveadm/doveadm-dsync.c
src/doveadm/doveadm-dsync.h
src/doveadm/doveadm.c

index fbb1ce8d859ec93e62b055132b502f7db1987372..102d19bed1c6a26ba2903e5a0aa2c04463af2e58 100644 (file)
@@ -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();
-}
index c4bf08bd168bfb179449c181ead54b28fea20bfc..7d17b71ae9c185af805214fcdd64f07abffe123d 100644 (file)
@@ -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
index 5ffc45f5e60356d39e9d0e9dc31fe26d00cc66d9..15c2d0c5afeb88df5eaad5816158d0ae58bccdf2 100644 (file)
@@ -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. */