From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:40314) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RDsUa-0004JR-3d for qemu-devel@nongnu.org; Wed, 12 Oct 2011 02:40:41 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RDsUZ-0005dL-48 for qemu-devel@nongnu.org; Wed, 12 Oct 2011 02:40:40 -0400 Received: from e23smtp02.au.ibm.com ([202.81.31.144]:55400) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RDsUY-0005dD-FA for qemu-devel@nongnu.org; Wed, 12 Oct 2011 02:40:39 -0400 Received: from d23relay05.au.ibm.com (d23relay05.au.ibm.com [202.81.31.247]) by e23smtp02.au.ibm.com (8.14.4/8.13.1) with ESMTP id p9C6XeNr022832 for ; Wed, 12 Oct 2011 17:33:40 +1100 Received: from d23av02.au.ibm.com (d23av02.au.ibm.com [9.190.235.138]) by d23relay05.au.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id p9C6brT3487534 for ; Wed, 12 Oct 2011 17:37:55 +1100 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 p9C6eGC7003975 for ; Wed, 12 Oct 2011 17:40:17 +1100 From: Wenyi Gao In-Reply-To: <1318390361-583-1-git-send-email-xiawenc@linux.vnet.ibm.com> References: <1318390361-583-1-git-send-email-xiawenc@linux.vnet.ibm.com> Content-Type: text/plain; charset="UTF-8" Date: Wed, 12 Oct 2011 14:39:24 +0800 Message-ID: <1318401564.19104.7.camel@ThinkPadT420> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v3] Sort the help info shown in monitor at runtime List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Wayne Xia Cc: qemu-devel@nongnu.org On Wed, 2011-10-12 at 11:32 +0800, Wayne Xia wrote: > This patch would try sort the command list in monitor at runtime. As a result, > command help and help info would show a more friendly sorted command list. > For eg: > (qemu)help > acl_add > acl_policy > acl_remove > acl_reset > acl_show > balloon > block_passwd > ... > the command list is sorted. > > v3: using qsort function to sort the command list. > > Signed-off-by: Wayne Xia > --- > monitor.c | 30 ++++++++++++++++++++++++++---- > 1 files changed, 26 insertions(+), 4 deletions(-) > > diff --git a/monitor.c b/monitor.c > index 31b212a..a172167 100644 > --- a/monitor.c > +++ b/monitor.c > @@ -195,8 +195,8 @@ static inline int mon_print_count_get(const Monitor *mon) { return 0; } > > static QLIST_HEAD(mon_list, Monitor) mon_list; > > -static const mon_cmd_t mon_cmds[]; > -static const mon_cmd_t info_cmds[]; > +static mon_cmd_t mon_cmds[]; > +static mon_cmd_t info_cmds[]; > > static const mon_cmd_t qmp_cmds[]; > static const mon_cmd_t qmp_query_cmds[]; > @@ -2726,13 +2726,14 @@ int monitor_get_fd(Monitor *mon, const char *fdname) > return -1; > } > > -static const mon_cmd_t mon_cmds[] = { > +/* mon_cmds and info_cmds would be sorted at runtime */ > +static mon_cmd_t mon_cmds[] = { > #include "hmp-commands.h" > { NULL, NULL, }, > }; > > /* Please update hmp-commands.hx when adding or changing commands */ > -static const mon_cmd_t info_cmds[] = { > +static mon_cmd_t info_cmds[] = { > { > .name = "version", > .args_type = "", > @@ -5068,6 +5069,25 @@ static void monitor_event(void *opaque, int event) > } > } > > +static int > +compare_mon_cmd(const void *a, const void *b) > +{ > + return strcmp(((const mon_cmd_t *)a)->name, > + ((const mon_cmd_t *)b)->name); > +} > + > +static void sortcmdlist(void) > +{ > + int array_num; > + int elem_size = sizeof(mon_cmd_t); > + > + array_num = sizeof(mon_cmds)/elem_size-1; > + qsort((void *)mon_cmds, array_num, elem_size, compare_mon_cmd); > + > + array_num = sizeof(info_cmds)/elem_size-1; > + qsort((void *)info_cmds, array_num, elem_size, compare_mon_cmd); > +} > + > > /* > * Local variables: > @@ -5110,6 +5130,8 @@ void monitor_init(CharDriverState *chr, int flags) > QLIST_INSERT_HEAD(&mon_list, mon, entry); > if (!default_mon || (flags & MONITOR_IS_DEFAULT)) > default_mon = mon; > + > + sortcmdlist(); > } > > static void bdrv_password_cb(Monitor *mon, const char *password, void *opaque) Tested-by: Wenyi Gao Work nice. Wenyi Gao