From 4033df7ed8974ecd1c377b80529c130a2e76c50d Mon Sep 17 00:00:00 2001 From: Dmitry Guryanov Date: Tue, 31 Jul 2012 22:56:06 +0400 Subject: [PATCH] add function virCommandNewVAList 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 --- src/util/command.c | 22 ++++++++++++++++++++++ src/util/command.h | 3 +++ 2 files changed, 25 insertions(+) diff --git a/src/util/command.c b/src/util/command.c index 35080d2662..334ca8996d 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 34d93a8045..2eb460afb4 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 */ -- 2.39.5