All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] Cleanup qemu-img code
@ 2010-12-02 17:46 Jes.Sorensen
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options Jes.Sorensen
                   ` (2 more replies)
  0 siblings, 3 replies; 16+ messages in thread
From: Jes.Sorensen @ 2010-12-02 17:46 UTC (permalink / raw)
  To: kwolf; +Cc: qemu-devel

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Hi,

These patches moves the handling of block help printing to shared
code, which allows the "?" detection to happen early in the parsing,
instead of half way down img_create() and img_convert(). I would like
to see this happen as I would like to pull some of the code out of
img_create() and into block.c so it can be shared with qemu and
qemu-img.

The formatting patch is solely because the third patch wanted to
change code next to the badly formatted code, and I didn't want to
pollute the patch with the formatting fixed.

The third patch fixes qemu-img to exit on detection of unknown options
instead of continuing with a potentially wrong set of arguments.

Cheers,
Jes


Jes Sorensen (3):
  Consolidate printing of block driver options
  Fix formatting and missing braces in qemu-img.c
  Fail if detecting an unknown option

 qemu-img.c |  171 +++++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 136 insertions(+), 35 deletions(-)

-- 
1.7.3.2

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options
  2010-12-02 17:46 [Qemu-devel] [PATCH 0/3] Cleanup qemu-img code Jes.Sorensen
@ 2010-12-02 17:46 ` Jes.Sorensen
  2010-12-03 10:57   ` Stefan Hajnoczi
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 2/3] Fix formatting and missing braces in qemu-img.c Jes.Sorensen
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
  2 siblings, 1 reply; 16+ messages in thread
From: Jes.Sorensen @ 2010-12-02 17:46 UTC (permalink / raw)
  To: kwolf; +Cc: qemu-devel

From: Jes Sorensen <Jes.Sorensen@redhat.com>

This consolidates the printing of block driver options in
print_block_option_help() which is called from both img_create() and
img_convert().

This allows for the "?" detection to be done just after the parsing of
options and the filename, instead of half way down the codepath of
these functions.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 qemu-img.c |   46 +++++++++++++++++++++++++++++++++++++---------
 1 files changed, 37 insertions(+), 9 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index fa77ac0..99f30b3 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -188,6 +188,32 @@ static int read_password(char *buf, int buf_size)
 }
 #endif
 
+static int print_block_option_help(const char *filename, const char *fmt)
+{
+    BlockDriver *drv, *proto_drv;
+    QEMUOptionParameter *create_options = NULL;
+
+    /* Find driver and parse its options */
+    drv = bdrv_find_format(fmt);
+    if (!drv) {
+        error("Unknown file format '%s'", fmt);
+        return 1;
+    }
+
+    proto_drv = bdrv_find_protocol(filename);
+    if (!proto_drv) {
+        error("Unknown protocol '%s'", filename);
+        return 1;
+    }
+
+    create_options = append_option_parameters(create_options,
+                                              drv->create_options);
+    create_options = append_option_parameters(create_options,
+                                              proto_drv->create_options);
+    print_option_help(create_options);
+    return 0;
+}
+
 static BlockDriverState *bdrv_new_open(const char *filename,
                                        const char *fmt,
                                        int flags)
@@ -310,6 +336,11 @@ static int img_create(int argc, char **argv)
         help();
     filename = argv[optind++];
 
+    if (options && !strcmp(options, "?")) {
+        ret = print_block_option_help(filename, fmt);
+        goto out;
+    }
+
     /* Find driver and parse its options */
     drv = bdrv_find_format(fmt);
     if (!drv) {
@@ -328,11 +359,6 @@ static int img_create(int argc, char **argv)
     create_options = append_option_parameters(create_options,
                                               proto_drv->create_options);
 
-    if (options && !strcmp(options, "?")) {
-        print_option_help(create_options);
-        goto out;
-    }
-
     /* Create parameter list with default values */
     param = parse_option_parameters("", create_options, param);
     set_option_parameter_int(param, BLOCK_OPT_SIZE, -1);
@@ -694,6 +720,11 @@ static int img_convert(int argc, char **argv)
 
     out_filename = argv[argc - 1];
 
+    if (options && !strcmp(options, "?")) {
+        ret = print_block_option_help(out_filename, out_fmt);
+        goto out2;
+    }
+
     if (bs_n > 1 && out_baseimg) {
         error("-B makes no sense when concatenating multiple input images");
         return 1;
@@ -749,10 +780,6 @@ static int img_convert(int argc, char **argv)
                                               drv->create_options);
     create_options = append_option_parameters(create_options,
                                               proto_drv->create_options);
-    if (options && !strcmp(options, "?")) {
-        print_option_help(create_options);
-        goto out;
-    }
 
     if (options) {
         param = parse_option_parameters(options, create_options, param);
@@ -984,6 +1011,7 @@ out:
         }
     }
     free(bs);
+out2:
     if (ret) {
         return 1;
     }
-- 
1.7.3.2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [Qemu-devel] [PATCH 2/3] Fix formatting and missing braces in qemu-img.c
  2010-12-02 17:46 [Qemu-devel] [PATCH 0/3] Cleanup qemu-img code Jes.Sorensen
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options Jes.Sorensen
@ 2010-12-02 17:46 ` Jes.Sorensen
  2010-12-03 11:04   ` Stefan Hajnoczi
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
  2 siblings, 1 reply; 16+ messages in thread
From: Jes.Sorensen @ 2010-12-02 17:46 UTC (permalink / raw)
  To: kwolf; +Cc: qemu-devel

From: Jes Sorensen <Jes.Sorensen@redhat.com>

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 qemu-img.c |   77 +++++++++++++++++++++++++++++++++++++++--------------------
 1 files changed, 51 insertions(+), 26 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index 99f30b3..d0dc445 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -304,8 +304,9 @@ static int img_create(int argc, char **argv)
     flags = 0;
     for(;;) {
         c = getopt(argc, argv, "F:b:f:he6o:");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -332,8 +333,9 @@ static int img_create(int argc, char **argv)
     }
 
     /* Get the filename */
-    if (optind >= argc)
+    if (optind >= argc) {
         help();
+    }
     filename = argv[optind++];
 
     if (options && !strcmp(options, "?")) {
@@ -470,8 +472,9 @@ static int img_check(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -481,8 +484,9 @@ static int img_check(int argc, char **argv)
             break;
         }
     }
-    if (optind >= argc)
+    if (optind >= argc) {
         help();
+    }
     filename = argv[optind++];
 
     bs = bdrv_new_open(filename, fmt, BDRV_O_FLAGS);
@@ -546,8 +550,9 @@ static int img_commit(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -557,8 +562,9 @@ static int img_commit(int argc, char **argv)
             break;
         }
     }
-    if (optind >= argc)
+    if (optind >= argc) {
         help();
+    }
     filename = argv[optind++];
 
     bs = bdrv_new_open(filename, fmt, BDRV_O_FLAGS | BDRV_O_RDWR);
@@ -682,8 +688,9 @@ static int img_convert(int argc, char **argv)
     flags = 0;
     for(;;) {
         c = getopt(argc, argv, "f:O:B:s:hce6o:");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -716,7 +723,9 @@ static int img_convert(int argc, char **argv)
     }
 
     bs_n = argc - optind - 1;
-    if (bs_n < 1) help();
+    if (bs_n < 1) {
+        help();
+    }
 
     out_filename = argv[argc - 1];
 
@@ -907,8 +916,9 @@ static int img_convert(int argc, char **argv)
             }
             assert (remainder == 0);
 
-            if (n < cluster_sectors)
+            if (n < cluster_sectors) {
                 memset(buf + n * 512, 0, cluster_size - n * 512);
+            }
             if (is_not_zero(buf, cluster_size)) {
                 ret = bdrv_write_compressed(out_bs, sector_num, buf,
                                             cluster_sectors);
@@ -928,12 +938,14 @@ static int img_convert(int argc, char **argv)
         sector_num = 0; // total number of sectors converted so far
         for(;;) {
             nb_sectors = total_sectors - sector_num;
-            if (nb_sectors <= 0)
+            if (nb_sectors <= 0) {
                 break;
-            if (nb_sectors >= (IO_BUF_SIZE / 512))
+            }
+            if (nb_sectors >= (IO_BUF_SIZE / 512)) {
                 n = (IO_BUF_SIZE / 512);
-            else
+            } else {
                 n = nb_sectors;
+            }
 
             while (sector_num - bs_offset >= bs_sectors) {
                 bs_i ++;
@@ -945,8 +957,9 @@ static int img_convert(int argc, char **argv)
                    sector_num, bs_i, bs_offset, bs_sectors); */
             }
 
-            if (n > bs_offset + bs_sectors - sector_num)
+            if (n > bs_offset + bs_sectors - sector_num) {
                 n = bs_offset + bs_sectors - sector_num;
+            }
 
             if (has_zero_init) {
                 /* If the output image is being created as a copy on write image,
@@ -1081,8 +1094,9 @@ static int img_info(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -1092,8 +1106,9 @@ static int img_info(int argc, char **argv)
             break;
         }
     }
-    if (optind >= argc)
+    if (optind >= argc) {
         help();
+    }
     filename = argv[optind++];
 
     bs = bdrv_new_open(filename, fmt, BDRV_O_FLAGS | BDRV_O_NO_BACKING);
@@ -1104,11 +1119,12 @@ static int img_info(int argc, char **argv)
     bdrv_get_geometry(bs, &total_sectors);
     get_human_readable_size(size_buf, sizeof(size_buf), total_sectors * 512);
     allocated_size = get_allocated_file_size(filename);
-    if (allocated_size < 0)
+    if (allocated_size < 0) {
         snprintf(dsize_buf, sizeof(dsize_buf), "unavailable");
-    else
+    } else {
         get_human_readable_size(dsize_buf, sizeof(dsize_buf),
                                 allocated_size);
+    }
     printf("image: %s\n"
            "file format: %s\n"
            "virtual size: %s (%" PRId64 " bytes)\n"
@@ -1116,11 +1132,13 @@ static int img_info(int argc, char **argv)
            filename, fmt_name, size_buf,
            (total_sectors * 512),
            dsize_buf);
-    if (bdrv_is_encrypted(bs))
+    if (bdrv_is_encrypted(bs)) {
         printf("encrypted: yes\n");
+    }
     if (bdrv_get_info(bs, &bdi) >= 0) {
-        if (bdi.cluster_size != 0)
+        if (bdi.cluster_size != 0) {
             printf("cluster_size: %d\n", bdi.cluster_size);
+        }
     }
     bdrv_get_backing_filename(bs, backing_filename, sizeof(backing_filename));
     if (backing_filename[0] != '\0') {
@@ -1153,8 +1171,9 @@ static int img_snapshot(int argc, char **argv)
     /* Parse commandline parameters */
     for(;;) {
         c = getopt(argc, argv, "la:c:d:h");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -1194,8 +1213,9 @@ static int img_snapshot(int argc, char **argv)
         }
     }
 
-    if (optind >= argc)
+    if (optind >= argc) {
         help();
+    }
     filename = argv[optind++];
 
     /* Open the image */
@@ -1219,23 +1239,26 @@ static int img_snapshot(int argc, char **argv)
         sn.date_nsec = tv.tv_usec * 1000;
 
         ret = bdrv_snapshot_create(bs, &sn);
-        if (ret)
+        if (ret) {
             error("Could not create snapshot '%s': %d (%s)",
                 snapshot_name, ret, strerror(-ret));
+        }
         break;
 
     case SNAPSHOT_APPLY:
         ret = bdrv_snapshot_goto(bs, snapshot_name);
-        if (ret)
+        if (ret) {
             error("Could not apply snapshot '%s': %d (%s)",
                 snapshot_name, ret, strerror(-ret));
+        }
         break;
 
     case SNAPSHOT_DELETE:
         ret = bdrv_snapshot_delete(bs, snapshot_name);
-        if (ret)
+        if (ret) {
             error("Could not delete snapshot '%s': %d (%s)",
                 snapshot_name, ret, strerror(-ret));
+        }
         break;
     }
 
@@ -1263,8 +1286,9 @@ static int img_rebase(int argc, char **argv)
 
     for(;;) {
         c = getopt(argc, argv, "uhf:F:b:");
-        if (c == -1)
+        if (c == -1) {
             break;
+        }
         switch(c) {
         case 'h':
             help();
@@ -1284,8 +1308,9 @@ static int img_rebase(int argc, char **argv)
         }
     }
 
-    if ((optind >= argc) || !out_baseimg)
+    if ((optind >= argc) || !out_baseimg) {
         help();
+    }
     filename = argv[optind++];
 
     /*
-- 
1.7.3.2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option
  2010-12-02 17:46 [Qemu-devel] [PATCH 0/3] Cleanup qemu-img code Jes.Sorensen
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options Jes.Sorensen
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 2/3] Fix formatting and missing braces in qemu-img.c Jes.Sorensen
@ 2010-12-02 17:46 ` Jes.Sorensen
  2010-12-03 11:46   ` Stefan Hajnoczi
  2010-12-03 12:30   ` [Qemu-devel] " Kevin Wolf
  2 siblings, 2 replies; 16+ messages in thread
From: Jes.Sorensen @ 2010-12-02 17:46 UTC (permalink / raw)
  To: kwolf; +Cc: qemu-devel

From: Jes Sorensen <Jes.Sorensen@redhat.com>

This patch changes qemu-img to exit if an unknown option is detected,
instead of trying to continue with a set of arguments which may be
incorrect.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 qemu-img.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 48 insertions(+), 0 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index d0dc445..f2e1c94 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -304,6 +304,12 @@ static int img_create(int argc, char **argv)
     flags = 0;
     for(;;) {
         c = getopt(argc, argv, "F:b:f:he6o:");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -472,6 +478,12 @@ static int img_check(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -550,6 +562,12 @@ static int img_commit(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -688,6 +706,12 @@ static int img_convert(int argc, char **argv)
     flags = 0;
     for(;;) {
         c = getopt(argc, argv, "f:O:B:s:hce6o:");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -1094,6 +1118,12 @@ static int img_info(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -1171,6 +1201,12 @@ static int img_snapshot(int argc, char **argv)
     /* Parse commandline parameters */
     for(;;) {
         c = getopt(argc, argv, "la:c:d:h");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -1286,6 +1322,12 @@ static int img_rebase(int argc, char **argv)
 
     for(;;) {
         c = getopt(argc, argv, "uhf:F:b:");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
@@ -1500,6 +1542,12 @@ static int img_resize(int argc, char **argv)
     fmt = NULL;
     for(;;) {
         c = getopt(argc, argv, "f:h");
+        /*
+         * Fail if we detect an unknown argument
+         */
+        if (c == '?') {
+            return 1;
+        }
         if (c == -1) {
             break;
         }
-- 
1.7.3.2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options Jes.Sorensen
@ 2010-12-03 10:57   ` Stefan Hajnoczi
  2010-12-03 10:59     ` Jes Sorensen
  2010-12-03 10:59     ` Stefan Hajnoczi
  0 siblings, 2 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2010-12-03 10:57 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: kwolf, qemu-devel

On Thu, Dec 2, 2010 at 5:46 PM,  <Jes.Sorensen@redhat.com> wrote:
> @@ -188,6 +188,32 @@ static int read_password(char *buf, int buf_size)
>  }
>  #endif
>
> +static int print_block_option_help(const char *filename, const char *fmt)
> +{
> +    BlockDriver *drv, *proto_drv;
> +    QEMUOptionParameter *create_options = NULL;
> +
> +    /* Find driver and parse its options */
> +    drv = bdrv_find_format(fmt);
> +    if (!drv) {
> +        error("Unknown file format '%s'", fmt);
> +        return 1;
> +    }
> +
> +    proto_drv = bdrv_find_protocol(filename);
> +    if (!proto_drv) {
> +        error("Unknown protocol '%s'", filename);
> +        return 1;
> +    }
> +
> +    create_options = append_option_parameters(create_options,
> +                                              drv->create_options);
> +    create_options = append_option_parameters(create_options,
> +                                              proto_drv->create_options);
> +    print_option_help(create_options);

free_option_parameters(create_options);

> @@ -694,6 +720,11 @@ static int img_convert(int argc, char **argv)
>
>     out_filename = argv[argc - 1];
>
> +    if (options && !strcmp(options, "?")) {
> +        ret = print_block_option_help(out_filename, out_fmt);
> +        goto out2;
> +    }
> +
>     if (bs_n > 1 && out_baseimg) {
>         error("-B makes no sense when concatenating multiple input images");
>         return 1;
> @@ -749,10 +780,6 @@ static int img_convert(int argc, char **argv)
>                                               drv->create_options);
>     create_options = append_option_parameters(create_options,
>                                               proto_drv->create_options);
> -    if (options && !strcmp(options, "?")) {
> -        print_option_help(create_options);
> -        goto out;
> -    }
>
>     if (options) {
>         param = parse_option_parameters(options, create_options, param);
> @@ -984,6 +1011,7 @@ out:
>         }
>     }
>     free(bs);
> +out2:

Not needed, out is fine.  All those free functions are nops on NULL pointers.

Even simpler would be to just return early instead of jumping to a
label.  The other checks at the top of the function also do that.

Stefan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options
  2010-12-03 10:57   ` Stefan Hajnoczi
@ 2010-12-03 10:59     ` Jes Sorensen
  2010-12-03 10:59     ` Stefan Hajnoczi
  1 sibling, 0 replies; 16+ messages in thread
From: Jes Sorensen @ 2010-12-03 10:59 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: kwolf, qemu-devel

On 12/03/10 11:57, Stefan Hajnoczi wrote:
> On Thu, Dec 2, 2010 at 5:46 PM,  <Jes.Sorensen@redhat.com> wrote:
>> +    create_options = append_option_parameters(create_options,
>> +                                              drv->create_options);
>> +    create_options = append_option_parameters(create_options,
>> +                                              proto_drv->create_options);
>> +    print_option_help(create_options);
> 
> free_option_parameters(create_options);

Hmmm good point

>> @@ -694,6 +720,11 @@ static int img_convert(int argc, char **argv)
>>
>>     out_filename = argv[argc - 1];
>>
>> +    if (options && !strcmp(options, "?")) {
>> +        ret = print_block_option_help(out_filename, out_fmt);
>> +        goto out2;
>> +    }
>> +
>>     if (bs_n > 1 && out_baseimg) {
>>         error("-B makes no sense when concatenating multiple input images");
>>         return 1;
>> @@ -749,10 +780,6 @@ static int img_convert(int argc, char **argv)
>>                                               drv->create_options);
>>     create_options = append_option_parameters(create_options,
>>                                               proto_drv->create_options);
>> -    if (options && !strcmp(options, "?")) {
>> -        print_option_help(create_options);
>> -        goto out;
>> -    }
>>
>>     if (options) {
>>         param = parse_option_parameters(options, create_options, param);
>> @@ -984,6 +1011,7 @@ out:
>>         }
>>     }
>>     free(bs);
>> +out2:
> 
> Not needed, out is fine.  All those free functions are nops on NULL pointers.

Actually tried that, but it segfaulted, which is why I added out2.

Cheers,
Jes

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options
  2010-12-03 10:57   ` Stefan Hajnoczi
  2010-12-03 10:59     ` Jes Sorensen
@ 2010-12-03 10:59     ` Stefan Hajnoczi
  1 sibling, 0 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2010-12-03 10:59 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: kwolf, qemu-devel

On Fri, Dec 3, 2010 at 10:57 AM, Stefan Hajnoczi <stefanha@gmail.com> wrote:
> On Thu, Dec 2, 2010 at 5:46 PM,  <Jes.Sorensen@redhat.com> wrote:
>> @@ -694,6 +720,11 @@ static int img_convert(int argc, char **argv)
>>
>>     out_filename = argv[argc - 1];
>>
>> +    if (options && !strcmp(options, "?")) {
>> +        ret = print_block_option_help(out_filename, out_fmt);
>> +        goto out2;
>> +    }
>> +
>>     if (bs_n > 1 && out_baseimg) {
>>         error("-B makes no sense when concatenating multiple input images");
>>         return 1;
>> @@ -749,10 +780,6 @@ static int img_convert(int argc, char **argv)
>>                                               drv->create_options);
>>     create_options = append_option_parameters(create_options,
>>                                               proto_drv->create_options);
>> -    if (options && !strcmp(options, "?")) {
>> -        print_option_help(create_options);
>> -        goto out;
>> -    }
>>
>>     if (options) {
>>         param = parse_option_parameters(options, create_options, param);
>> @@ -984,6 +1011,7 @@ out:
>>         }
>>     }
>>     free(bs);
>> +out2:
>
> Not needed, out is fine.  All those free functions are nops on NULL pointers.

Sorry, my comment is incorrect.  It is possible for bs_n > 0 and we'll
try to free bs[i].

Stefan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 2/3] Fix formatting and missing braces in qemu-img.c
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 2/3] Fix formatting and missing braces in qemu-img.c Jes.Sorensen
@ 2010-12-03 11:04   ` Stefan Hajnoczi
  0 siblings, 0 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2010-12-03 11:04 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: kwolf, qemu-devel

On Thu, Dec 2, 2010 at 5:46 PM,  <Jes.Sorensen@redhat.com> wrote:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
>  qemu-img.c |   77 +++++++++++++++++++++++++++++++++++++++--------------------
>  1 files changed, 51 insertions(+), 26 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
@ 2010-12-03 11:46   ` Stefan Hajnoczi
  2010-12-06  8:01     ` Jes Sorensen
  2010-12-03 12:30   ` [Qemu-devel] " Kevin Wolf
  1 sibling, 1 reply; 16+ messages in thread
From: Stefan Hajnoczi @ 2010-12-03 11:46 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: kwolf, qemu-devel

On Thu, Dec 2, 2010 at 5:46 PM,  <Jes.Sorensen@redhat.com> wrote:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> This patch changes qemu-img to exit if an unknown option is detected,
> instead of trying to continue with a set of arguments which may be
> incorrect.
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
>  qemu-img.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 48 insertions(+), 0 deletions(-)

Do we get a silent exit if an unknown option is detected?  Normally
programs print their help/usage when this happens.

Stefan

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Qemu-devel] Re: [PATCH 3/3] Fail if detecting an unknown option
  2010-12-02 17:46 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
  2010-12-03 11:46   ` Stefan Hajnoczi
@ 2010-12-03 12:30   ` Kevin Wolf
  2010-12-06  8:02     ` Jes Sorensen
  1 sibling, 1 reply; 16+ messages in thread
From: Kevin Wolf @ 2010-12-03 12:30 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: qemu-devel

Am 02.12.2010 18:46, schrieb Jes.Sorensen@redhat.com:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
> 
> This patch changes qemu-img to exit if an unknown option is detected,
> instead of trying to continue with a set of arguments which may be
> incorrect.
> 
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
>  qemu-img.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
>  1 files changed, 48 insertions(+), 0 deletions(-)
> 
> diff --git a/qemu-img.c b/qemu-img.c
> index d0dc445..f2e1c94 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -304,6 +304,12 @@ static int img_create(int argc, char **argv)
>      flags = 0;
>      for(;;) {
>          c = getopt(argc, argv, "F:b:f:he6o:");
> +        /*
> +         * Fail if we detect an unknown argument
> +         */
> +        if (c == '?') {
> +            return 1;
> +        }
>          if (c == -1) {
>              break;
>          }

Why not making it another case in the switch statement below instead of
an additional if?

Kevin

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option
  2010-12-03 11:46   ` Stefan Hajnoczi
@ 2010-12-06  8:01     ` Jes Sorensen
  0 siblings, 0 replies; 16+ messages in thread
From: Jes Sorensen @ 2010-12-06  8:01 UTC (permalink / raw)
  To: Stefan Hajnoczi; +Cc: kwolf, qemu-devel

On 12/03/10 12:46, Stefan Hajnoczi wrote:
> On Thu, Dec 2, 2010 at 5:46 PM,  <Jes.Sorensen@redhat.com> wrote:
>> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>>
>> This patch changes qemu-img to exit if an unknown option is detected,
>> instead of trying to continue with a set of arguments which may be
>> incorrect.
>>
>> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
>> ---
>>  qemu-img.c |   48 ++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 files changed, 48 insertions(+), 0 deletions(-)
> 
> Do we get a silent exit if an unknown option is detected?  Normally
> programs print their help/usage when this happens.
> 
> Stefan

Fixed in the next version :)

Cheers,
Jes

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Qemu-devel] Re: [PATCH 3/3] Fail if detecting an unknown option
  2010-12-03 12:30   ` [Qemu-devel] " Kevin Wolf
@ 2010-12-06  8:02     ` Jes Sorensen
  2010-12-06  9:37       ` Kevin Wolf
  0 siblings, 1 reply; 16+ messages in thread
From: Jes Sorensen @ 2010-12-06  8:02 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-devel

On 12/03/10 13:30, Kevin Wolf wrote:
> Am 02.12.2010 18:46, schrieb Jes.Sorensen@redhat.com:
>> diff --git a/qemu-img.c b/qemu-img.c
>> index d0dc445..f2e1c94 100644
>> --- a/qemu-img.c
>> +++ b/qemu-img.c
>> @@ -304,6 +304,12 @@ static int img_create(int argc, char **argv)
>>      flags = 0;
>>      for(;;) {
>>          c = getopt(argc, argv, "F:b:f:he6o:");
>> +        /*
>> +         * Fail if we detect an unknown argument
>> +         */
>> +        if (c == '?') {
>> +            return 1;
>> +        }
>>          if (c == -1) {
>>              break;
>>          }
> 
> Why not making it another case in the switch statement below instead of
> an additional if?

There is a perfectly logical explanation for that. Doing that would
require for me to have clue, which is a bit much to expect :)

That said, we should really do the same for the c == -1 case as well.

Fixed in next version.

Cheers,
Jes

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Qemu-devel] Re: [PATCH 3/3] Fail if detecting an unknown option
  2010-12-06  8:02     ` Jes Sorensen
@ 2010-12-06  9:37       ` Kevin Wolf
  2010-12-06 10:20         ` Jes Sorensen
  0 siblings, 1 reply; 16+ messages in thread
From: Kevin Wolf @ 2010-12-06  9:37 UTC (permalink / raw)
  To: Jes Sorensen; +Cc: qemu-devel

Am 06.12.2010 09:02, schrieb Jes Sorensen:
> On 12/03/10 13:30, Kevin Wolf wrote:
>> Am 02.12.2010 18:46, schrieb Jes.Sorensen@redhat.com:
>>> diff --git a/qemu-img.c b/qemu-img.c
>>> index d0dc445..f2e1c94 100644
>>> --- a/qemu-img.c
>>> +++ b/qemu-img.c
>>> @@ -304,6 +304,12 @@ static int img_create(int argc, char **argv)
>>>      flags = 0;
>>>      for(;;) {
>>>          c = getopt(argc, argv, "F:b:f:he6o:");
>>> +        /*
>>> +         * Fail if we detect an unknown argument
>>> +         */
>>> +        if (c == '?') {
>>> +            return 1;
>>> +        }
>>>          if (c == -1) {
>>>              break;
>>>          }
>>
>> Why not making it another case in the switch statement below instead of
>> an additional if?
> 
> There is a perfectly logical explanation for that. Doing that would
> require for me to have clue, which is a bit much to expect :)
> 
> That said, we should really do the same for the c == -1 case as well.

That's what I thought at first, too. But then the break relates to the
switch instead of the for, so it would have to become a goto to a new
label. Probably not a big improvement...

Kevin

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Qemu-devel] Re: [PATCH 3/3] Fail if detecting an unknown option
  2010-12-06  9:37       ` Kevin Wolf
@ 2010-12-06 10:20         ` Jes Sorensen
  0 siblings, 0 replies; 16+ messages in thread
From: Jes Sorensen @ 2010-12-06 10:20 UTC (permalink / raw)
  To: Kevin Wolf; +Cc: qemu-devel

On 12/06/10 10:37, Kevin Wolf wrote:
> Am 06.12.2010 09:02, schrieb Jes Sorensen:
>> On 12/03/10 13:30, Kevin Wolf wrote:
>> There is a perfectly logical explanation for that. Doing that would
>> require for me to have clue, which is a bit much to expect :)
>>
>> That said, we should really do the same for the c == -1 case as well.
> 
> That's what I thought at first, too. But then the break relates to the
> switch instead of the for, so it would have to become a goto to a new
> label. Probably not a big improvement...

Yeah, it hit me the moment I hit send, so ignore that comment.

Cheers,
Jes

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option
  2010-12-06  8:17 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
@ 2010-12-06  9:24   ` Stefan Hajnoczi
  0 siblings, 0 replies; 16+ messages in thread
From: Stefan Hajnoczi @ 2010-12-06  9:24 UTC (permalink / raw)
  To: Jes.Sorensen; +Cc: kwolf, stefanha, qemu-devel

On Mon, Dec 6, 2010 at 8:17 AM,  <Jes.Sorensen@redhat.com> wrote:
> From: Jes Sorensen <Jes.Sorensen@redhat.com>
>
> This patch changes qemu-img to exit if an unknown option is detected,
> instead of trying to continue with a set of arguments which may be
> incorrect.
>
> Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
> ---
>  qemu-img.c |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)

Reviewed-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>

^ permalink raw reply	[flat|nested] 16+ messages in thread

* [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option
  2010-12-06  8:17 [Qemu-devel] [PATCH v2 0/3] Cleanup qemu-img code Jes.Sorensen
@ 2010-12-06  8:17 ` Jes.Sorensen
  2010-12-06  9:24   ` Stefan Hajnoczi
  0 siblings, 1 reply; 16+ messages in thread
From: Jes.Sorensen @ 2010-12-06  8:17 UTC (permalink / raw)
  To: kwolf; +Cc: stefanha, qemu-devel

From: Jes Sorensen <Jes.Sorensen@redhat.com>

This patch changes qemu-img to exit if an unknown option is detected,
instead of trying to continue with a set of arguments which may be
incorrect.

Signed-off-by: Jes Sorensen <Jes.Sorensen@redhat.com>
---
 qemu-img.c |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/qemu-img.c b/qemu-img.c
index 2a54ae2..3e3ca36 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -309,6 +309,7 @@ static int img_create(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             break;
@@ -477,6 +478,7 @@ static int img_check(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             break;
@@ -555,6 +557,7 @@ static int img_commit(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             break;
@@ -693,6 +696,7 @@ static int img_convert(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             break;
@@ -1099,6 +1103,7 @@ static int img_info(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             break;
@@ -1176,6 +1181,7 @@ static int img_snapshot(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             return 0;
@@ -1291,6 +1297,7 @@ static int img_rebase(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             return 0;
@@ -1505,6 +1512,7 @@ static int img_resize(int argc, char **argv)
             break;
         }
         switch(c) {
+        case '?':
         case 'h':
             help();
             break;
-- 
1.7.3.2

^ permalink raw reply related	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2010-12-06 10:20 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-12-02 17:46 [Qemu-devel] [PATCH 0/3] Cleanup qemu-img code Jes.Sorensen
2010-12-02 17:46 ` [Qemu-devel] [PATCH 1/3] Consolidate printing of block driver options Jes.Sorensen
2010-12-03 10:57   ` Stefan Hajnoczi
2010-12-03 10:59     ` Jes Sorensen
2010-12-03 10:59     ` Stefan Hajnoczi
2010-12-02 17:46 ` [Qemu-devel] [PATCH 2/3] Fix formatting and missing braces in qemu-img.c Jes.Sorensen
2010-12-03 11:04   ` Stefan Hajnoczi
2010-12-02 17:46 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
2010-12-03 11:46   ` Stefan Hajnoczi
2010-12-06  8:01     ` Jes Sorensen
2010-12-03 12:30   ` [Qemu-devel] " Kevin Wolf
2010-12-06  8:02     ` Jes Sorensen
2010-12-06  9:37       ` Kevin Wolf
2010-12-06 10:20         ` Jes Sorensen
2010-12-06  8:17 [Qemu-devel] [PATCH v2 0/3] Cleanup qemu-img code Jes.Sorensen
2010-12-06  8:17 ` [Qemu-devel] [PATCH 3/3] Fail if detecting an unknown option Jes.Sorensen
2010-12-06  9:24   ` Stefan Hajnoczi

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.