]> xenbits.xensource.com Git - libvirt.git/commitdiff
command: Add virCommandEnvAddFormat
authorCole Robinson <crobinso@redhat.com>
Thu, 5 May 2011 20:32:52 +0000 (16:32 -0400)
committerCole Robinson <crobinso@redhat.com>
Tue, 10 May 2011 17:15:50 +0000 (13:15 -0400)
Similar to virCommandArgAddFormat. We will use this shortly.

v2:
    Convert virCommandEnvAddPair to use the new function

src/libvirt_private.syms
src/util/command.c
src/util/command.h

index e2e706d70e6ae6ceeb1cf9fd8e8ff580d302873f..528fcdc0889db2fb236ebaa12f86d20cbce6d61c 100644 (file)
@@ -100,6 +100,7 @@ virCommandAddArgList;
 virCommandAddArgPair;
 virCommandAddArgSet;
 virCommandAddEnvBuffer;
+virCommandAddEnvFormat;
 virCommandAddEnvPair;
 virCommandAddEnvPass;
 virCommandAddEnvPassCommon;
index 862a913c20a5d57bc8b28475e0415bf089b372c0..ff4869dceb51546af98c839b570ae7860cc31509 100644 (file)
@@ -259,23 +259,26 @@ virCommandNonblockingFDs(virCommandPtr cmd)
 }
 
 /*
- * Add an environment variable to the child
- * using separate name & value strings
+ * Add an environment variable to the child created by a printf-style format
  */
 void
-virCommandAddEnvPair(virCommandPtr cmd, const char *name, const char *value)
+virCommandAddEnvFormat(virCommandPtr cmd, const char *format, ...)
 {
     char *env;
+    va_list list;
 
     if (!cmd || cmd->has_error)
         return;
 
-    if (virAsprintf(&env, "%s=%s", name, value ? value : "") < 0) {
+    va_start(list, format);
+    if (virVasprintf(&env, format, list) < 0) {
         cmd->has_error = ENOMEM;
+        va_end(list);
         return;
     }
+    va_end(list);
 
-    /* env plus trailing NULL */
+    /* Arg plus trailing NULL. */
     if (VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 1 + 1) < 0) {
         VIR_FREE(env);
         cmd->has_error = ENOMEM;
@@ -285,6 +288,16 @@ virCommandAddEnvPair(virCommandPtr cmd, const char *name, const char *value)
     cmd->env[cmd->nenv++] = env;
 }
 
+/*
+ * Add an environment variable to the child
+ * using separate name & value strings
+ */
+void
+virCommandAddEnvPair(virCommandPtr cmd, const char *name, const char *value)
+{
+    virCommandAddEnvFormat(cmd, "%s=%s", name, value);
+}
+
 
 /*
  * Add an environment variable to the child
index ff8ccf5f91f43f74c3b7b1ed7ec57e8b57a8829d..69e9169ea46b49455940b68294cd162f173d3384 100644 (file)
@@ -97,6 +97,13 @@ void virCommandDaemonize(virCommandPtr cmd);
  */
 void virCommandNonblockingFDs(virCommandPtr cmd);
 
+/*
+ * Add an environment variable to the child created by a printf-style format
+ */
+void
+virCommandAddEnvFormat(virCommandPtr cmd, const char *format, ...)
+                       ATTRIBUTE_NONNULL(2) ATTRIBUTE_FMT_PRINTF(2, 3);
+
 /*
  * Add an environment variable to the child
  * using separate name & value strings