[libvirt] [PATCH 1/3] Add virRunWithHook.
Daniel P. Berrange
berrange at redhat.com
Mon Jan 11 17:54:02 UTC 2010
On Mon, Jan 11, 2010 at 12:46:10AM -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 :|
More information about the libvir-list
mailing list