From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1ME8lM-0006Ay-OF for qemu-devel@nongnu.org; Tue, 09 Jun 2009 17:21:44 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1ME8lH-00068W-7G for qemu-devel@nongnu.org; Tue, 09 Jun 2009 17:21:43 -0400 Received: from [199.232.76.173] (port=43422 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1ME8lH-00068R-1P for qemu-devel@nongnu.org; Tue, 09 Jun 2009 17:21:39 -0400 Received: from mx2.redhat.com ([66.187.237.31]:51616) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1ME8lG-0002bJ-Id for qemu-devel@nongnu.org; Tue, 09 Jun 2009 17:21:38 -0400 Date: Tue, 9 Jun 2009 18:21:30 -0300 From: Luiz Capitulino Message-ID: <20090609182130.4be8bd3c@redhat.com> In-Reply-To: References: Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] [PATCH 2/4] monitor: Introduce get_command_name() List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: aliguori@us.ibm.com Move code to extract command name into a function of its own, this clearifies the code and let us remove two variables from monitor_handle_command(). Signed-off-by: Luiz Capitulino --- monitor.c | 44 ++++++++++++++++++++++++++++++-------------- 1 files changed, 30 insertions(+), 14 deletions(-) diff --git a/monitor.c b/monitor.c index 11716de..9b11341 100644 --- a/monitor.c +++ b/monitor.c @@ -2381,6 +2381,32 @@ static int get_str(char *buf, int buf_size, const char **pp) return 0; } +/* + * Store the command-name in cmdname, and return a pointer to + * the remaining of the command string. + */ +static const char *get_command_name(const char *cmdline, + char *cmdname, size_t nlen) +{ + size_t len; + const char *p, *pstart; + + p = cmdline; + while (qemu_isspace(*p)) + p++; + if (*p == '\0') + return NULL; + pstart = p; + while (*p != '\0' && *p != '/' && !qemu_isspace(*p)) + p++; + len = p - pstart; + if (len > nlen - 1) + len = nlen - 1; + memcpy(cmdname, pstart, len); + cmdname[len] = '\0'; + return p; +} + static int default_fmt_format = 'x'; static int default_fmt_size = 4; @@ -2388,8 +2414,8 @@ static int default_fmt_size = 4; static void monitor_handle_command(Monitor *mon, const char *cmdline) { - const char *p, *pstart, *typestr; - int c, nb_args, len, i, has_arg; + const char *p, *typestr; + int c, nb_args, i, has_arg; const mon_cmd_t *cmd; char cmdname[256]; char buf[1024]; @@ -2413,19 +2439,9 @@ static void monitor_handle_command(Monitor *mon, const char *cmdline) #endif /* extract the command name */ - p = cmdline; - while (qemu_isspace(*p)) - p++; - if (*p == '\0') + p = get_command_name(cmdline, cmdname, sizeof(cmdname)); + if (!p) return; - pstart = p; - while (*p != '\0' && *p != '/' && !qemu_isspace(*p)) - p++; - len = p - pstart; - if (len > sizeof(cmdname) - 1) - len = sizeof(cmdname) - 1; - memcpy(cmdname, pstart, len); - cmdname[len] = '\0'; /* find the command */ for(cmd = mon_cmds; cmd->name != NULL; cmd++) { -- 1.6.3.GIT