diff mbox series

[v3,3/7] hmp: Restrict auto-complete in preconfig

Message ID 20180608130846.22234-4-dgilbert@redhat.com
State New
Headers show
Series Reenable hmp for preconfig mode | expand

Commit Message

Dr. David Alan Gilbert June 8, 2018, 1:08 p.m. UTC
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>

Don't show the commands that aren't available.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
---
 monitor.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

Comments

Markus Armbruster June 11, 2018, 9:02 a.m. UTC | #1
"Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> writes:

> From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
>
> Don't show the commands that aren't available.
>
> Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> Reviewed-by: Peter Xu <peterx@redhat.com>
> Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> ---
>  monitor.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
>
> diff --git a/monitor.c b/monitor.c
> index 31c8f5dc88..c369b392db 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -3951,12 +3951,17 @@ static void monitor_find_completion_by_table(Monitor *mon,
>              cmdname = args[0];
>          readline_set_completion_index(mon->rs, strlen(cmdname));
>          for (cmd = cmd_table; cmd->name != NULL; cmd++) {
> -            cmd_completion(mon, cmdname, cmd->name);
> +            if (!runstate_check(RUN_STATE_PRECONFIG) ||
> +                 cmd_can_preconfig(cmd)) {
> +                cmd_completion(mon, cmdname, cmd->name);
> +            }
>          }
>      } else {
>          /* find the command */
>          for (cmd = cmd_table; cmd->name != NULL; cmd++) {
> -            if (compare_cmd(args[0], cmd->name)) {
> +            if (compare_cmd(args[0], cmd->name) &&
> +                (!runstate_check(RUN_STATE_PRECONFIG) ||
> +                 cmd_can_preconfig(cmd))) {
>                  break;
>              }
>          }

Hmm, I keep seeing

    !runstate_check(RUN_STATE_PRECONFIG) || cmd_can_preconfig(cmd)

Would a helper be worthwhile?  cmd_available(cmd)?
Dr. David Alan Gilbert June 11, 2018, 5:38 p.m. UTC | #2
* Markus Armbruster (armbru@redhat.com) wrote:
> "Dr. David Alan Gilbert (git)" <dgilbert@redhat.com> writes:
> 
> > From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
> >
> > Don't show the commands that aren't available.
> >
> > Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
> > Reviewed-by: Peter Xu <peterx@redhat.com>
> > Reviewed-by: Igor Mammedov <imammedo@redhat.com>
> > ---
> >  monitor.c | 9 +++++++--
> >  1 file changed, 7 insertions(+), 2 deletions(-)
> >
> > diff --git a/monitor.c b/monitor.c
> > index 31c8f5dc88..c369b392db 100644
> > --- a/monitor.c
> > +++ b/monitor.c
> > @@ -3951,12 +3951,17 @@ static void monitor_find_completion_by_table(Monitor *mon,
> >              cmdname = args[0];
> >          readline_set_completion_index(mon->rs, strlen(cmdname));
> >          for (cmd = cmd_table; cmd->name != NULL; cmd++) {
> > -            cmd_completion(mon, cmdname, cmd->name);
> > +            if (!runstate_check(RUN_STATE_PRECONFIG) ||
> > +                 cmd_can_preconfig(cmd)) {
> > +                cmd_completion(mon, cmdname, cmd->name);
> > +            }
> >          }
> >      } else {
> >          /* find the command */
> >          for (cmd = cmd_table; cmd->name != NULL; cmd++) {
> > -            if (compare_cmd(args[0], cmd->name)) {
> > +            if (compare_cmd(args[0], cmd->name) &&
> > +                (!runstate_check(RUN_STATE_PRECONFIG) ||
> > +                 cmd_can_preconfig(cmd))) {
> >                  break;
> >              }
> >          }
> 
> Hmm, I keep seeing
> 
>     !runstate_check(RUN_STATE_PRECONFIG) || cmd_can_preconfig(cmd)
> 
> Would a helper be worthwhile?  cmd_available(cmd)?

Yes, but I want to leave that change until I add the next flag (for OOB
some time) so I know how to generalise it;  I'm not sure what it'll need
yet.

Dave

--
Dr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK
diff mbox series

Patch

diff --git a/monitor.c b/monitor.c
index 31c8f5dc88..c369b392db 100644
--- a/monitor.c
+++ b/monitor.c
@@ -3951,12 +3951,17 @@  static void monitor_find_completion_by_table(Monitor *mon,
             cmdname = args[0];
         readline_set_completion_index(mon->rs, strlen(cmdname));
         for (cmd = cmd_table; cmd->name != NULL; cmd++) {
-            cmd_completion(mon, cmdname, cmd->name);
+            if (!runstate_check(RUN_STATE_PRECONFIG) ||
+                 cmd_can_preconfig(cmd)) {
+                cmd_completion(mon, cmdname, cmd->name);
+            }
         }
     } else {
         /* find the command */
         for (cmd = cmd_table; cmd->name != NULL; cmd++) {
-            if (compare_cmd(args[0], cmd->name)) {
+            if (compare_cmd(args[0], cmd->name) &&
+                (!runstate_check(RUN_STATE_PRECONFIG) ||
+                 cmd_can_preconfig(cmd))) {
                 break;
             }
         }