Mercurial > dovecot > core-2.2
changeset 19779:d5a022d714ea
doveadm: Use char type for short options instead of a string.
The ":" = "has parameters" can be determined from the type.
Also removed "?" checks since it wasn't actually used.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Fri, 19 Feb 2016 16:36:00 +0200 |
parents | 3432ea258fe9 |
children | b5bbac21e96e |
files | src/doveadm/doveadm-cmd.c src/doveadm/doveadm-cmd.h src/doveadm/doveadm-mail-mailbox-metadata.c src/doveadm/doveadm-mail-mailbox-status.c src/doveadm/doveadm-mail-mailbox.c src/doveadm/doveadm-mail.c src/doveadm/doveadm-mail.h |
diffstat | 7 files changed, 42 insertions(+), 55 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-cmd.c Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-cmd.c Fri Feb 19 16:36:00 2016 +0200 @@ -250,9 +250,8 @@ i_assert(array_count(argv) == 0); array_append(argv, &name, 1); for(i=0;i<pargc;i++) { - if (params[i].value_set && params[i].opt != NULL && - *(params[i].opt) != ':' && *(params[i].opt) != '?') { - const char *optarg = t_strdup_printf("-%c", params[i].opt[0]); + if (params[i].value_set && params[i].short_opt != '\0') { + const char *optarg = t_strdup_printf("-%c", params[i].short_opt); if (params[i].type == CMD_PARAM_STR) { array_append(argv, &optarg, 1); array_append(argv, ¶ms[i].value.v_string,1); @@ -297,28 +296,17 @@ string_t *shortopts, ARRAY_TYPE(getopt_option_array) *longopts) { - const char *optp; for(size_t i=0; par[i].name != NULL; i++) { struct option longopt; if ((par[i].flags & CMD_PARAM_FLAG_DO_NOT_EXPOSE) != 0) continue; longopt.name = par[i].name; longopt.flag = 0; longopt.val = 0; - if (par[i].opt) { - optp = par[i].opt; - if (*optp != ':' && *optp != '?') { - longopt.val = *optp; - str_append_c(shortopts, *optp); - optp++; - if (optp[0] != '\0') - str_append_c(shortopts, *optp); - } - switch(*optp) { - case ':': longopt.has_arg = 1; break; - case '?': longopt.has_arg = 2; break; - default: - longopt.has_arg = 0; - } + if (par[i].short_opt != '\0') { + longopt.val = par[i].short_opt; + str_append_c(shortopts, par[i].short_opt); + if (par[i].type != CMD_PARAM_BOOL) + str_append_c(shortopts, ':'); } else { longopt.has_arg = 0; }
--- a/src/doveadm/doveadm-cmd.h Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-cmd.h Fri Feb 19 16:36:00 2016 +0200 @@ -2,8 +2,8 @@ #define DOVEADM_CMD_H #define DOVEADM_CMD_PARAMS_START .parameters = (const struct doveadm_cmd_param[]){ -#define DOVEADM_CMD_PARAM(optP, nameP, typeP, flagP ) { .opt = optP, .name = nameP, .type = typeP, .flags = flagP }, -#define DOVEADM_CMD_PARAMS_END { .opt = NULL, .name = NULL, .type = CMD_PARAM_BOOL, .flags = CMD_PARAM_FLAG_NONE } } +#define DOVEADM_CMD_PARAM(optP, nameP, typeP, flagP ) { .short_opt = optP, .name = nameP, .type = typeP, .flags = flagP }, +#define DOVEADM_CMD_PARAMS_END { .short_opt = '\0', .name = NULL, .type = CMD_PARAM_BOOL, .flags = CMD_PARAM_FLAG_NONE } } struct doveadm_cmd_ver2; struct doveadm_mail_cmd_context; @@ -25,7 +25,7 @@ } doveadm_cmd_param_flag_t; struct doveadm_cmd_param { - const char *opt; + char short_opt; const char *name; doveadm_cmd_param_t type; bool value_set;
--- a/src/doveadm/doveadm-mail-mailbox-metadata.c Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-mail-mailbox-metadata.c Fri Feb 19 16:36:00 2016 +0200 @@ -292,9 +292,9 @@ .usage = "<mailbox> <key> <value>", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) -DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) -DOVEADM_CMD_PARAM(":", "value", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "value", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -304,8 +304,8 @@ .usage = "<mailbox> <key>", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) -DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -315,8 +315,8 @@ .usage = "<mailbox> <key>", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) -DOVEADM_CMD_PARAM(":", "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "key", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -326,6 +326,6 @@ .usage = "<mailbox> [<key prefix>]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM(":", "key-prefix", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "key-prefix", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END };
--- a/src/doveadm/doveadm-mail-mailbox-status.c Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-mail-mailbox-status.c Fri Feb 19 16:36:00 2016 +0200 @@ -253,9 +253,9 @@ .usage = "<mailbox> [...]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM("t", "total-sum", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM("f:", "field", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) -DOVEADM_CMD_PARAM(":", "fieldstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL | CMD_PARAM_FLAG_DO_NOT_EXPOSE) /* FIXME: horrible hack, remove me when possible */ -DOVEADM_CMD_PARAM(":", "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('t', "total-sum", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('f', "field", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "fieldstr", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL | CMD_PARAM_FLAG_DO_NOT_EXPOSE) /* FIXME: horrible hack, remove me when possible */ +DOVEADM_CMD_PARAM('\0', "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END };
--- a/src/doveadm/doveadm-mail-mailbox.c Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-mail-mailbox.c Fri Feb 19 16:36:00 2016 +0200 @@ -562,10 +562,10 @@ .usage = "[-7|-8] [-s] [<mailbox mask> [...]]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM("7", "mutf7", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM("8", "no-mutf7", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM(":", "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('7', "mutf7", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('8', "no-mutf7", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('s', "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('\0', "mask", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -575,9 +575,9 @@ .usage = "[-s] [-g <guid>] <mailbox> [...]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM("g", "guid", CMD_PARAM_STR, 0) -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('s', "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('g', "guid", CMD_PARAM_STR, 0) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -587,8 +587,8 @@ .usage = "[-s] <mailbox> [...]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('s', "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -598,9 +598,9 @@ .usage = "[-s] <old name> <new name>", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM("s", "subscriptions", CMD_PARAM_BOOL, 0) -DOVEADM_CMD_PARAM(":", "old", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) -DOVEADM_CMD_PARAM(":", "new", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('s', "subscriptions", CMD_PARAM_BOOL, 0) +DOVEADM_CMD_PARAM('\0', "old", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "new", CMD_PARAM_STR, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -610,7 +610,7 @@ .usage = "<mailbox> [...]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END }; @@ -620,6 +620,6 @@ .usage = "<mailbox> [...]", DOVEADM_CMD_PARAMS_START DOVEADM_CMD_MAIL_COMMON -DOVEADM_CMD_PARAM(":", "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) +DOVEADM_CMD_PARAM('\0', "mailbox", CMD_PARAM_ARRAY, CMD_PARAM_FLAG_POSITIONAL) DOVEADM_CMD_PARAMS_END };
--- a/src/doveadm/doveadm-mail.c Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-mail.c Fri Feb 19 16:36:00 2016 +0200 @@ -919,10 +919,9 @@ ctx->service_flags |= MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP; wildcard_user = "*"; ctx->users_list_input = argv[i].value.v_istream; - } else if (ctx->v.parse_arg != NULL && argv[i].opt != NULL && - *(argv[i]).opt != '?' && *(argv[i]).opt != ':') { + } else if (ctx->v.parse_arg != NULL && argv[i].short_opt != '\0') { optarg = (char*)argv[i].value.v_string; - ctx->v.parse_arg(ctx, *(argv[i].opt)); + ctx->v.parse_arg(ctx, argv[i].short_opt); } else if ((argv[i].flags & CMD_PARAM_FLAG_POSITIONAL) != 0) { /* feed this into pargv */ if (argv[i].type == CMD_PARAM_ARRAY)
--- a/src/doveadm/doveadm-mail.h Fri Feb 19 16:34:53 2016 +0200 +++ b/src/doveadm/doveadm-mail.h Fri Feb 19 16:36:00 2016 +0200 @@ -197,9 +197,9 @@ extern struct doveadm_cmd_ver2 doveadm_cmd_mailbox_unsubscribe_ver2; #define DOVEADM_CMD_MAIL_COMMON \ -DOVEADM_CMD_PARAM("A", "all-users", CMD_PARAM_BOOL, 0) \ -DOVEADM_CMD_PARAM("S:", "socket-path", CMD_PARAM_STR, 0) \ -DOVEADM_CMD_PARAM("u:", "user", CMD_PARAM_STR, 0) \ -DOVEADM_CMD_PARAM("F:", "user-file", CMD_PARAM_ISTREAM, 0) +DOVEADM_CMD_PARAM('A', "all-users", CMD_PARAM_BOOL, 0) \ +DOVEADM_CMD_PARAM('S', "socket-path", CMD_PARAM_STR, 0) \ +DOVEADM_CMD_PARAM('u', "user", CMD_PARAM_STR, 0) \ +DOVEADM_CMD_PARAM('F', "user-file", CMD_PARAM_ISTREAM, 0) #endif