[libvirt] [PATCH v2 6/9] virsh: Add vshRebootShutdownModeCompleter

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


On 20.08.2013 22:02, Tomas Meszaros wrote:
> vshRebootShutdownModeCompleter returns available modes
> for reboot/shutdown commands.
> ---
>  tools/virsh.c | 28 ++++++++++++++++++++++++++++
>  tools/virsh.h |  1 +
>  2 files changed, 29 insertions(+)
> 

Again, you should add .completer = vshRebootShutdownModeCompleter in
this patch.

> diff --git a/tools/virsh.c b/tools/virsh.c
> index 85d74ad..965b141 100644
> --- a/tools/virsh.c
> +++ b/tools/virsh.c
> @@ -2578,6 +2578,34 @@ error:
>      return NULL;
>  }
>  
> +char **
> +vshRebootShutdownModeCompleter(unsigned int unused_flags ATTRIBUTE_UNUSED)
> +{
> +    const char *modes[] = {"acpi", "agent", "initctl", "signal"};
> +    const unsigned int modes_size = ARRAY_CARDINALITY(modes);
> +    char **names = NULL;
> +    size_t i;
> +
> +    names = vshMalloc(NULL, sizeof(char *) * (modes_size + 1));
> +
> +    if (!names)
> +        return NULL;

Again useless if.

> +
> +    for (i = 0; i < modes_size; i++) {
> +        if (VIR_STRDUP(names[i], modes[i]) < 0)
> +            goto cleanup;
> +    }
> +
> +    names[i] = NULL;
> +    return names;
> +
> +cleanup:
> +    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 6767e65..61510b0 100644
> --- a/tools/virsh.h
> +++ b/tools/virsh.h
> @@ -257,6 +257,7 @@ struct _vshCmdGrp {
>  
>  char **vshDomainCompleter(unsigned int flags);
>  char **vshSuspendTargetCompleter(unsigned int unused_flags);
> +char **vshRebootShutdownModeCompleter(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