Jelajahi Sumber

hmp: Allow help on preconfig commands

Allow the 'help' command in preconfig state but
make it only list the preconfig commands.

Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Igor Mammedov <imammedo@redhat.com>
Message-Id: <20180620153947.30834-3-dgilbert@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Dr. David Alan Gilbert 7 tahun lalu
induk
melakukan
31785f1b03
2 mengubah file dengan 8 tambahan dan 1 penghapusan
  1. 1 0
      hmp-commands.hx
  2. 7 1
      monitor.c

+ 1 - 0
hmp-commands.hx

@@ -15,6 +15,7 @@ ETEXI
         .params     = "[cmd]",
         .params     = "[cmd]",
         .help       = "show the help",
         .help       = "show the help",
         .cmd        = do_help_cmd,
         .cmd        = do_help_cmd,
+        .flags      = "p",
     },
     },
 
 
 STEXI
 STEXI

+ 7 - 1
monitor.c

@@ -979,6 +979,10 @@ static void help_cmd_dump_one(Monitor *mon,
 {
 {
     int i;
     int i;
 
 
+    if (runstate_check(RUN_STATE_PRECONFIG) && !cmd_can_preconfig(cmd)) {
+        return;
+    }
+
     for (i = 0; i < prefix_args_nb; i++) {
     for (i = 0; i < prefix_args_nb; i++) {
         monitor_printf(mon, "%s ", prefix_args[i]);
         monitor_printf(mon, "%s ", prefix_args[i]);
     }
     }
@@ -1001,7 +1005,9 @@ static void help_cmd_dump(Monitor *mon, const mon_cmd_t *cmds,
 
 
     /* Find one entry to dump */
     /* Find one entry to dump */
     for (cmd = cmds; cmd->name != NULL; cmd++) {
     for (cmd = cmds; cmd->name != NULL; cmd++) {
-        if (compare_cmd(args[arg_index], cmd->name)) {
+        if (compare_cmd(args[arg_index], cmd->name) &&
+            ((!runstate_check(RUN_STATE_PRECONFIG) ||
+                cmd_can_preconfig(cmd)))) {
             if (cmd->sub_table) {
             if (cmd->sub_table) {
                 /* continue with next arg */
                 /* continue with next arg */
                 help_cmd_dump(mon, cmd->sub_table,
                 help_cmd_dump(mon, cmd->sub_table,