diff mbox

qemu-img: show help for invalid global options

Message ID 20170313051108.26811-1-stefanha@redhat.com
State New
Headers show

Commit Message

Stefan Hajnoczi March 13, 2017, 5:11 a.m. UTC
The qemu-img sub-command executes regardless of invalid global options:

  $ qemu-img --foo info test.img
  qemu-img: unrecognized option '--foo'
  image: test.img
  ...

The unrecognized option warning may be missed by the user.  This can
hide incorrect command-lines in scripts and confuse users.

This patch prints the help information and terminates instead of
executing the sub-command.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
---
 qemu-img.c | 1 +
 1 file changed, 1 insertion(+)

Comments

Eric Blake March 13, 2017, 1:17 p.m. UTC | #1
On 03/13/2017 12:11 AM, Stefan Hajnoczi wrote:
> The qemu-img sub-command executes regardless of invalid global options:
> 
>   $ qemu-img --foo info test.img
>   qemu-img: unrecognized option '--foo'
>   image: test.img
>   ...
> 
> The unrecognized option warning may be missed by the user.  This can
> hide incorrect command-lines in scripts and confuse users.
> 
> This patch prints the help information and terminates instead of
> executing the sub-command.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  qemu-img.c | 1 +
>  1 file changed, 1 insertion(+)

Reviewed-by: Eric Blake <eblake@redhat.com>

> 
> diff --git a/qemu-img.c b/qemu-img.c
> index 98b836b..ce293a4 100644
> --- a/qemu-img.c
> +++ b/qemu-img.c
> @@ -4339,6 +4339,7 @@ int main(int argc, char **argv)
>      while ((c = getopt_long(argc, argv, "+hVT:", long_options, NULL)) != -1) {
>          switch (c) {
>          case 'h':
> +        case '?':
>              help();
>              return 0;
>          case 'V':
>
Max Reitz March 16, 2017, 2:07 a.m. UTC | #2
On 13.03.2017 06:11, Stefan Hajnoczi wrote:
> The qemu-img sub-command executes regardless of invalid global options:
> 
>   $ qemu-img --foo info test.img
>   qemu-img: unrecognized option '--foo'
>   image: test.img
>   ...
> 
> The unrecognized option warning may be missed by the user.  This can
> hide incorrect command-lines in scripts and confuse users.
> 
> This patch prints the help information and terminates instead of
> executing the sub-command.
> 
> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> ---
>  qemu-img.c | 1 +
>  1 file changed, 1 insertion(+)

Well, now you get blown away by a wall of text and spotting what went
wrong is actually not quite simple. Maybe we should follow the way of
the coreutils, that is:

qemu-img: unrecognized option '--foo'
Try 'qemu-img --help' for more information.

?

Max
Stefan Hajnoczi March 17, 2017, 9:45 a.m. UTC | #3
On Thu, Mar 16, 2017 at 03:07:29AM +0100, Max Reitz wrote:
> On 13.03.2017 06:11, Stefan Hajnoczi wrote:
> > The qemu-img sub-command executes regardless of invalid global options:
> > 
> >   $ qemu-img --foo info test.img
> >   qemu-img: unrecognized option '--foo'
> >   image: test.img
> >   ...
> > 
> > The unrecognized option warning may be missed by the user.  This can
> > hide incorrect command-lines in scripts and confuse users.
> > 
> > This patch prints the help information and terminates instead of
> > executing the sub-command.
> > 
> > Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
> > ---
> >  qemu-img.c | 1 +
> >  1 file changed, 1 insertion(+)
> 
> Well, now you get blown away by a wall of text and spotting what went
> wrong is actually not quite simple. Maybe we should follow the way of
> the coreutils, that is:
> 
> qemu-img: unrecognized option '--foo'
> Try 'qemu-img --help' for more information.
> 
> ?

Sure, I'll add another patch to improve that.

Stefan
diff mbox

Patch

diff --git a/qemu-img.c b/qemu-img.c
index 98b836b..ce293a4 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -4339,6 +4339,7 @@  int main(int argc, char **argv)
     while ((c = getopt_long(argc, argv, "+hVT:", long_options, NULL)) != -1) {
         switch (c) {
         case 'h':
+        case '?':
             help();
             return 0;
         case 'V':