提交 35c1b35e 编写于 作者: C Cole Robinson

command: Add virCommandEnvAddFormat

Similar to virCommandArgAddFormat. We will use this shortly.

v2:
    Convert virCommandEnvAddPair to use the new function
上级 fc0ab50a
...@@ -100,6 +100,7 @@ virCommandAddArgList; ...@@ -100,6 +100,7 @@ virCommandAddArgList;
virCommandAddArgPair; virCommandAddArgPair;
virCommandAddArgSet; virCommandAddArgSet;
virCommandAddEnvBuffer; virCommandAddEnvBuffer;
virCommandAddEnvFormat;
virCommandAddEnvPair; virCommandAddEnvPair;
virCommandAddEnvPass; virCommandAddEnvPass;
virCommandAddEnvPassCommon; virCommandAddEnvPassCommon;
......
...@@ -259,23 +259,26 @@ virCommandNonblockingFDs(virCommandPtr cmd) ...@@ -259,23 +259,26 @@ virCommandNonblockingFDs(virCommandPtr cmd)
} }
/* /*
* Add an environment variable to the child * Add an environment variable to the child created by a printf-style format
* using separate name & value strings
*/ */
void void
virCommandAddEnvPair(virCommandPtr cmd, const char *name, const char *value) virCommandAddEnvFormat(virCommandPtr cmd, const char *format, ...)
{ {
char *env; char *env;
va_list list;
if (!cmd || cmd->has_error) if (!cmd || cmd->has_error)
return; return;
if (virAsprintf(&env, "%s=%s", name, value ? value : "") < 0) { va_start(list, format);
if (virVasprintf(&env, format, list) < 0) {
cmd->has_error = ENOMEM; cmd->has_error = ENOMEM;
va_end(list);
return; 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) { if (VIR_RESIZE_N(cmd->env, cmd->maxenv, cmd->nenv, 1 + 1) < 0) {
VIR_FREE(env); VIR_FREE(env);
cmd->has_error = ENOMEM; cmd->has_error = ENOMEM;
...@@ -285,6 +288,16 @@ virCommandAddEnvPair(virCommandPtr cmd, const char *name, const char *value) ...@@ -285,6 +288,16 @@ virCommandAddEnvPair(virCommandPtr cmd, const char *name, const char *value)
cmd->env[cmd->nenv++] = env; 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 * Add an environment variable to the child
......
...@@ -97,6 +97,13 @@ void virCommandDaemonize(virCommandPtr cmd); ...@@ -97,6 +97,13 @@ void virCommandDaemonize(virCommandPtr cmd);
*/ */
void virCommandNonblockingFDs(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 * Add an environment variable to the child
* using separate name & value strings * using separate name & value strings
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册