Add function virCommandNewVAList which is equivalent to the virCommandNewArgList but with va_list instead of a variable number of arguments. Signed-off-by: Dmitry Guryanov <dguryanov@xxxxxxxxxxxxx> --- src/util/command.c | 22 ++++++++++++++++++++++ src/util/command.h | 3 +++ 2 files changed, 25 insertions(+), 0 deletions(-) diff --git a/src/util/command.c b/src/util/command.c index 35080d2..334ca89 100644 --- a/src/util/command.c +++ b/src/util/command.c @@ -815,6 +815,28 @@ virCommandNewArgList(const char *binary, ...) return cmd; } +/** + * virCommandNewVAList: + * @binary: program to run + * @va_list: additional arguments + * + * Create a new command with a NULL terminated + * variable argument list. @binary is handled as in virCommandNew. + */ +virCommandPtr +virCommandNewVAList(const char *binary, va_list list) +{ + virCommandPtr cmd = virCommandNew(binary); + const char *arg; + + if (!cmd || cmd->has_error) + return cmd; + + while ((arg = va_arg(list, const char *)) != NULL) + virCommandAddArg(cmd, arg); + return cmd; +} + /* * Preserve the specified file descriptor in the child, instead of diff --git a/src/util/command.h b/src/util/command.h index 34d93a8..2eb460a 100644 --- a/src/util/command.h +++ b/src/util/command.h @@ -45,6 +45,9 @@ virCommandPtr virCommandNewArgs(const char *const*args) ATTRIBUTE_NONNULL(1); virCommandPtr virCommandNewArgList(const char *binary, ...) ATTRIBUTE_NONNULL(1) ATTRIBUTE_SENTINEL; +virCommandPtr virCommandNewVAList(const char *binary, va_list list) + ATTRIBUTE_NONNULL(1); + /* All error report from these setup APIs is * delayed until the Run/RunAsync methods */ -- 1.7.1 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list