[libvirt] [PATCH v2 5/9] virsh: Add vshSuspendTargetCompleter

Michal Privoznik mprivozn at redhat.com
Thu Aug 22 11:46:21 UTC 2013


On 20.08.2013 22:02, Tomas Meszaros wrote:
> * label cleanup renamed to error
> * vshSuspendTargetCompleter added to opts_dom_pm_suspend
> ---
>  tools/virsh-domain.c |  3 ++-
>  tools/virsh.c        | 28 ++++++++++++++++++++++++++++
>  tools/virsh.h        |  1 +
>  3 files changed, 31 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c
> index 5d4913d..a2002c5 100644
> --- a/tools/virsh-domain.c
> +++ b/tools/virsh-domain.c
> @@ -2756,7 +2756,8 @@ static const vshCmdOptDef opts_dom_pm_suspend[] = {
>       .flags = VSH_OFLAG_REQ,
>       .help = N_("mem(Suspend-to-RAM), "
>                  "disk(Suspend-to-Disk), "
> -                "hybrid(Hybrid-Suspend)")
> +                "hybrid(Hybrid-Suspend)"),
> +     .completer = vshSuspendTargetCompleter

This is what I had on my mind in 4/9.

>      },
>      {.name = NULL}
>  };
> diff --git a/tools/virsh.c b/tools/virsh.c
> index 13c27df..85d74ad 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -2550,6 +2550,34 @@ error:
>      return NULL;
>  }
>  
> +char **
> +vshSuspendTargetCompleter(unsigned int unused_flags ATTRIBUTE_UNUSED)
> +{
> +    const char *targets[] = {"mem", "disk", "hybrid"};
> +    const unsigned int targets_size = ARRAY_CARDINALITY(targets);
> +    char **names = NULL;
> +    size_t i;
> +
> +    names = vshMalloc(NULL, sizeof(char *) * (targets_size + 1));
> +
> +    if (!names)
> +        return NULL;
> +
> +    for (i = 0; i < targets_size; i++) {
> +        if (VIR_STRDUP(names[i], targets[i]) < 0)
> +            goto error;
> +    }
> +
> +    names[i] = NULL;
> +    return names;
> +
> +error:
> +    for (i = 0; names[i]; i++)
> +        VIR_FREE(names[i]);
> +    VIR_FREE(names);
> +    return NULL;
> +}
> +
>  /* -----------------
>   * Readline stuff
>   * -----------------
> diff --git a/tools/virsh.h b/tools/virsh.h
> index 68414e4..6767e65 100644
> --- a/tools/virsh.h
> +++ b/tools/virsh.h
> @@ -256,6 +256,7 @@ struct _vshCmdGrp {
>  };
>  
>  char **vshDomainCompleter(unsigned int flags);
> +char **vshSuspendTargetCompleter(unsigned int unused_flags);
>  
>  void vshError(vshControl *ctl, const char *format, ...)
>      ATTRIBUTE_FMT_PRINTF(2, 3);
> 

Michal




More information about the libvir-list mailing list