On 07/29/2011 04:23 AM, Osier Yang wrote:
> Commit 3709a386 ported hooks codes to new command execution API,
> together with the useful error message removed. Though we can't
> get "errbuf" from the new command execution API anymore, still
> we can give a more useful error.
>
>
https://bugzilla.redhat.com/show_bug.cgi?id=726398
> ---
> src/util/hooks.c | 9 ++++++++-
> 1 files changed, 8 insertions(+), 1 deletions(-)
>
> diff --git a/src/util/hooks.c b/src/util/hooks.c
> index 64adfcb..00f3a01 100644
> --- a/src/util/hooks.c
> +++ b/src/util/hooks.c
> @@ -193,6 +193,7 @@ int
> virHookCall(int driver, const char *id, int op, int sub_op, const
> char *extra,
> const char *input) {
> int ret;
> + int exitstatus;
> char *path;
> virCommandPtr cmd;
> const char *drvstr;
> @@ -257,7 +258,13 @@ virHookCall(int driver, const char *id, int op,
> int sub_op, const char *extra,
> if (input)
> virCommandSetInputBuffer(cmd, input);
>
> - ret = virCommandRun(cmd, NULL);
> + ret = virCommandRun(cmd,&exitstatus);
> + if (exitstatus != 0) {
Needs to be: if (ret == 0 && exitstatus != 0).
If ret is -1 (possible if the command completely failed, such as if
you are OOM or the child died due to a signal rather than a normal
exit), then exitstatus might be undefined.