[libvirt] [PATCH 1/4] Add virRunWithHook.
Daniel Veillard
veillard at redhat.com
Wed Jan 20 19:56:04 UTC 2010
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 at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list