From: Luiz Capitulino Date: Fri, 27 Nov 2009 00:59:00 +0000 (-0200) Subject: QMP: do_info() checks X-Git-Tag: v0.12.0-rc0~191 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=956f1a0d838e8045020ff8175e9ac3982b1e8079;p=users%2Fdwmw2%2Fqemu.git QMP: do_info() checks This commit adds specific QMP checks to do_info(), so that it behaves as expected in QMP mode. Signed-off-by: Luiz Capitulino Signed-off-by: Anthony Liguori --- diff --git a/monitor.c b/monitor.c index 8d05164ac2..70665bd789 100644 --- a/monitor.c +++ b/monitor.c @@ -367,16 +367,23 @@ static void do_info(Monitor *mon, const QDict *qdict, QObject **ret_data) const mon_cmd_t *cmd; const char *item = qdict_get_try_str(qdict, "item"); - if (!item) + if (!item) { + assert(monitor_ctrl_mode(mon) == 0); goto help; + } for (cmd = info_cmds; cmd->name != NULL; cmd++) { if (compare_cmd(item, cmd->name)) break; } - if (cmd->name == NULL) + if (cmd->name == NULL) { + if (monitor_ctrl_mode(mon)) { + qemu_error_new(QERR_COMMAND_NOT_FOUND, item); + return; + } goto help; + } if (monitor_handler_ported(cmd)) { cmd->mhandler.info_new(mon, ret_data); @@ -390,7 +397,12 @@ static void do_info(Monitor *mon, const QDict *qdict, QObject **ret_data) cmd->user_print(mon, *ret_data); } } else { - cmd->mhandler.info(mon); + if (monitor_ctrl_mode(mon)) { + /* handler not converted yet */ + qemu_error_new(QERR_COMMAND_NOT_FOUND, item); + } else { + cmd->mhandler.info(mon); + } } return;