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 <dgurya...@parallels.com>
---
 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@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list

Reply via email to