[libvirt] [PATCH 02/12] virsh: Conditionally Ignore the first entry in list of completions

2018-05-04 Thread Lin Ma
The first entry in the returned array is the substitution for TEXT. It
causes unnecessary output if other commands or options share the same
prefix, e.g.

$ virsh des
des  desc destroy

or

$ virsh domblklist --d
--d--details  --domain

This patch fixes the above issue.

Signed-off-by: Lin Ma 
---
 tools/vsh.c | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/tools/vsh.c b/tools/vsh.c
index 73ec007e56..38058c874a 100644
--- a/tools/vsh.c
+++ b/tools/vsh.c
@@ -3458,6 +3458,7 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
 const vshCmdOpt *opt = NULL;
 char **matches = NULL, **iter;
 virBuffer buf = VIR_BUFFER_INITIALIZER;
+int n;
 
 if (vshCommandOptStringQuiet(ctl, cmd, "string", &arg) <= 0)
 goto cleanup;
@@ -3493,8 +3494,11 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
 if (!(matches = vshReadlineCompletion(arg, 0, 0)))
 goto cleanup;
 
-for (iter = matches; *iter; iter++)
+for (n =0, iter = matches; *iter; iter++, n++) {
+if (n == 0 && matches[1])
+continue;
 printf("%s\n", *iter);
+}
 
 ret = true;
  cleanup:
-- 
2.15.1

--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list


Re: [libvirt] [PATCH 02/12] virsh: Conditionally Ignore the first entry in list of completions

2018-05-04 Thread Peter Krempa
On Fri, May 04, 2018 at 17:25:23 +0800, Lin Ma wrote:
> The first entry in the returned array is the substitution for TEXT. It
> causes unnecessary output if other commands or options share the same
> prefix, e.g.
> 
> $ virsh des
> des  desc destroy
> 
> or
> 
> $ virsh domblklist --d
> --d--details  --domain
> 
> This patch fixes the above issue.
> 
> Signed-off-by: Lin Ma 
> ---
>  tools/vsh.c | 6 +-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/vsh.c b/tools/vsh.c
> index 73ec007e56..38058c874a 100644
> --- a/tools/vsh.c
> +++ b/tools/vsh.c
> @@ -3458,6 +3458,7 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
>  const vshCmdOpt *opt = NULL;
>  char **matches = NULL, **iter;
>  virBuffer buf = VIR_BUFFER_INITIALIZER;
> +int n;
>  
>  if (vshCommandOptStringQuiet(ctl, cmd, "string", &arg) <= 0)
>  goto cleanup;
> @@ -3493,8 +3494,11 @@ cmdComplete(vshControl *ctl, const vshCmd *cmd)
>  if (!(matches = vshReadlineCompletion(arg, 0, 0)))
>  goto cleanup;
>  
> -for (iter = matches; *iter; iter++)
> +for (n =0, iter = matches; *iter; iter++, n++) {

Fails 'make syntax-check':

Spacing around '=' or '==':
tools/vsh.c:3499: for (n =0, iter = matches; *iter; iter++, n++) {
maint.mk: incorrect formatting


> +if (n == 0 && matches[1])
> +continue;
>  printf("%s\n", *iter);
> +}
>  
>  ret = true;
>   cleanup:
> -- 
> 2.15.1
> 
> --
> libvir-list mailing list
> libvir-list@redhat.com
> https://www.redhat.com/mailman/listinfo/libvir-list


signature.asc
Description: PGP signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list