Commit 4590fd80b867cca0cad87ec8d3cb7be2cd56f8b4

Authored by Luiz Capitulino
Committed by Blue Swirl
1 parent 7869001b

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: Luiz Capitulino <lcapitulino@redhat.com>
Showing 1 changed file with 30 additions and 14 deletions
monitor.c
... ... @@ -2381,6 +2381,32 @@ static int get_str(char *buf, int buf_size, const char **pp)
2381 2381 return 0;
2382 2382 }
2383 2383  
  2384 +/*
  2385 + * Store the command-name in cmdname, and return a pointer to
  2386 + * the remaining of the command string.
  2387 + */
  2388 +static const char *get_command_name(const char *cmdline,
  2389 + char *cmdname, size_t nlen)
  2390 +{
  2391 + size_t len;
  2392 + const char *p, *pstart;
  2393 +
  2394 + p = cmdline;
  2395 + while (qemu_isspace(*p))
  2396 + p++;
  2397 + if (*p == '\0')
  2398 + return NULL;
  2399 + pstart = p;
  2400 + while (*p != '\0' && *p != '/' && !qemu_isspace(*p))
  2401 + p++;
  2402 + len = p - pstart;
  2403 + if (len > nlen - 1)
  2404 + len = nlen - 1;
  2405 + memcpy(cmdname, pstart, len);
  2406 + cmdname[len] = '\0';
  2407 + return p;
  2408 +}
  2409 +
2384 2410 static int default_fmt_format = 'x';
2385 2411 static int default_fmt_size = 4;
2386 2412  
... ... @@ -2388,8 +2414,8 @@ static int default_fmt_size = 4;
2388 2414  
2389 2415 static void monitor_handle_command(Monitor *mon, const char *cmdline)
2390 2416 {
2391   - const char *p, *pstart, *typestr;
2392   - int c, nb_args, len, i, has_arg;
  2417 + const char *p, *typestr;
  2418 + int c, nb_args, i, has_arg;
2393 2419 const mon_cmd_t *cmd;
2394 2420 char cmdname[256];
2395 2421 char buf[1024];
... ... @@ -2413,19 +2439,9 @@ static void monitor_handle_command(Monitor *mon, const char *cmdline)
2413 2439 #endif
2414 2440  
2415 2441 /* extract the command name */
2416   - p = cmdline;
2417   - while (qemu_isspace(*p))
2418   - p++;
2419   - if (*p == '\0')
  2442 + p = get_command_name(cmdline, cmdname, sizeof(cmdname));
  2443 + if (!p)
2420 2444 return;
2421   - pstart = p;
2422   - while (*p != '\0' && *p != '/' && !qemu_isspace(*p))
2423   - p++;
2424   - len = p - pstart;
2425   - if (len > sizeof(cmdname) - 1)
2426   - len = sizeof(cmdname) - 1;
2427   - memcpy(cmdname, pstart, len);
2428   - cmdname[len] = '\0';
2429 2445  
2430 2446 /* find the command */
2431 2447 for(cmd = mon_cmds; cmd->name != NULL; cmd++) {
... ...