diff --git a/nest/cli.c b/nest/cli.c index 37f310b0..934451b1 100644 --- a/nest/cli.c +++ b/nest/cli.c @@ -117,9 +117,8 @@ cli_alloc_out(cli *c, int size) * macro instead. */ void -cli_printf(cli *c, int code, char *msg, ...) +cli_vprintf(cli *c, int code, const char *msg, va_list args) { - va_list args; byte buf[CLI_LINE_SIZE]; int cd = code; int errcode; @@ -147,9 +146,7 @@ cli_printf(cli *c, int code, char *msg, ...) } c->last_reply = cd; - va_start(args, msg); cnt = bvsnprintf(buf+size, sizeof(buf)-size-1, msg, args); - va_end(args); if (cnt < 0) { cli_printf(c, errcode, ""); diff --git a/nest/cli.h b/nest/cli.h index e9b59c51..54fc2964 100644 --- a/nest/cli.h +++ b/nest/cli.h @@ -73,7 +73,15 @@ extern struct cli *this_cli; /* Used during parsing */ /* Functions to be called by command handlers */ -void cli_printf(cli *, int, char *, ...); +void cli_vprintf(cli *, int, const char *, va_list); +static inline void cli_printf(cli *cli, int code, const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + cli_vprintf(cli, code, fmt, args); + va_end(args); +} + #define cli_msg(x...) cli_printf(this_cli, x) void cli_set_timeformat(cli *c, const struct timeformat tf);