提交 4590fd80 编写于 作者: L Luiz Capitulino 提交者: Blue Swirl

monitor: Introduce get_command_name()

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: NLuiz Capitulino <lcapitulino@redhat.com>
上级 7869001b
......@@ -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++) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册