From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:38512) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLMhr-0003JW-1L for qemu-devel@nongnu.org; Tue, 01 Nov 2011 18:21:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RLMhp-0000Xs-Hq for qemu-devel@nongnu.org; Tue, 01 Nov 2011 18:21:18 -0400 Received: from mail-yw0-f45.google.com ([209.85.213.45]:50913) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RLMhp-0000Xf-9A for qemu-devel@nongnu.org; Tue, 01 Nov 2011 18:21:17 -0400 Received: by ywb3 with SMTP id 3so9305454ywb.4 for ; Tue, 01 Nov 2011 15:21:16 -0700 (PDT) Message-ID: <4EB070D9.6050907@codemonkey.ws> Date: Tue, 01 Nov 2011 17:21:13 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1318390361-583-1-git-send-email-xiawenc@linux.vnet.ibm.com> In-Reply-To: <1318390361-583-1-git-send-email-xiawenc@linux.vnet.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed 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 10/11/2011 10:32 PM, 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 Applied. Thanks. Regards, Anthony Liguori > --- > 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)