[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH] tools/xenstore: use talloc_asprintf_append() in do_control_help()
Instead of calculating the length of all help output and then allocating the space for it, just use talloc_asprintf_append() to expand the text as needed. Signed-off-by: Juergen Gross <jgross@xxxxxxxx> --- tools/xenstore/xenstored_control.c | 27 +++++++-------------------- 1 file changed, 7 insertions(+), 20 deletions(-) diff --git a/tools/xenstore/xenstored_control.c b/tools/xenstore/xenstored_control.c index adb8d51b04..61bcbc069d 100644 --- a/tools/xenstore/xenstored_control.c +++ b/tools/xenstore/xenstored_control.c @@ -853,36 +853,23 @@ static struct cmd_s cmds[] = { static int do_control_help(void *ctx, struct connection *conn, char **vec, int num) { - int cmd, len = 0; + int cmd; char *resp; if (num) return EINVAL; - for (cmd = 0; cmd < ARRAY_SIZE(cmds); cmd++) { - len += strlen(cmds[cmd].cmd) + 1; - len += strlen(cmds[cmd].pars) + 1; - } - len++; - - resp = talloc_array(ctx, char, len); + resp = talloc_asprintf(ctx, "%s", ""); if (!resp) return ENOMEM; - - len = 0; for (cmd = 0; cmd < ARRAY_SIZE(cmds); cmd++) { - strcpy(resp + len, cmds[cmd].cmd); - len += strlen(cmds[cmd].cmd); - resp[len] = '\t'; - len++; - strcpy(resp + len, cmds[cmd].pars); - len += strlen(cmds[cmd].pars); - resp[len] = '\n'; - len++; + resp = talloc_asprintf_append(resp, "%s\t%s\n", + cmds[cmd].cmd, cmds[cmd].pars); + if (!resp) + return ENOMEM; } - resp[len] = 0; - send_reply(conn, XS_CONTROL, resp, len); + send_reply(conn, XS_CONTROL, resp, strlen(resp) + 1); return 0; } -- 2.31.1
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |