[libvirt] [PATCH 1/2] virsh: Pass vshControl to all vshCommandOpt*() calls.

Peter Krempa pkrempa at redhat.com
Thu May 21 11:22:26 UTC 2015


On Thu, May 21, 2015 at 11:40:26 +0200, Andrea Bolognani wrote:
> This will allow us to use vshError() to report errors from inside
> vshCommandOpt*(), instead of replicating the same logic and error
> messages all over the place.
> 
> We also have more context inside the vshCommandOpt*() functions,
> for example the actual value used on the command line, which means
> we can produce more detailed error messages.
> ---
>  tools/virsh-domain-monitor.c |  90 +++----
>  tools/virsh-domain.c         | 598 +++++++++++++++++++++----------------------
>  tools/virsh-host.c           |  46 ++--
>  tools/virsh-interface.c      |  14 +-
>  tools/virsh-network.c        |  34 +--
>  tools/virsh-nodedev.c        |   6 +-
>  tools/virsh-pool.c           |  26 +-
>  tools/virsh-secret.c         |   8 +-
>  tools/virsh-snapshot.c       |  88 +++----
>  tools/virsh-volume.c         |  34 +--
>  tools/virsh.c                | 113 ++++----
>  tools/virsh.h                |  77 +++---
>  12 files changed, 571 insertions(+), 563 deletions(-)
> 

...

> diff --git a/tools/virsh.c b/tools/virsh.c
> index 4425774..9f94b75 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c

...

> -vshCommandOpt(const vshCmd *cmd, const char *name, vshCmdOpt **opt,
> +vshCommandOpt(vshControl *ctl ATTRIBUTE_UNUSED, const vshCmd *cmd,
> +              const char *name, vshCmdOpt **opt,
>                bool needData)


So this helper is not using ctl nor reporting any errors. Even in the
next patch.

>  {
>      vshCmdOpt *candidate = cmd->opts;

...

> @@ -1829,11 +1831,12 @@ vshCommandOptScaledInt(const vshCmd *cmd, const char *name,
>   * option is present without actually using that data.
>   */
>  bool
> -vshCommandOptBool(const vshCmd *cmd, const char *name)
> +vshCommandOptBool(vshControl *ctl, const vshCmd *cmd,
> +                  const char *name)
>  {
>      vshCmdOpt *dummy;
>  
> -    return vshCommandOpt(cmd, name, &dummy, false) == 1;
> +    return vshCommandOpt(ctl, cmd, name, &dummy, false) == 1;

And vshCommandOptBool is designed not to report any error. I'm not a big
fan of changing half of virsh by changing the prototype and then not
using the parameter at all.

>  }
>  
>  /**

I didn't go through the rest of the changes, but reporting malformed
integers right in the parser makes sense to me.

Peter
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20150521/dd73d8fd/attachment-0001.sig>


More information about the libvir-list mailing list