diff mbox

[v6] vl.c: Output error on invalid machine type

Message ID 90998dac0113b5e791189eb3240d60c13446c709.1391607703.git.mrezanin@redhat.com
State New
Headers show

Commit Message

Miroslav Rezanina Feb. 5, 2014, 1:44 p.m. UTC
From: Miroslav Rezanina <mrezanin@redhat.com>

Output error message using qemu's error_report() function when user
provides the invalid machine type on the command line. This also saves
time to find what issue is when you downgrade from one version of qemu
to another that doesn't support required machine type yet (the version
user downgraded to have to have this patch applied too, of course).

Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
---
v6:
 - print help instead of list supported machines on error
 vl.c | 18 ++++++++++++------
 1 file changed, 12 insertions(+), 6 deletions(-)

Comments

Miroslav Rezanina March 10, 2014, 8:35 a.m. UTC | #1
Hi,
is there any issue with this patch?

Mirek
----- Original Message -----
> From: mrezanin@redhat.com
> To: qemu-devel@nongnu.org
> Sent: Wednesday, February 5, 2014 2:44:23 PM
> Subject: [Qemu-devel] [PATCH v6] vl.c: Output error on invalid machine type
> 
> From: Miroslav Rezanina <mrezanin@redhat.com>
> 
> Output error message using qemu's error_report() function when user
> provides the invalid machine type on the command line. This also saves
> time to find what issue is when you downgrade from one version of qemu
> to another that doesn't support required machine type yet (the version
> user downgraded to have to have this patch applied too, of course).
> 
> Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> ---
> v6:
>  - print help instead of list supported machines on error
>  vl.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/vl.c b/vl.c
> index 383be1b..3297c0a 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2600,13 +2600,19 @@ static QEMUMachine *machine_parse(const char *name)
>      if (machine) {
>          return machine;
>      }
> -    printf("Supported machines are:\n");
> -    for (m = first_machine; m != NULL; m = m->next) {
> -        if (m->alias) {
> -            printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name);
> +
> +    if (name && !is_help_option(name)) {
> +        error_report("Unsupported machine type");
> +        printf("\nUse '-M help' to list supported machines!\n");
> +    } else {
> +        printf("Supported machines are:\n");
> +        for (m = first_machine; m != NULL; m = m->next) {
> +            if (m->alias) {
> +                printf("%-20s %s (alias of %s)\n", m->alias, m->desc,
> m->name);
> +            }
> +            printf("%-20s %s%s\n", m->name, m->desc,
> +                   m->is_default ? " (default)" : "");
>          }
> -        printf("%-20s %s%s\n", m->name, m->desc,
> -               m->is_default ? " (default)" : "");
>      }
>      exit(!name || !is_help_option(name));
>  }
> --
> 1.8.5.3
> 
> 
>
Markus Armbruster March 10, 2014, 9:41 a.m. UTC | #2
mrezanin@redhat.com writes:

> From: Miroslav Rezanina <mrezanin@redhat.com>
>
> Output error message using qemu's error_report() function when user
> provides the invalid machine type on the command line. This also saves
> time to find what issue is when you downgrade from one version of qemu
> to another that doesn't support required machine type yet (the version
> user downgraded to have to have this patch applied too, of course).
>
> Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
> ---
> v6:
>  - print help instead of list supported machines on error
>  vl.c | 18 ++++++++++++------
>  1 file changed, 12 insertions(+), 6 deletions(-)
>
> diff --git a/vl.c b/vl.c
> index 383be1b..3297c0a 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -2600,13 +2600,19 @@ static QEMUMachine *machine_parse(const char *name)
   static QEMUMachine *machine_parse(const char *name)
   {
       QEMUMachine *m, *machine = NULL;

       if (name) {
           machine = find_machine(name);
       }
>      if (machine) {
>          return machine;
>      }
> -    printf("Supported machines are:\n");
> -    for (m = first_machine; m != NULL; m = m->next) {
> -        if (m->alias) {
> -            printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name);
> +
> +    if (name && !is_help_option(name)) {

I don't think !name can happen, but you're sticking to what the existing
code does.  Okay.

> +        error_report("Unsupported machine type");
> +        printf("\nUse '-M help' to list supported machines!\n");

I like this.  It gives a concise error message followed by a hint,
instead of dumping lengthy help on me without a clear indication why I
need it.

-M TYPE is sugar for -machine type=TYPE.  It was deprecated in commit
80f52a6, and purged from documentation and help texts, except for two
occurences in qemu-doc.texi.

Unless we un-deprecate -M, this patch should point to the documented
option -machine type=help, and we should update qemu-doc.texi to use
-machine instead of -M.

> +    } else {
> +        printf("Supported machines are:\n");
> +        for (m = first_machine; m != NULL; m = m->next) {
> +            if (m->alias) {
> +                printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name);
> +            }
> +            printf("%-20s %s%s\n", m->name, m->desc,
> +                   m->is_default ? " (default)" : "");
>          }
> -        printf("%-20s %s%s\n", m->name, m->desc,
> -               m->is_default ? " (default)" : "");
>      }
>      exit(!name || !is_help_option(name));
>  }
Andreas Färber March 10, 2014, 6:21 p.m. UTC | #3
Hi,

Am 10.03.2014 09:35, schrieb Miroslav Rezanina:
> Hi,
> is there any issue with this patch?

It conflicts with Marcel's machine rework that I have queued.

I wonder if we can avoid the reindent to minimize the collision by
adding an exit(EXIT_FAILURE) in the new if?

Regards,
Andreas

> Mirek
> ----- Original Message -----
>> From: mrezanin@redhat.com
>> To: qemu-devel@nongnu.org
>> Sent: Wednesday, February 5, 2014 2:44:23 PM
>> Subject: [Qemu-devel] [PATCH v6] vl.c: Output error on invalid machine type
>>
>> From: Miroslav Rezanina <mrezanin@redhat.com>
>>
>> Output error message using qemu's error_report() function when user
>> provides the invalid machine type on the command line. This also saves
>> time to find what issue is when you downgrade from one version of qemu
>> to another that doesn't support required machine type yet (the version
>> user downgraded to have to have this patch applied too, of course).
>>
>> Signed-off-by: Miroslav Rezanina <mrezanin@redhat.com>
>> ---
>> v6:
>>  - print help instead of list supported machines on error
>>  vl.c | 18 ++++++++++++------
>>  1 file changed, 12 insertions(+), 6 deletions(-)
>>
>> diff --git a/vl.c b/vl.c
>> index 383be1b..3297c0a 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -2600,13 +2600,19 @@ static QEMUMachine *machine_parse(const char *name)
>>      if (machine) {
>>          return machine;
>>      }
>> -    printf("Supported machines are:\n");
>> -    for (m = first_machine; m != NULL; m = m->next) {
>> -        if (m->alias) {
>> -            printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name);
>> +
>> +    if (name && !is_help_option(name)) {
>> +        error_report("Unsupported machine type");
>> +        printf("\nUse '-M help' to list supported machines!\n");
>> +    } else {
>> +        printf("Supported machines are:\n");
>> +        for (m = first_machine; m != NULL; m = m->next) {
>> +            if (m->alias) {
>> +                printf("%-20s %s (alias of %s)\n", m->alias, m->desc,
>> m->name);
>> +            }
>> +            printf("%-20s %s%s\n", m->name, m->desc,
>> +                   m->is_default ? " (default)" : "");
>>          }
>> -        printf("%-20s %s%s\n", m->name, m->desc,
>> -               m->is_default ? " (default)" : "");
>>      }
>>      exit(!name || !is_help_option(name));
>>  }
>> --
>> 1.8.5.3
diff mbox

Patch

diff --git a/vl.c b/vl.c
index 383be1b..3297c0a 100644
--- a/vl.c
+++ b/vl.c
@@ -2600,13 +2600,19 @@  static QEMUMachine *machine_parse(const char *name)
     if (machine) {
         return machine;
     }
-    printf("Supported machines are:\n");
-    for (m = first_machine; m != NULL; m = m->next) {
-        if (m->alias) {
-            printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name);
+
+    if (name && !is_help_option(name)) {
+        error_report("Unsupported machine type");
+        printf("\nUse '-M help' to list supported machines!\n");
+    } else {
+        printf("Supported machines are:\n");
+        for (m = first_machine; m != NULL; m = m->next) {
+            if (m->alias) {
+                printf("%-20s %s (alias of %s)\n", m->alias, m->desc, m->name);
+            }
+            printf("%-20s %s%s\n", m->name, m->desc,
+                   m->is_default ? " (default)" : "");
         }
-        printf("%-20s %s%s\n", m->name, m->desc,
-               m->is_default ? " (default)" : "");
     }
     exit(!name || !is_help_option(name));
 }