Mercurial > dovecot > core-2.2
changeset 19899:ef466c52207b
doveadm: Changed doveadm_cmd_param_array() to return C-string array instead of ARRAY()
We could support both with separate functions, but perhaps this one is enough.
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Sun, 28 Feb 2016 18:48:15 +0200 |
parents | 130ebf573dde |
children | 6f760a1def9f |
files | src/doveadm/client-connection-http.c src/doveadm/doveadm-cmd.c src/doveadm/doveadm-cmd.h |
diffstat | 3 files changed, 11 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doveadm/client-connection-http.c Mon Feb 29 17:25:31 2016 +0200 +++ b/src/doveadm/client-connection-http.c Sun Feb 28 18:48:15 2016 +0200 @@ -303,7 +303,7 @@ doveadm_print_init(DOVEADM_PRINT_TYPE_JSON); /* then call it */ - cctx.argv = array_get(&conn->pargv, (unsigned int*)&cctx.argc); + cctx.argv = array_get_modifiable(&conn->pargv, (unsigned int*)&cctx.argc); ioloop = io_loop_create(); lib_signals_reset_ioloop(); doveadm_exit_code = 0;
--- a/src/doveadm/doveadm-cmd.c Mon Feb 29 17:25:31 2016 +0200 +++ b/src/doveadm/doveadm-cmd.c Sun Feb 28 18:48:15 2016 +0200 @@ -181,7 +181,7 @@ array_free(&doveadm_cmds_ver2); } -static const struct doveadm_cmd_param* +static struct doveadm_cmd_param* doveadm_cmd_param_get(const struct doveadm_cmd_context *cctx, const char *name) { @@ -247,12 +247,16 @@ } bool doveadm_cmd_param_array(const struct doveadm_cmd_context *cctx, - const char *name, ARRAY_TYPE(const_string) **value_r) + const char *name, const char *const **value_r) { - const struct doveadm_cmd_param *param; + struct doveadm_cmd_param *param; if ((param = doveadm_cmd_param_get(cctx, name))==NULL) return FALSE; if (param->type == CMD_PARAM_ARRAY) { - *value_r = (ARRAY_TYPE(const_string)*)&(param->value.v_array); + /* NULL-terminate the array, but don't leave it there */ + array_append_zero(¶m->value.v_array); + array_delete(¶m->value.v_array, + array_count(¶m->value.v_array)-1, 1); + *value_r = array_idx(¶m->value.v_array, 0); return TRUE; } return FALSE;
--- a/src/doveadm/doveadm-cmd.h Mon Feb 29 17:25:31 2016 +0200 +++ b/src/doveadm/doveadm-cmd.h Sun Feb 28 18:48:15 2016 +0200 @@ -72,7 +72,7 @@ const struct doveadm_cmd_ver2 *cmd; /* for help */ int argc; - const struct doveadm_cmd_param *argv; + struct doveadm_cmd_param *argv; const char *username; bool cli; @@ -137,7 +137,7 @@ bool doveadm_cmd_param_ip(const struct doveadm_cmd_context *cctx, const char *name, struct ip_addr *value_r); bool doveadm_cmd_param_array(const struct doveadm_cmd_context *cctx, - const char *name, ARRAY_TYPE(const_string) **value_r); + const char *name, const char *const **value_r); bool doveadm_cmd_param_istream(const struct doveadm_cmd_context *cctx, const char *name, struct istream **value_r);