Mercurial > dovecot > core-2.2
changeset 19803:4247beae5c8d
doveadm-stats: Use ver2 structures
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Mon, 15 Feb 2016 15:14:25 +0200 |
parents | 78fd3c31f786 |
children | cffa74926d5b |
files | src/doveadm/doveadm-cmd.c src/doveadm/doveadm-cmd.h src/doveadm/doveadm-stats.c src/doveadm/doveadm.c |
diffstat | 4 files changed, 53 insertions(+), 32 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-cmd.c Mon Feb 22 16:12:16 2016 +0200 +++ b/src/doveadm/doveadm-cmd.c Mon Feb 15 15:14:25 2016 +0200 @@ -18,12 +18,13 @@ &doveadm_cmd_mailbox_mutf7, &doveadm_cmd_sis_deduplicate, &doveadm_cmd_sis_find, - &doveadm_cmd_stats_dump }; static struct doveadm_cmd_ver2 *doveadm_commands_ver2[] = { &doveadm_cmd_stop_ver2, - &doveadm_cmd_reload_ver2 + &doveadm_cmd_reload_ver2, + &doveadm_cmd_stats_dump_ver2, + &doveadm_cmd_stats_reset_ver2 }; ARRAY_TYPE(doveadm_cmd) doveadm_cmds;
--- a/src/doveadm/doveadm-cmd.h Mon Feb 22 16:12:16 2016 +0200 +++ b/src/doveadm/doveadm-cmd.h Mon Feb 15 15:14:25 2016 +0200 @@ -72,9 +72,6 @@ extern struct doveadm_cmd doveadm_cmd_mailbox_mutf7; extern struct doveadm_cmd doveadm_cmd_sis_deduplicate; extern struct doveadm_cmd doveadm_cmd_sis_find; -extern struct doveadm_cmd doveadm_cmd_stats_dump; -extern struct doveadm_cmd doveadm_cmd_stats_top; -extern struct doveadm_cmd doveadm_cmd_stats_reset; extern struct doveadm_cmd doveadm_cmd_zlibconnect; void doveadm_register_cmd(const struct doveadm_cmd *cmd); @@ -118,5 +115,8 @@ extern struct doveadm_cmd_ver2 doveadm_cmd_stop_ver2; extern struct doveadm_cmd_ver2 doveadm_cmd_reload_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_stats_reset_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_stats_dump_ver2; +extern struct doveadm_cmd_ver2 doveadm_cmd_stats_top_ver2; #endif
--- a/src/doveadm/doveadm-stats.c Mon Feb 22 16:12:16 2016 +0200 +++ b/src/doveadm/doveadm-stats.c Mon Feb 15 15:14:25 2016 +0200 @@ -115,30 +115,29 @@ i_stream_destroy(&input); } -static void cmd_stats_dump(int argc, char *argv[]) +static int +cmd2_stats_dump(const struct doveadm_cmd_ver2* dcmd ATTR_UNUSED, int argc, const struct doveadm_cmd_param *argv) { const char *path, *cmd; - int c; + const char *args[3] = {0}; - path = t_strconcat(doveadm_settings->base_dir, "/stats", NULL); + if (!doveadm_cmd_param_str(argc, argv, "socket-path", &path)) + path = t_strconcat(doveadm_settings->base_dir, "/stats", NULL); - while ((c = getopt(argc, argv, "s:")) > 0) { - switch (c) { - case 's': - path = optarg; - break; - default: - help(&doveadm_cmd_stats_dump); - } + if (!doveadm_cmd_param_str(argc, argv, "type", &args[0])) { + i_error("Missing type parameter"); + return -1; } - argv += optind - 1; - if (argv[1] == NULL) - help(&doveadm_cmd_stats_dump); - cmd = t_strdup_printf("EXPORT\t%s\n", - t_strarray_join((const void *)(argv+1), "\t")); + + /* purely optional */ + doveadm_cmd_param_str(argc, argv, "filter", &args[1]); + args[2] = NULL; + + cmd = t_strdup_printf("EXPORT\t%s\n", t_strarray_join(args, "\t")); doveadm_print_init(DOVEADM_PRINT_TYPE_TAB); stats_dump(path, cmd); + return 0; } static void @@ -558,14 +557,14 @@ path = optarg; break; default: - help(&doveadm_cmd_stats_top); + help_ver2(&doveadm_cmd_stats_top_ver2); } } argv += optind - 1; if (argv[1] == NULL) sort_type = "disk"; else if (argv[2] != NULL) - help(&doveadm_cmd_stats_top); + help_ver2(&doveadm_cmd_stats_top_ver2); else sort_type = argv[1]; @@ -585,7 +584,7 @@ path = optarg; break; default: - help(&doveadm_cmd_stats_reset); + help_ver2(&doveadm_cmd_stats_reset_ver2); } } argv += optind - 1; @@ -597,14 +596,34 @@ stats_reset(path, (const char**)argv); } -struct doveadm_cmd doveadm_cmd_stats_dump = { - cmd_stats_dump, "stats dump", "[-s <stats socket path>] <type> [<filter>]" +struct doveadm_cmd_ver2 doveadm_cmd_stats_dump_ver2 = { + .cmd = cmd2_stats_dump, + .name = "stats dump", + .usage = "[-s <stats socket path>] <type> [<filter>]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_PARAM('s', "socket-path", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAM('\0', "type", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "filter", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_cmd doveadm_cmd_stats_top = { - cmd_stats_top, "stats top", "[-s <stats socket path>] [-b] [<sort field>]" +struct doveadm_cmd_ver2 doveadm_cmd_stats_top_ver2 = { + .old_cmd = cmd_stats_top, + .name = "stats top", + .usage = "[-s <stats socket path>] [-b] [<sort field>]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_PARAM('s', "socket-path", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAM('b', "bytes", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('\0', "field", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAMS_END }; -struct doveadm_cmd doveadm_cmd_stats_reset = { - cmd_stats_reset, "stats reset", "[-s <stats socket path>]" + +struct doveadm_cmd_ver2 doveadm_cmd_stats_reset_ver2 = { + .old_cmd = cmd_stats_reset, + .name = "stats reset", + .usage = "[-s <stats socket path>]", +DOVEADM_CMD_PARAMS_START +DOVEADM_CMD_PARAM('s', "socket-path", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAMS_END };
--- a/src/doveadm/doveadm.c Mon Feb 22 16:12:16 2016 +0200 +++ b/src/doveadm/doveadm.c Mon Feb 15 15:14:25 2016 +0200 @@ -265,8 +265,6 @@ &doveadm_cmd_exec, &doveadm_cmd_dump, &doveadm_cmd_pw, - &doveadm_cmd_stats_top, - &doveadm_cmd_stats_reset, &doveadm_cmd_zlibconnect }; @@ -320,6 +318,9 @@ doveadm_cmds_init(); for (i = 0; i < N_ELEMENTS(doveadm_cmdline_commands); i++) doveadm_register_cmd(doveadm_cmdline_commands[i]); + + doveadm_cmd_register_ver2(&doveadm_cmd_stats_top_ver2); + if (cmd_name != NULL && (quick_init || strcmp(cmd_name, "config") == 0 || strcmp(cmd_name, "stop") == 0 ||