From: Aki Tuomi Date: Sat, 27 Feb 2016 09:13:24 +0000 (+0200) Subject: doveadm-cmd: Support non-strings in compat wrapper X-Git-Tag: 2.2.22.rc1~43 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0746d8c498e2bb336399c37715d4fef9d64560c7;p=thirdparty%2Fdovecot%2Fcore.git doveadm-cmd: Support non-strings in compat wrapper --- diff --git a/src/doveadm/doveadm-cmd.c b/src/doveadm/doveadm-cmd.c index e04cb3277d..3ce4507a94 100644 --- a/src/doveadm/doveadm-cmd.c +++ b/src/doveadm/doveadm-cmd.c @@ -287,28 +287,42 @@ static void doveadm_cmd_params_to_argv(const char *name, int pargc, const struct doveadm_cmd_param* params, ARRAY_TYPE(const_string) *argv) { + bool array_add_opt; int i; const char * const * cptr; i_assert(array_count(argv) == 0); array_append(argv, &name, 1); for(i=0;i -1) { switch(c) { case 0: - doveadm_fill_param(array_idx_modifiable(&pargv,li), optarg, pool); + for(unsigned int i = 0; i < array_count(&pargv); i++) { + const struct option *opt = array_idx(&opts,li); + param = array_idx_modifiable(&pargv,i); + if (opt->name == param->name) + doveadm_fill_param(param, optarg, pool); + } break; case '?': case ':': @@ -457,7 +476,7 @@ int doveadm_cmd_run_ver2(int argc, const char **argv, while((cptr = strchr(cptr+1, ' ')) != NULL) optind++; /* process positional arguments */ - for(;optindargc;optind++) { + for(;optind