[libvirt] [PATCH 2/7] add qemuAgentArbitraryCommand() for general qemu agent command.

Martin Kletzander mkletzan at redhat.com
Thu Aug 16 12:58:07 UTC 2012


On 08/15/2012 03:36 AM, MATSUDA Daiki wrote:>
> add qemuAgentArbitraryCommand() for general qemu agent command.
>

Twice the same line in the message, could be less brief, maybe :)

> Signed-off-by: MATSUDA Daiki <matsudadik at intellilink.co.jp>
> ---
>  src/qemu/qemu_agent.c |   31 +++++++++++++++++++++++++++++++
>  src/qemu/qemu_agent.h |    5 +++++
>  2 files changed, 36 insertions(+), 0 deletions(-)
>
> diff --git a/src/qemu/qemu_agent.c b/src/qemu/qemu_agent.c
> index 26c2726..c634c23 100644
> --- a/src/qemu/qemu_agent.c
> +++ b/src/qemu/qemu_agent.c
> @@ -1408,3 +1408,34 @@ qemuAgentSuspend(qemuAgentPtr mon,
>      virJSONValueFree(reply);
>      return ret;
>  }
> +
> +int
> +qemuAgentArbitraryCommand(qemuAgentPtr mon,
> +                          const char *cmd_str,
> +                          char **result,
> +                          int timeout)
> +{
> +    int ret = -1;
> +    virJSONValuePtr cmd;
> +    virJSONValuePtr reply = NULL;
> +
> +    if (timeout < -2)
> +        return ret;

I think you can leave the test to only one layer of the code and that
would be 'qemuAgentSend'.

> +
> +    cmd = virJSONValueFromString(cmd_str);
> +    if (!cmd)
> +        return ret;
> +
> +    ret = qemuAgentCommand(mon, cmd, &reply, timeout);
> +
> +    if (ret == 0) {
> +        ret = qemuAgentCheckError(cmd, reply);
> +        *result = virJSONValueToString(reply);
> +    } else {
> +        result = NULL;

First of all, you probably wanted to do '*result = NULL', because
'result = NULL' won't do anything here, however in case of any other
failure (timeout == -3, fail in virJSONValuFromSting) you don't
guarantee the *result to be NULL, so I don't think you need to do this here.

Martin




More information about the libvir-list mailing list