On Fri, May 06, 2011 at 01:26:06PM -0400, Cole Robinson wrote: > Similar to virCommandArgAddFormat. We will use this shortly. > > v2: > Convert virCommandEnvAddPair to use the new function > > Signed-off-by: Cole Robinson <crobinso@xxxxxxxxxx> > --- > src/libvirt_private.syms | 1 + > src/util/command.c | 23 ++++++++++++++++++----- > src/util/command.h | 7 +++++++ > 3 files changed, 26 insertions(+), 5 deletions(-) > > diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms > index 1b22be6..d89b191 100644 > --- a/src/libvirt_private.syms > +++ b/src/libvirt_private.syms > @@ -99,6 +99,7 @@ virCommandAddArgList; > virCommandAddArgPair; > virCommandAddArgSet; > virCommandAddEnvBuffer; > +virCommandAddEnvFormat; > virCommandAddEnvPair; > virCommandAddEnvPass; > virCommandAddEnvPassCommon; > diff --git a/src/util/command.c b/src/util/command.c > index 862a913..ff4869d 100644 > --- a/src/util/command.c > +++ b/src/util/command.c > @@ -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 > diff --git a/src/util/command.h b/src/util/command.h > index ff8ccf5..69e9169 100644 > --- a/src/util/command.h > +++ b/src/util/command.h > @@ -98,6 +98,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 > */ ACK Daniel -- |: http://berrange.com -o- http://www.flickr.com/photos/dberrange/ :| |: http://libvirt.org -o- http://virt-manager.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: http://entangle-photo.org -o- http://live.gnome.org/gtk-vnc :| -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list