qemu-stable
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-stable] [Qemu-devel] [PATCH 05/14] qemu-io: Support multiple -


From: Benoît Canet
Subject: Re: [Qemu-stable] [Qemu-devel] [PATCH 05/14] qemu-io: Support multiple -o in open command
Date: Tue, 27 May 2014 12:33:28 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

The Monday 26 May 2014 à 19:37:06 (+0200), Markus Armbruster wrote :
> Instead of ignoring all option values but the last one, multiple -o
> options now have the same meaning as having a single option with all
> settings in the order of their respective -o options.
> 
> Same as commit 2dc8328 for qemu-img convert, except here we do it with
> QemuOpts rather than QEMUOptionParameter.
> 
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
>  qemu-io.c | 14 +++++++++-----
>  1 file changed, 9 insertions(+), 5 deletions(-)
> 
> diff --git a/qemu-io.c b/qemu-io.c
> index 9fcd72b..ef3fef6 100644
> --- a/qemu-io.c
> +++ b/qemu-io.c
> @@ -118,6 +118,7 @@ static const cmdinfo_t open_cmd = {
>  
>  static QemuOptsList empty_opts = {
>      .name = "drive",
> +    .merge_lists = true,
>      .head = QTAILQ_HEAD_INITIALIZER(empty_opts.head),
>      .desc = {
>          /* no elements => accept any params */
> @@ -132,7 +133,7 @@ static int open_f(BlockDriverState *bs, int argc, char 
> **argv)
>      int growable = 0;
>      int c;
>      QemuOpts *qopts;
> -    QDict *opts = NULL;
> +    QDict *opts;
>  
>      while ((c = getopt(argc, argv, "snrgo:")) != EOF) {
>          switch (c) {
> @@ -149,15 +150,14 @@ static int open_f(BlockDriverState *bs, int argc, char 
> **argv)
>              growable = 1;
>              break;
>          case 'o':
> -            qopts = qemu_opts_parse(&empty_opts, optarg, 0);
> -            if (qopts == NULL) {
> +            if (!qemu_opts_parse(&empty_opts, optarg, 0)) {
>                  printf("could not parse option list -- %s\n", optarg);
> +                qemu_opts_reset(&empty_opts);
>                  return 0;
>              }
> -            opts = qemu_opts_to_qdict(qopts, opts);
> -            qemu_opts_del(qopts);
>              break;
>          default:
> +            qemu_opts_reset(&empty_opts);
>              return qemuio_command_usage(&open_cmd);
>          }
>      }
> @@ -166,6 +166,10 @@ static int open_f(BlockDriverState *bs, int argc, char 
> **argv)
>          flags |= BDRV_O_RDWR;
>      }
>  
> +    qopts = qemu_opts_find(&empty_opts, NULL);
> +    opts = qopts ? qemu_opts_to_qdict(qopts, NULL) : NULL;
> +    qemu_opts_reset(&empty_opts);
> +
>      if (optind == argc - 1) {
>          return openfile(argv[optind], flags, growable, opts);
>      } else if (optind == argc) {
> -- 
> 1.9.3
> 
> 
Reviewed-by: Benoit Canet <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]