All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: Hani Benhabiles <kroosec@gmail.com>
Cc: kwolf@redhat.com, aliguori@amazon.com, qemu-devel@nongnu.org,
	stefanha@redhat.com, imammedo@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 07/17] monitor: Add set_link arguments completion.
Date: Fri, 11 Apr 2014 13:40:21 -0400	[thread overview]
Message-ID: <20140411134021.4f29b0cd@redhat.com> (raw)
In-Reply-To: <1396177119-24955-8-git-send-email-kroosec@gmail.com>

On Sun, 30 Mar 2014 11:58:29 +0100
Hani Benhabiles <kroosec@gmail.com> wrote:

> Make it possible to query all net clients without specifying an ID when calling
> qemu_find_net_clients_except().
> 
> This also adds the add_completion_option() function which is to be used for
> other commands completions as well.
> 
> Signed-off-by: Hani Benhabiles <hani@linux.com>
> ---
>  hmp-commands.hx |  1 +
>  hmp.h           |  1 +
>  monitor.c       | 34 ++++++++++++++++++++++++++++++++++
>  net/net.c       |  2 +-
>  4 files changed, 37 insertions(+), 1 deletion(-)
> 
> diff --git a/hmp-commands.hx b/hmp-commands.hx
> index 813c0fb..fbd303a 100644
> --- a/hmp-commands.hx
> +++ b/hmp-commands.hx
> @@ -1332,6 +1332,7 @@ ETEXI
>          .params     = "name on|off",
>          .help       = "change the link status of a network adapter",
>          .mhandler.cmd = hmp_set_link,
> +        .command_completion = set_link_completion,
>      },
>  
>  STEXI
> diff --git a/hmp.h b/hmp.h
> index 8701b16..33a883d 100644
> --- a/hmp.h
> +++ b/hmp.h
> @@ -100,5 +100,6 @@ void device_del_completion(ReadLineState *rs, int nb_args, const char *str);
>  void chardev_remove_completion(ReadLineState *rs, int nb_args, const char *str);
>  void chardev_add_completion(ReadLineState *rs, int nb_args, const char *str);
>  void cpu_completion(ReadLineState *rs, int nb_args, const char *str);
> +void set_link_completion(ReadLineState *rs, int nb_args, const char *str);
>  
>  #endif
> diff --git a/monitor.c b/monitor.c
> index 29d4f37..009f269 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -4278,6 +4278,17 @@ static const char *next_arg_type(const char *typestr)
>      return (p != NULL ? ++p : typestr);
>  }
>  
> +static void add_completion_option(ReadLineState *rs, const char *str,
> +                                  const char *option)
> +{
> +    if (!str || !option) {
> +        return;
> +    }
> +    if (!strncmp(option, str, strlen(str))) {
> +        readline_add_completion(rs, option);
> +    }
> +}
> +
>  void chardev_add_completion(ReadLineState *rs, int nb_args, const char *str)
>  {
>      size_t len;
> @@ -4453,6 +4464,29 @@ void cpu_completion(ReadLineState *rs, int nb_args, const char *str)
>      qapi_free_CpuInfoList(start);
>  }
>  
> +void set_link_completion(ReadLineState *rs, int nb_args, const char *str)
> +{
> +    size_t len;
> +
> +    len = strlen(str);
> +    readline_set_completion_index(rs, len);
> +    if (nb_args == 2) {
> +        NetClientState *ncs[255];
> +        int count, i;
> +        count = qemu_find_net_clients_except(NULL, ncs,
> +                                             NET_CLIENT_OPTIONS_KIND_NONE, 255);
> +        for (i = 0; i < count; i++) {
> +            const char *name = ncs[i]->name;
> +            if (!strncmp(str, name, len)) {
> +                readline_add_completion(rs, name);
> +            }
> +        }
> +    } else if (nb_args == 3) {
> +        add_completion_option(rs, str, "on");
> +        add_completion_option(rs, str, "off");
> +    }
> +}
> +

This prints both, the backend and frontend. Shouldn't it print only one of
them?

>  static void monitor_find_completion_by_table(Monitor *mon,
>                                               const mon_cmd_t *cmd_table,
>                                               char **args,
> diff --git a/net/net.c b/net/net.c
> index e3ef1e4..86dd051 100644
> --- a/net/net.c
> +++ b/net/net.c
> @@ -633,7 +633,7 @@ int qemu_find_net_clients_except(const char *id, NetClientState **ncs,
>          if (nc->info->type == type) {
>              continue;
>          }
> -        if (!strcmp(nc->name, id)) {
> +        if (!id || !strcmp(nc->name, id)) {
>              if (ret < max) {
>                  ncs[ret] = nc;
>              }

  reply	other threads:[~2014-04-11 17:40 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-30 10:58 [Qemu-devel] [PATCH v2 00/17] monitor: Completion support for various commands Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 01/17] monitor: Fix drive_del id argument type completion Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 02/17] monitor: Add command_completion callback to mon_cmd_t Hani Benhabiles
2014-04-11 17:14   ` Luiz Capitulino
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 03/17] monitor: Add device_add and device_del completion Hani Benhabiles
2014-04-11 17:30   ` Luiz Capitulino
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 04/17] monitor: Add chardev-remove id argument completion Hani Benhabiles
2014-04-11 17:36   ` Luiz Capitulino
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 05/17] monitor: Add chardev-add backend " Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 06/17] monitor: Add cpu index " Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 07/17] monitor: Add set_link arguments completion Hani Benhabiles
2014-04-11 17:40   ` Luiz Capitulino [this message]
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 08/17] monitor: Add netdev_add type argument completion Hani Benhabiles
2014-04-11 17:44   ` Luiz Capitulino
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 09/17] monitor: Add netdev_del id " Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 10/17] monitor: Add ringbuf_write and ringbuf_read " Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 11/17] monitor: Add watchdog_action " Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 12/17] monitor: Add migrate_set_capability completion Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 13/17] monitor: Add host_net_add device argument completion Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 14/17] readline: Make completion strings always unique Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 15/17] monitor: Add host_net_remove arguments completion Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 16/17] monitor: Add mouse_set index argument completion Hani Benhabiles
2014-03-30 10:58 ` [Qemu-devel] [PATCH v2 17/17] monitor: Add delvm and loadvm " Hani Benhabiles
2014-04-11 17:50 ` [Qemu-devel] [PATCH v2 00/17] monitor: Completion support for various commands Luiz Capitulino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140411134021.4f29b0cd@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=aliguori@amazon.com \
    --cc=imammedo@redhat.com \
    --cc=kroosec@gmail.com \
    --cc=kwolf@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.