From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35945) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UwoBq-0005Yr-QE for qemu-devel@nongnu.org; Wed, 10 Jul 2013 02:47:52 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UwoBp-0005A4-BI for qemu-devel@nongnu.org; Wed, 10 Jul 2013 02:47:50 -0400 Received: from e23smtp04.au.ibm.com ([202.81.31.146]:36718) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UwoBo-00059t-Pz for qemu-devel@nongnu.org; Wed, 10 Jul 2013 02:47:49 -0400 Received: from /spool/local by e23smtp04.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 10 Jul 2013 16:32:39 +1000 Received: from d23relay03.au.ibm.com (d23relay03.au.ibm.com [9.190.235.21]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id BC5BE2BB0052 for ; Wed, 10 Jul 2013 16:47:45 +1000 (EST) Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay03.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r6A6ladS1638830 for ; Wed, 10 Jul 2013 16:47:36 +1000 Received: from d23av02.au.ibm.com (loopback [127.0.0.1]) by d23av02.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r6A6lj9X010575 for ; Wed, 10 Jul 2013 16:47:45 +1000 Message-ID: <51DD038A.9020102@linux.vnet.ibm.com> Date: Wed, 10 Jul 2013 14:47:38 +0800 From: Wenchao Xia MIME-Version: 1.0 References: <1372477981-7512-1-git-send-email-xiawenc@linux.vnet.ibm.com> <1372477981-7512-8-git-send-email-xiawenc@linux.vnet.ibm.com> <20130708121731.2ea7bee8@redhat.com> In-Reply-To: <20130708121731.2ea7bee8@redhat.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Subject: Re: [Qemu-devel] [PATCH V5 7/7] monitor: improve "help" to allow show details of single command in sub group List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Luiz Capitulino Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com 于 2013-7-9 0:17, Luiz Capitulino 写道: > On Sat, 29 Jun 2013 11:53:01 +0800 > Wenchao Xia wrote: > >> A new parameter type 'S' is introduced to allow user input any string. >> "help info block" do not tip extra parameter error now. >> >> Signed-off-by: Wenchao Xia >> --- >> hmp-commands.hx | 2 +- >> monitor.c | 30 +++++++++++++++++++++++++++++- >> 2 files changed, 30 insertions(+), 2 deletions(-) >> >> diff --git a/hmp-commands.hx b/hmp-commands.hx >> index 915b0d1..8cf5f29 100644 >> --- a/hmp-commands.hx >> +++ b/hmp-commands.hx >> @@ -11,7 +11,7 @@ ETEXI >> >> { >> .name = "help|?", >> - .args_type = "name:s?", >> + .args_type = "name:S?", >> .params = "[cmd]", >> .help = "show the help", >> .mhandler.cmd = do_help_cmd, >> diff --git a/monitor.c b/monitor.c >> index 3ef18ee..ebdc2a3 100644 >> --- a/monitor.c >> +++ b/monitor.c >> @@ -83,6 +83,7 @@ >> * 'F' filename >> * 'B' block device name >> * 's' string (accept optional quote) >> + * 'S' supported types, can be any string (accept optional quote) > > I think you want to say it just appends the rest of the string. > >> * 'O' option string of the form NAME=VALUE,... >> * parsed according to QemuOptsList given by its name >> * Example: 'device:O' uses qemu_device_opts. >> @@ -4011,6 +4012,31 @@ static const mon_cmd_t *monitor_parse_command(Monitor *mon, >> } >> } >> break; >> + case 'S': >> + { >> + /* package all remaining string */ >> + int len; >> + >> + while (qemu_isspace(*p)) { >> + p++; >> + } >> + if (*typestr == '?') { >> + typestr++; >> + if (*p == '\0') { >> + /* no remaining string: NULL argument */ >> + break; >> + } >> + } >> + len = strlen(p); >> + if (len <= 0) { >> + monitor_printf(mon, "%s: string expected\n", >> + cmdname); >> + break; >> + } >> + qdict_put(qdict, key, qstring_from_str(p)); >> + p += len; >> + } >> + break; >> default: >> bad_type: >> monitor_printf(mon, "%s: unknown type '%c'\n", cmdname, c); >> @@ -4282,7 +4308,9 @@ static void monitor_find_completion_by_table(Monitor *mon, >> for (i = 0; i < Q_KEY_CODE_MAX; i++) { >> cmd_completion(mon, str, QKeyCode_lookup[i]); >> } >> - } else if (!strcmp(cmd->name, "help|?")) { >> + } >> + case 'S': >> + if (!strcmp(cmd->name, "help|?")) { >> monitor_find_completion_by_table(mon, cmd_table, >> args_cmdline[1]); > > This gives a very specific meaning to the S type, doesn't it? Why can't > you treat it just like 's'? Meaning that you could have: > > case 's': > case 'S': > OK, will fix it. >> } > > -- Best Regards Wenchao Xia