]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Remove struct doveadm_cmd and related code
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Wed, 9 Jun 2021 22:14:14 +0000 (01:14 +0300)
committeraki.tuomi <aki.tuomi@open-xchange.com>
Wed, 21 Jul 2021 09:03:09 +0000 (09:03 +0000)
src/doveadm/client-connection-tcp.c
src/doveadm/doveadm-cmd.c
src/doveadm/doveadm-cmd.h
src/doveadm/doveadm.c
src/doveadm/doveadm.h
src/doveadm/main.c

index 5e0be2e43926277460944473f247e53c3c510028..f5da7b4d222620e665c2a22e4d88575a012a5eb7 100644 (file)
@@ -189,16 +189,6 @@ doveadm_cmd_server_run_ver2(struct client_connection_tcp *conn,
        doveadm_cmd_server_post(conn, cctx->cmd->name);
 }
 
-static void
-doveadm_cmd_server_run(struct client_connection_tcp *conn,
-                      int argc, const char *const argv[],
-                      const struct doveadm_cmd *cmd)
-{
-       i_getopt_reset();
-       cmd->cmd(argc, (char **)argv);
-       doveadm_cmd_server_post(conn, cmd->name);
-}
-
 static int
 doveadm_mail_cmd_server_parse(const struct doveadm_mail_cmd *cmd,
                              const struct doveadm_settings *set,
@@ -318,7 +308,6 @@ static int doveadm_cmd_handle(struct client_connection_tcp *conn,
                              struct doveadm_cmd_context *cctx)
 {
        struct ioloop *prev_ioloop = current_ioloop;
-       const struct doveadm_cmd *cmd = NULL;
        const struct doveadm_mail_cmd *mail_cmd;
        struct doveadm_mail_cmd_context *mctx = NULL;
        const struct doveadm_cmd_ver2 *cmd_ver2;
@@ -326,11 +315,8 @@ static int doveadm_cmd_handle(struct client_connection_tcp *conn,
        if ((cmd_ver2 = doveadm_cmd_find_with_args_ver2(cmd_name, &argc, &argv)) == NULL) {
                mail_cmd = doveadm_mail_cmd_find(cmd_name);
                if (mail_cmd == NULL) {
-                       cmd = doveadm_cmd_find_with_args(cmd_name, &argc, &argv);
-                       if (cmd == NULL) {
-                               i_error("doveadm: Client sent unknown command: %s", cmd_name);
-                               return -1;
-                       }
+                       i_error("doveadm: Client sent unknown command: %s", cmd_name);
+                       return -1;
                } else {
                        if (doveadm_mail_cmd_server_parse(mail_cmd, conn->conn.set,
                                                          argc, argv,
@@ -351,8 +337,6 @@ static int doveadm_cmd_handle(struct client_connection_tcp *conn,
 
        if (cmd_ver2 != NULL)
                doveadm_cmd_server_run_ver2(conn, argc, argv, cctx);
-       else if (cmd != NULL)
-               doveadm_cmd_server_run(conn, argc, argv, cmd);
        else {
                i_assert(mctx != NULL);
                doveadm_mail_cmd_server_run(conn, mctx);
index 08c96515635aa4cdcd5ea5624b2f5c3dc8565643..2cfc2220eae94634e4f3ed8ce8ce7768e3e8470d 100644 (file)
@@ -44,7 +44,6 @@ static const struct exit_code_str {
        { DOVEADM_EX_NOTFOUND, "NOTFOUND" }
 };
 
-ARRAY_TYPE(doveadm_cmd) doveadm_cmds;
 ARRAY_TYPE(doveadm_cmd_ver2) doveadm_cmds_ver2;
 ARRAY_DEFINE_TYPE(getopt_option_array, struct option);
 
@@ -68,11 +67,6 @@ int doveadm_str_to_exit_code(const char *reason)
        return DOVEADM_EX_UNKNOWN;
 }
 
-void doveadm_register_cmd(const struct doveadm_cmd *cmd)
-{
-       array_push_back(&doveadm_cmds, cmd);
-}
-
 void doveadm_cmd_register_ver2(struct doveadm_cmd_ver2 *cmd)
 {
        if (cmd->cmd == NULL) {
@@ -141,69 +135,10 @@ doveadm_cmd_find_with_args_ver2(const char *cmd_name, int *argc,
        return NULL;
 }
 
-static bool
-doveadm_cmd_find_multi_word(const char *cmdname, int *_argc,
-                           const char *const *_argv[])
-{
-       int argc = *_argc;
-       const char *const *argv = *_argv;
-       size_t len;
-
-       if (argc < 2)
-               return FALSE;
-
-       len = strlen(argv[1]);
-       if (!str_begins(cmdname, argv[1]))
-               return FALSE;
-
-       argc--; argv++;
-       if (cmdname[len] == ' ') {
-               /* more args */
-               if (!doveadm_cmd_find_multi_word(cmdname + len + 1,
-                                                &argc, &argv))
-                       return FALSE;
-       } else {
-               if (cmdname[len] != '\0')
-                       return FALSE;
-       }
-
-       *_argc = argc;
-       *_argv = argv;
-       return TRUE;
-}
-
-const struct doveadm_cmd *
-doveadm_cmd_find_with_args(const char *cmd_name, int *argc,
-                          const char *const *argv[])
-{
-       const struct doveadm_cmd *cmd;
-       size_t cmd_name_len;
-
-       i_assert(*argc > 0);
-
-       cmd_name_len = strlen(cmd_name);
-       array_foreach(&doveadm_cmds, cmd) {
-               if (strcmp(cmd->name, cmd_name) == 0)
-                       return cmd;
-
-               /* see if it matches a multi-word command */
-               if (strncmp(cmd->name, cmd_name, cmd_name_len) == 0 &&
-                   cmd->name[cmd_name_len] == ' ') {
-                       const char *subcmd_name = cmd->name + cmd_name_len + 1;
-
-                       if (doveadm_cmd_find_multi_word(subcmd_name,
-                                                       argc, argv))
-                               return cmd;
-               }
-       }
-       return NULL;
-}
-
 void doveadm_cmds_init(void)
 {
        unsigned int i;
 
-       i_array_init(&doveadm_cmds, 32);
        i_array_init(&doveadm_cmds_ver2, 2);
 
        for (i = 0; i < N_ELEMENTS(doveadm_commands_ver2); i++)
@@ -220,7 +155,6 @@ void doveadm_cmds_init(void)
 
 void doveadm_cmds_deinit(void)
 {
-       array_free(&doveadm_cmds);
        array_free(&doveadm_cmds_ver2);
 }
 
index cc3ad45d4ee53dddccda0022166f268de2846172..a53d340d5af73a72d81ee01ecd4a78bb4c065d17 100644 (file)
@@ -59,12 +59,6 @@ ARRAY_DEFINE_TYPE(doveadm_cmd_param_arr_t, struct doveadm_cmd_param);
 
 typedef void doveadm_command_ver2_t(struct doveadm_cmd_context *cctx);
 
-struct doveadm_cmd {
-       doveadm_command_t *cmd;
-       const char *name;
-       const char *short_usage;
-};
-
 struct doveadm_cmd_ver2 {
        doveadm_command_ver2_t *cmd;
        struct doveadm_mail_cmd_context *(*mail_cmd)(void);
@@ -89,18 +83,9 @@ struct doveadm_cmd_context {
        struct ostream *output;
 };
 
-ARRAY_DEFINE_TYPE(doveadm_cmd, struct doveadm_cmd);
-extern ARRAY_TYPE(doveadm_cmd) doveadm_cmds;
-
 ARRAY_DEFINE_TYPE(doveadm_cmd_ver2, struct doveadm_cmd_ver2);
 extern ARRAY_TYPE(doveadm_cmd_ver2) doveadm_cmds_ver2;
 
-void doveadm_register_cmd(const struct doveadm_cmd *cmd);
-
-const struct doveadm_cmd *
-doveadm_cmd_find_with_args(const char *cmd_name, int *argc,
-                          const char *const *argv[]);
-
 void doveadm_register_auth_commands(void);
 void doveadm_register_auth_server_commands(void);
 void doveadm_register_director_commands(void);
index 2f4408afd1b69ee987edd5966ee7fe3c7d6a798d..581ce4b7eb7850e4a6367cb343e70ea256adcf92 100644 (file)
@@ -114,7 +114,6 @@ static void ATTR_NORETURN
 usage_to(FILE *out, const char *prefix)
 {
        const struct doveadm_cmd_ver2 *cmd2;
-       const struct doveadm_cmd *cmd;
        string_t *str = t_str_new(1024);
 
        fprintf(out, "usage: doveadm [-Dv] [-f <formatter>] ");
@@ -122,8 +121,6 @@ usage_to(FILE *out, const char *prefix)
                fprintf(out, "%s ", prefix);
        fprintf(out, "<command> [<args>]\n");
 
-       array_foreach(&doveadm_cmds, cmd)
-               str_printfa(str, "%s\t%s\n", cmd->name, cmd->short_usage);
        array_foreach(&doveadm_cmds_ver2, cmd2)
                str_printfa(str, "%s\t%s\n", cmd2->name, cmd2->usage);
 
@@ -138,18 +135,6 @@ void usage(void)
        usage_to(stderr, "");
 }
 
-static void ATTR_NORETURN
-help_to(const struct doveadm_cmd *cmd, FILE *out)
-{
-       fprintf(out, "doveadm %s %s\n", cmd->name, cmd->short_usage);
-       lib_exit(EX_USAGE);
-}
-
-void help(const struct doveadm_cmd *cmd)
-{
-       help_to(cmd, stdout);
-}
-
 static void ATTR_NORETURN
 help_to_ver2(const struct doveadm_cmd_ver2 *cmd, FILE *out)
 {
@@ -242,29 +227,11 @@ static void cmd_exec(struct doveadm_cmd_context *cctx)
        execv_const(argv[0], argv);
 }
 
-static bool doveadm_try_run(const char *cmd_name, int argc,
-                           const char *const argv[])
-{
-       const struct doveadm_cmd *cmd;
-
-       cmd = doveadm_cmd_find_with_args(cmd_name, &argc, &argv);
-       if (cmd == NULL)
-               return FALSE;
-       cmd->cmd(argc, (char **)argv);
-       return TRUE;
-}
-
 static bool doveadm_has_subcommands(const char *cmd_name)
 {
        const struct doveadm_cmd_ver2 *cmd2;
-       const struct doveadm_cmd *cmd;
        size_t len = strlen(cmd_name);
 
-       array_foreach(&doveadm_cmds, cmd) {
-               if (strncmp(cmd->name, cmd_name, len) == 0 &&
-                   cmd->name[len] == ' ')
-                       return TRUE;
-       }
        array_foreach(&doveadm_cmds_ver2, cmd2) {
                if (strncmp(cmd2->name, cmd_name, len) == 0 &&
                    cmd2->name[len] == ' ')
@@ -394,7 +361,6 @@ int main(int argc, char *argv[])
        cctx.username = getenv("USER");
 
        if (!doveadm_cmd_try_run_ver2(cmd_name, argc, (const char**)argv, &cctx) &&
-           !doveadm_try_run(cmd_name, argc, (const char **)argv) &&
            !doveadm_mail_try_run(cmd_name, argc, argv)) {
                if (doveadm_has_subcommands(cmd_name))
                        usage_to(stdout, cmd_name);
index 428a291bc3f386c722147fe37b54d2db23df4961..d4f74e555f8cd00b6ae52b25cf86f912d3095fd1 100644 (file)
@@ -25,7 +25,6 @@ extern bool doveadm_verbose_proctitle;
 extern int doveadm_exit_code;
 
 void usage(void) ATTR_NORETURN;
-void help(const struct doveadm_cmd *cmd) ATTR_NORETURN;
 void help_ver2(const struct doveadm_cmd_ver2 *cmd) ATTR_NORETURN;
 void doveadm_master_send_signal(int signo);
 
index b35dccc545bca672986e96f1aaee0913226cc758..b5641f1056bf14b9aab3e0219a67e40d6530047e 100644 (file)
@@ -46,12 +46,6 @@ static void client_connected(struct master_service_connection *conn)
        }
 }
 
-void help(const struct doveadm_cmd *cmd)
-{
-       i_fatal("Client sent invalid command. Usage: %s %s",
-               cmd->name, cmd->short_usage);
-}
-
 void help_ver2(const struct doveadm_cmd_ver2 *cmd)
 {
        i_fatal("Client sent invalid command. Usage: %s %s",