All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luiz Capitulino <lcapitulino@redhat.com>
To: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
Cc: pbonzini@redhat.com, qemu-devel@nongnu.org, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH V5 3/7] monitor: code move for parse_cmdline()
Date: Mon, 8 Jul 2013 11:26:43 -0400	[thread overview]
Message-ID: <20130708112643.2ff3360e@redhat.com> (raw)
In-Reply-To: <1372477981-7512-4-git-send-email-xiawenc@linux.vnet.ibm.com>

On Sat, 29 Jun 2013 11:52:57 +0800
Wenchao Xia <xiawenc@linux.vnet.ibm.com> wrote:

> get_str() is called by parse_cmdline() so it is moved also. Some
> code style error reported by check script, is also fixed.

Please, explain why you're doing this move.

> 
> Signed-off-by: Wenchao Xia <xiawenc@linux.vnet.ibm.com>
> ---
>  monitor.c |  191 +++++++++++++++++++++++++++++++------------------------------
>  1 files changed, 98 insertions(+), 93 deletions(-)
> 
> diff --git a/monitor.c b/monitor.c
> index 68e2e80..03a017d 100644
> --- a/monitor.c
> +++ b/monitor.c
> @@ -733,6 +733,104 @@ static int compare_cmd(const char *name, const char *list)
>      return 0;
>  }
>  
> +static int get_str(char *buf, int buf_size, const char **pp)
> +{
> +    const char *p;
> +    char *q;
> +    int c;
> +
> +    q = buf;
> +    p = *pp;
> +    while (qemu_isspace(*p)) {
> +        p++;
> +    }
> +    if (*p == '\0') {
> +    fail:
> +        *q = '\0';
> +        *pp = p;
> +        return -1;
> +    }
> +    if (*p == '\"') {
> +        p++;
> +        while (*p != '\0' && *p != '\"') {
> +            if (*p == '\\') {
> +                p++;
> +                c = *p++;
> +                switch (c) {
> +                case 'n':
> +                    c = '\n';
> +                    break;
> +                case 'r':
> +                    c = '\r';
> +                    break;
> +                case '\\':
> +                case '\'':
> +                case '\"':
> +                    break;
> +                default:
> +                    qemu_printf("unsupported escape code: '\\%c'\n", c);
> +                    goto fail;
> +                }
> +                if ((q - buf) < buf_size - 1) {
> +                    *q++ = c;
> +                }
> +            } else {
> +                if ((q - buf) < buf_size - 1) {
> +                    *q++ = *p;
> +                }
> +                p++;
> +            }
> +        }
> +        if (*p != '\"') {
> +            qemu_printf("unterminated string\n");
> +            goto fail;
> +        }
> +        p++;
> +    } else {
> +        while (*p != '\0' && !qemu_isspace(*p)) {
> +            if ((q - buf) < buf_size - 1) {
> +                *q++ = *p;
> +            }
> +            p++;
> +        }
> +    }
> +    *q = '\0';
> +    *pp = p;
> +    return 0;
> +}
> +
> +#define MAX_ARGS 16
> +
> +/* NOTE: this parser is an approximate form of the real command parser */
> +static void parse_cmdline(const char *cmdline,
> +                          int *pnb_args, char **args)
> +{
> +    const char *p;
> +    int nb_args, ret;
> +    char buf[1024];
> +
> +    p = cmdline;
> +    nb_args = 0;
> +    for (;;) {
> +        while (qemu_isspace(*p)) {
> +            p++;
> +        }
> +        if (*p == '\0') {
> +            break;
> +        }
> +        if (nb_args >= MAX_ARGS) {
> +            break;
> +        }
> +        ret = get_str(buf, sizeof(buf), &p);
> +        args[nb_args] = g_strdup(buf);
> +        nb_args++;
> +        if (ret < 0) {
> +            break;
> +        }
> +    }
> +    *pnb_args = nb_args;
> +}
> +
>  static void help_cmd_dump(Monitor *mon, const mon_cmd_t *cmds,
>                            const char *prefix, const char *name)
>  {
> @@ -3411,71 +3509,6 @@ static int get_double(Monitor *mon, double *pval, const char **pp)
>      return 0;
>  }
>  
> -static int get_str(char *buf, int buf_size, const char **pp)
> -{
> -    const char *p;
> -    char *q;
> -    int c;
> -
> -    q = buf;
> -    p = *pp;
> -    while (qemu_isspace(*p))
> -        p++;
> -    if (*p == '\0') {
> -    fail:
> -        *q = '\0';
> -        *pp = p;
> -        return -1;
> -    }
> -    if (*p == '\"') {
> -        p++;
> -        while (*p != '\0' && *p != '\"') {
> -            if (*p == '\\') {
> -                p++;
> -                c = *p++;
> -                switch(c) {
> -                case 'n':
> -                    c = '\n';
> -                    break;
> -                case 'r':
> -                    c = '\r';
> -                    break;
> -                case '\\':
> -                case '\'':
> -                case '\"':
> -                    break;
> -                default:
> -                    qemu_printf("unsupported escape code: '\\%c'\n", c);
> -                    goto fail;
> -                }
> -                if ((q - buf) < buf_size - 1) {
> -                    *q++ = c;
> -                }
> -            } else {
> -                if ((q - buf) < buf_size - 1) {
> -                    *q++ = *p;
> -                }
> -                p++;
> -            }
> -        }
> -        if (*p != '\"') {
> -            qemu_printf("unterminated string\n");
> -            goto fail;
> -        }
> -        p++;
> -    } else {
> -        while (*p != '\0' && !qemu_isspace(*p)) {
> -            if ((q - buf) < buf_size - 1) {
> -                *q++ = *p;
> -            }
> -            p++;
> -        }
> -    }
> -    *q = '\0';
> -    *pp = p;
> -    return 0;
> -}
> -
>  /*
>   * Store the command-name in cmdname, and return a pointer to
>   * the remaining of the command string.
> @@ -3532,8 +3565,6 @@ static char *key_get_info(const char *type, char **key)
>  static int default_fmt_format = 'x';
>  static int default_fmt_size = 4;
>  
> -#define MAX_ARGS 16
> -
>  static int is_valid_option(const char *c, const char *typestr)
>  {
>      char option[3];
> @@ -4099,32 +4130,6 @@ static void block_completion_it(void *opaque, BlockDriverState *bs)
>      }
>  }
>  
> -/* NOTE: this parser is an approximate form of the real command parser */
> -static void parse_cmdline(const char *cmdline,
> -                         int *pnb_args, char **args)
> -{
> -    const char *p;
> -    int nb_args, ret;
> -    char buf[1024];
> -
> -    p = cmdline;
> -    nb_args = 0;
> -    for(;;) {
> -        while (qemu_isspace(*p))
> -            p++;
> -        if (*p == '\0')
> -            break;
> -        if (nb_args >= MAX_ARGS)
> -            break;
> -        ret = get_str(buf, sizeof(buf), &p);
> -        args[nb_args] = g_strdup(buf);
> -        nb_args++;
> -        if (ret < 0)
> -            break;
> -    }
> -    *pnb_args = nb_args;
> -}
> -
>  static const char *next_arg_type(const char *typestr)
>  {
>      const char *p = strchr(typestr, ':');

  reply	other threads:[~2013-07-08 15:30 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-06-29  3:52 [Qemu-devel] [PATCH V5 0/7] monitor: support sub command group in auto completion and help Wenchao Xia
2013-06-29  3:52 ` [Qemu-devel] [PATCH V5 1/7] monitor: avoid direct use of global *cur_mon in completion functions Wenchao Xia
2013-07-08 15:17   ` Luiz Capitulino
2013-07-09  2:06     ` Wenchao Xia
2013-07-09 14:03       ` Wenchao Xia
2013-07-09 14:14         ` Luiz Capitulino
2013-07-10  6:06           ` Wenchao Xia
2013-06-29  3:52 ` [Qemu-devel] [PATCH V5 2/7] monitor: avoid direct use of global variable *mon_cmds Wenchao Xia
2013-07-08 15:29   ` Luiz Capitulino
2013-06-29  3:52 ` [Qemu-devel] [PATCH V5 3/7] monitor: code move for parse_cmdline() Wenchao Xia
2013-07-08 15:26   ` Luiz Capitulino [this message]
2013-06-29  3:52 ` [Qemu-devel] [PATCH V5 4/7] monitor: avoid direct use of global *info_cmds in help functions Wenchao Xia
2013-07-08 15:45   ` Luiz Capitulino
2013-07-10  6:45     ` Wenchao Xia
2013-06-29  3:52 ` [Qemu-devel] [PATCH V5 5/7] monitor: support sub commands in auto completion Wenchao Xia
2013-06-29  3:53 ` [Qemu-devel] [PATCH V5 6/7] monitor: improve "help" in auto completion for sub command Wenchao Xia
2013-07-08 16:09   ` Luiz Capitulino
2013-07-10  6:46     ` Wenchao Xia
2013-06-29  3:53 ` [Qemu-devel] [PATCH V5 7/7] monitor: improve "help" to allow show details of single command in sub group Wenchao Xia
2013-07-08 16:17   ` Luiz Capitulino
2013-07-10  6:47     ` Wenchao Xia
2013-07-07 22:39 ` [Qemu-devel] [PATCH V5 0/7] monitor: support sub command group in auto completion and help Wenchao Xia
2013-07-08 13:33   ` Luiz Capitulino

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20130708112643.2ff3360e@redhat.com \
    --to=lcapitulino@redhat.com \
    --cc=armbru@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=xiawenc@linux.vnet.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.