From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MqULn-0008CQ-1Q for qemu-devel@nongnu.org; Wed, 23 Sep 2009 12:05:51 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MqULi-00085F-5m for qemu-devel@nongnu.org; Wed, 23 Sep 2009 12:05:50 -0400 Received: from [199.232.76.173] (port=56178 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MqULh-000853-SS for qemu-devel@nongnu.org; Wed, 23 Sep 2009 12:05:45 -0400 Received: from mx1.redhat.com ([209.132.183.28]:49486) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MqULh-0007AM-95 for qemu-devel@nongnu.org; Wed, 23 Sep 2009 12:05:45 -0400 Received: from int-mx03.intmail.prod.int.phx2.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.16]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id n8NG5ic5014599 for ; Wed, 23 Sep 2009 12:05:44 -0400 Date: Wed, 23 Sep 2009 13:05:36 -0300 From: Luiz Capitulino Subject: Re: [Qemu-devel] [PATCH 3/7] monitor: do_info(): handle new and old info handlers Message-ID: <20090923130536.0be1c766@doriath> In-Reply-To: <87ws3piryw.fsf@pike.pond.sub.org> References: <1253136760-3614-1-git-send-email-lcapitulino@redhat.com> <1253136760-3614-4-git-send-email-lcapitulino@redhat.com> <87ws3piryw.fsf@pike.pond.sub.org> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Markus Armbruster Cc: qemu-devel@nongnu.org On Wed, 23 Sep 2009 17:46:47 +0200 Markus Armbruster wrote: > Luiz Capitulino writes: > > > do_info() is special, its job is to call 'info handlers'. > > This is similar to what monitor_handle_command() does, > > therefore do_info() also has to distinguish among new and > > old style info handlers. > > > > This commit converts do_info() to the new QObject style and > > makes the appropriate changes so that it can handle both > > info handlers styles. > > > > In the future, when all handlers are converted to QObject's > > style, it will be possible to share more code with > > monitor_handle_command(). > > > > Also note that this commit adds a new function called > > monitor_print_nothing(), which will be used by converted > > handlers that don't have data to print in the user protocol. > > > > Signed-off-by: Luiz Capitulino > > --- > > monitor.c | 44 ++++++++++++++++++++++++++++++++------------ > > qemu-monitor.hx | 2 +- > > 2 files changed, 33 insertions(+), 13 deletions(-) > > > > diff --git a/monitor.c b/monitor.c > > index 17754fb..cfbedf8 100644 > > --- a/monitor.c > > +++ b/monitor.c > [...] > > @@ -284,24 +289,39 @@ static void do_commit(Monitor *mon, const QDict *qdict) > > } > > } > > > > -static void do_info(Monitor *mon, const QDict *qdict) > > +static int do_info(Monitor *mon, const QDict *qdict, QObject **ret_data) > > { > > + int ret = 0; > > const mon_cmd_t *cmd; > > const char *item = qdict_get_try_str(qdict, "item"); > > - void (*handler)(Monitor *); > > > > - if (!item) > > - goto help; > > - for(cmd = info_cmds; cmd->name != NULL; cmd++) { > > + if (!item) { > > + help_cmd(mon, "info"); > > + return 0; > > + } > > + > > + for (cmd = info_cmds; cmd->name != NULL; cmd++) { > > if (compare_cmd(item, cmd->name)) > > - goto found; > > + break; > > } > > - help: > > - help_cmd(mon, "info"); > > - return; > > - found: > > - handler = cmd->handler; > > - handler(mon); > > + > > + if (cmd->name == NULL) > > + return -1; > > + > > + if (monitor_handler_ported(cmd)) { > > + int (*handler_new)(Monitor *mon, QObject **ret_data); > > + > > + handler_new = cmd->handler; > > + ret = handler_new(mon, ret_data); > > + > > + cmd->user_print(mon, *ret_data); > > + } else { > > + void (*handler_old)(Monitor *mon); > > + handler_old = cmd->handler; > > + handler_old(mon); > > + } > > + > > + return ret; > > } > > > > static void do_info_version(Monitor *mon) > > Looks like this changes do_info() to fail without printing help when the > "item" argument is not recognized. Fine with me, just mention it in the > commit message, please. Actually, it has to maintain compatibility with the current code, so this is a well spotted bug. Will fix, thanks.