[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>
- [Qemu-stable] [PATCH 11/14] block/vvfat: Plug memory leak in check_directory_consistency(), (continued)