On Wed, Jan 13, 2010 at 01:25:05AM -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 44a4b2f..1d493de 100644 > --- a/src/util/util.c > +++ b/src/util/util.c > @@ -792,9 +792,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; > @@ -811,7 +813,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; > } > @@ -867,9 +869,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; > @@ -895,6 +899,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 Daniel -- |: Red Hat, Engineering, London -o- http://people.redhat.com/berrange/ :| |: http://libvirt.org -o- http://virt-manager.org -o- http://ovirt.org :| |: http://autobuild.org -o- http://search.cpan.org/~danberr/ :| |: GnuPG: 7D3B9505 -o- F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 :| -- Libvir-list mailing list Libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list