Mercurial > dovecot > core-2.2
changeset 21710:5fd93439cda7
doveadm: Ensure -- is added to command line before positional arguments for non-mails commands as well
Was forgotten from 967efe37d1f10a28c0a086cc5919d4ce8917bed8
author | Aki Tuomi <aki.tuomi@dovecot.fi> |
---|---|
date | Mon, 27 Feb 2017 20:38:43 +0200 |
parents | 27554e9ede9f |
children | 5fe535e0972a |
files | src/doveadm/doveadm-cmd.c |
diffstat | 1 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/doveadm-cmd.c Mon Feb 27 19:12:32 2017 +0200 +++ b/src/doveadm/doveadm-cmd.c Mon Feb 27 20:38:43 2017 +0200 @@ -321,6 +321,10 @@ const char * const * cptr; i_assert(array_count(argv) == 0); array_append(argv, &name, 1); + + ARRAY_TYPE(const_string) pargv; + t_array_init(&pargv, 8); + for(i=0;i<pargc;i++) { const char *optarg = NULL; /* istreams are special */ @@ -349,11 +353,20 @@ array_foreach(¶ms[i].value.v_array, cptr) { if (array_add_opt) array_append(argv, &optarg, 1); - array_append(argv, cptr, 1); + if ((params[i].flags & CMD_PARAM_FLAG_POSITIONAL) == 0) + array_append(argv, cptr, 1); + else + array_append(&pargv, cptr, 1); } } } } + + if (array_count(&pargv) > 0) { + const char *dashdash = "--"; + array_append(argv, &dashdash, 1); + array_append_array(argv, &pargv); + } array_append_zero(argv); }