From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45211) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Us2uJ-0004HN-B1 for qemu-devel@nongnu.org; Wed, 26 Jun 2013 23:30:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Us2uI-0000Uu-An for qemu-devel@nongnu.org; Wed, 26 Jun 2013 23:30:03 -0400 Received: from e23smtp08.au.ibm.com ([202.81.31.141]:37796) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Us2uH-0000Qt-OX for qemu-devel@nongnu.org; Wed, 26 Jun 2013 23:30:02 -0400 Received: from /spool/local by e23smtp08.au.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Thu, 27 Jun 2013 13:27:12 +1000 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [9.190.235.152]) by d23dlp02.au.ibm.com (Postfix) with ESMTP id 719612BB0054 for ; Thu, 27 Jun 2013 13:29:57 +1000 (EST) Received: from d23av01.au.ibm.com (d23av01.au.ibm.com [9.190.234.96]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id r5R3EsHf60555330 for ; Thu, 27 Jun 2013 13:14:57 +1000 Received: from d23av01.au.ibm.com (loopback [127.0.0.1]) by d23av01.au.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id r5R3Ts9G028823 for ; Thu, 27 Jun 2013 13:29:54 +1000 From: Wenchao Xia Date: Thu, 27 Jun 2013 11:27:39 +0800 Message-Id: <1372303666-12323-1-git-send-email-xiawenc@linux.vnet.ibm.com> Subject: [Qemu-devel] [PATCH V3 0/7] monitor: support sub command group in auto completion and help List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, Wenchao Xia , armbru@redhat.com, lcapitulino@redhat.com Global variable *mon_cmds and *info_cmds are not directly used any more, *cur_mon is not used in completion related functions. It is possible to create a monitor with different command table now, but that requirement do not exist yet, so not changed it to save trouble. Log command is still a special case now, may be it can be converted as sub group later. Patch 1-3 make sure the functions can be re-entered safely. V2: General: To discard *info_comds more graceful, help related function is modified to support sub command too. Patch 6/7 are added to improve help related functions. Patch 5: not directly return to make sure args are freed. Address Luiz's comments: Split patch into small serial. struct mon_cmd_t was not moved into header file, instead mon_cmnd_t *cmd_table is added as a member in struct Monitor. 5/7: drop original code comments for "info" in monitor_find_completion(). v3: 5/7: add parameter **args_cmdline in parse_cmdline() to tell next valid parameter's position. This fix the issue in case command length in input is not equal to its name's length such as "help|?", and the case input start with space such as " s". 7/7: better commit message. Wenchao Xia (7): 1 monitor: discard global variable *cur_mon in completion functions 2 monitor: discard global variable *mon_cmds 3 monitor: discard global variable *info_cmds in help functions 4 monitor: code move for parse_cmdline() 5 monitor: support sub commands in auto completion 6 monitor: improve "help" in auto completion for sub command 7 monitor: improve "help" to allow show tip of single command in sub group hmp-commands.hx | 2 +- include/monitor/readline.h | 3 +- monitor.c | 382 ++++++++++++++++++++++++++++---------------- readline.c | 5 +- 4 files changed, 251 insertions(+), 141 deletions(-)