diff --git a/src/doveadm/client-connection-http.c b/src/doveadm/client-connection-http.c index 044264def3..e16ad71403 100644 --- a/src/doveadm/client-connection-http.c +++ b/src/doveadm/client-connection-http.c @@ -272,7 +272,6 @@ static void doveadm_http_server_command_execute(struct client_connection_http *conn) { const struct doveadm_cmd_param *cpar; - int rc; /* final preflight check */ if (!doveadm_client_is_allowed_command(conn->client.set, conn->cmd->name)) @@ -303,7 +302,7 @@ doveadm_http_server_command_execute(struct client_connection_http *conn) ioloop = io_loop_create(); lib_signals_reset_ioloop(); doveadm_exit_code = 0; - rc = conn->cmd->cmd(conn->cmd,pargc, cpar); + conn->cmd->cmd(conn->cmd,pargc, cpar); io_loop_set_current(prev_ioloop); lib_signals_reset_ioloop(); @@ -327,7 +326,7 @@ doveadm_http_server_command_execute(struct client_connection_http *conn) o_stream_nsend_str(conn->client.output,","); } - if (rc != 0 || doveadm_exit_code != 0) { + if (doveadm_exit_code != 0) { if (doveadm_exit_code == 0 || doveadm_exit_code == EX_TEMPFAIL) i_error("doveadm(%s): Command %s failed", i_stream_get_name(conn->client.input), conn->cmd->name); doveadm_http_server_json_error(conn, "exitCode"); diff --git a/src/doveadm/doveadm-cmd.c b/src/doveadm/doveadm-cmd.c index 462d8d93a1..507cf4653e 100644 --- a/src/doveadm/doveadm-cmd.c +++ b/src/doveadm/doveadm-cmd.c @@ -297,7 +297,7 @@ doveadm_cmd_params_to_argv(const char *name, int pargc, const struct doveadm_cmd array_append_zero(argv); } -int +void doveadm_cmd_ver2_to_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, int argc, const struct doveadm_cmd_param* param) { @@ -312,8 +312,6 @@ doveadm_cmd_ver2_to_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, pargv = array_get_modifiable(&nargv, &pargc); i_getopt_reset(); cmd->old_cmd(pargc-1, (char**)pargv); - - return 0; } static void @@ -454,7 +452,6 @@ int doveadm_cmd_run_ver2(const struct doveadm_cmd_ver2 *cmd, int argc, const cha param = array_get_modifiable(&pargv, &pargc); - // FIXME: Unsure what do to with return value cmd->cmd(cmd, pargc, param); doveadm_cmd_params_clean(&pargv); diff --git a/src/doveadm/doveadm-cmd.h b/src/doveadm/doveadm-cmd.h index 9c589c7da6..c49e901a78 100644 --- a/src/doveadm/doveadm-cmd.h +++ b/src/doveadm/doveadm-cmd.h @@ -45,7 +45,7 @@ struct doveadm_cmd_param { }; ARRAY_DEFINE_TYPE(doveadm_cmd_param_arr_t, struct doveadm_cmd_param); -typedef int doveadm_command_ver2_t(const struct doveadm_cmd_ver2* cmd, +typedef void doveadm_command_ver2_t(const struct doveadm_cmd_ver2* cmd, int argc, const struct doveadm_cmd_param[]); struct doveadm_cmd { @@ -98,9 +98,9 @@ void doveadm_register_fs_commands(void); void doveadm_cmds_init(void); void doveadm_cmds_deinit(void); -int doveadm_cmd_ver2_to_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, +void doveadm_cmd_ver2_to_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, int argc, const struct doveadm_cmd_param[]); -int doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, +void doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, int argc, const struct doveadm_cmd_param argv[]); void doveadm_cmd_register_ver2(struct doveadm_cmd_ver2 *cmd); diff --git a/src/doveadm/doveadm-mail.c b/src/doveadm/doveadm-mail.c index e58a1551e2..3cd8d83ab7 100644 --- a/src/doveadm/doveadm-mail.c +++ b/src/doveadm/doveadm-mail.c @@ -888,7 +888,7 @@ void doveadm_mail_deinit(void) array_free(&doveadm_mail_cmds); } -int +void doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, int argc, const struct doveadm_cmd_param argv[]) { @@ -946,7 +946,8 @@ doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, if (ctx->cmd_input != NULL) { i_error("Only one file input allowed: %s", argv[i].name); doveadm_mail_cmd_free(ctx); - return -1; + doveadm_exit_code = EX_USAGE; + return; } ctx->cmd_input = argv[i].value.v_istream; i_stream_ref(ctx->cmd_input); @@ -960,7 +961,7 @@ doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, doveadm_exit_code = EX_USAGE; i_error("invalid parameter: %s", argv[i].name); doveadm_mail_cmd_free(ctx); - return -1; + return; } } @@ -970,5 +971,4 @@ doveadm_cmd_ver2_to_mail_cmd_wrapper(const struct doveadm_cmd_ver2* cmd, doveadm_mail_cmd_exec(ctx, wildcard_user); doveadm_mail_cmd_free(ctx); - return 0; } diff --git a/src/doveadm/doveadm-stats.c b/src/doveadm/doveadm-stats.c index 3d9d708b91..1c9d6ec388 100644 --- a/src/doveadm/doveadm-stats.c +++ b/src/doveadm/doveadm-stats.c @@ -115,7 +115,7 @@ static void stats_dump(const char *path, const char *cmd) i_stream_destroy(&input); } -static int +static void cmd2_stats_dump(const struct doveadm_cmd_ver2* dcmd ATTR_UNUSED, int argc, const struct doveadm_cmd_param *argv) { const char *path, *cmd; @@ -126,7 +126,8 @@ cmd2_stats_dump(const struct doveadm_cmd_ver2* dcmd ATTR_UNUSED, int argc, const if (!doveadm_cmd_param_str(argc, argv, "type", &args[0])) { i_error("Missing type parameter"); - return -1; + doveadm_exit_code = EX_USAGE; + return; } /* purely optional */ @@ -137,7 +138,7 @@ cmd2_stats_dump(const struct doveadm_cmd_ver2* dcmd ATTR_UNUSED, int argc, const doveadm_print_init(DOVEADM_PRINT_TYPE_TAB); stats_dump(path, cmd); - return 0; + return; } static void