On Wed, Jan 20, 2010 at 02:29:40AM -0500, Laine Stump wrote: > Similar to virExecWithHook, but waits for child to exit. Useful for > doing things like setuid after the fork but before the exec. > --- > src/util/util.c | 25 ++++++++++++++++++------- > src/util/util.h | 3 +++ > 2 files changed, 21 insertions(+), 7 deletions(-) > > diff --git a/src/util/util.c b/src/util/util.c > index 67fae00..578d12b 100644 > --- a/src/util/util.c > +++ b/src/util/util.c > @@ -804,9 +804,11 @@ error: > * only if the command could not be run. > */ > int > -virRun(virConnectPtr conn, > - const char *const*argv, > - int *status) { > +virRunWithHook(virConnectPtr conn, > + const char *const*argv, > + virExecHook hook, > + void *data, > + int *status) { > pid_t childpid; > int exitstatus, execret, waitret; > int ret = -1; > @@ -823,7 +825,7 @@ virRun(virConnectPtr conn, > > if ((execret = __virExec(conn, argv, NULL, NULL, > &childpid, -1, &outfd, &errfd, > - VIR_EXEC_NONE, NULL, NULL, NULL)) < 0) { > + VIR_EXEC_NONE, hook, data, NULL)) < 0) { > ret = execret; > goto error; > } > @@ -879,9 +881,11 @@ virRun(virConnectPtr conn, > #else /* __MINGW32__ */ > > int > -virRun(virConnectPtr conn, > - const char *const *argv ATTRIBUTE_UNUSED, > - int *status) > +virRunWithHook(virConnectPtr conn, > + const char *const *argv ATTRIBUTE_UNUSED, > + virExecHook hook ATTRIBUTE_UNUSED, > + void *data ATTRIBUTE_UNUSED, > + int *status) > { > if (status) > *status = ENOTSUP; > @@ -907,6 +911,13 @@ virExec(virConnectPtr conn, > > #endif /* __MINGW32__ */ > > +int > +virRun(virConnectPtr conn, > + const char *const*argv, > + int *status) { > + return virRunWithHook(conn, argv, NULL, NULL, status); > +} > + > /* Like gnulib's fread_file, but read no more than the specified maximum > number of bytes. If the length of the input is <= max_len, and > upon error while reading that data, it works just like fread_file. */ > diff --git a/src/util/util.h b/src/util/util.h > index d556daa..5e70038 100644 > --- a/src/util/util.h > +++ b/src/util/util.h > @@ -81,6 +81,9 @@ int virExec(virConnectPtr conn, > int *errfd, > int flags) ATTRIBUTE_RETURN_CHECK; > int virRun(virConnectPtr conn, const char *const*argv, int *status) ATTRIBUTE_RETURN_CHECK; > +int virRunWithHook(virConnectPtr conn, const char *const*argv, > + virExecHook hook, void *data, > + int *status) ATTRIBUTE_RETURN_CHECK; > > int virFileReadLimFD(int fd, int maxlen, char **buf) ATTRIBUTE_RETURN_CHECK; ACK, looks fine to me, Daniel -- Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/ daniel@xxxxxxxxxxxx | Rpmfind RPM search engine http://rpmfind.net/ http://veillard.com/ | virtualization library http://libvirt.org/ -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list