qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Markus Armbruster <armbru@redhat.com>, mrezanin@redhat.com
Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH v7] vl.c: Output error on invalid machine type
Date: Mon, 17 Mar 2014 11:47:55 +0100	[thread overview]
Message-ID: <5326D2DB.2050305@redhat.com> (raw)
In-Reply-To: <87fvmhgsij.fsf@blackfin.pond.sub.org>

Il 17/03/2014 09:04, Markus Armbruster ha scritto:
> 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>
>> ---
>> v7:
>>  - use -machine instead of -M in error help message
>>  - rebase to commit 0056ae2
>>
>> v6:
>>  - print help instead of list supported machines on error
>> ---
>>  vl.c | 21 +++++++++++++--------
>>  1 file changed, 13 insertions(+), 8 deletions(-)
>>
>> diff --git a/vl.c b/vl.c
>> index 862cf20..cbd1381 100644
>> --- a/vl.c
>> +++ b/vl.c
>> @@ -2649,15 +2649,20 @@ static MachineClass *machine_parse(const char *name)
>>      if (mc) {
>>          return mc;
>>      }
>> -    printf("Supported machines are:\n");
>> -    for (el = machines; el; el = el->next) {
>> -        MachineClass *mc = el->data;
>> -        QEMUMachine *m = mc->qemu_machine;
>> -        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 -machine help to list supported machines!\n");
>
> Why the newline before 'Use'?
>
> Recommend to write the hint to the same fd as the error message.  An
> obvious way to do that is error_printf(), and it's what we do elsewhere.
>
> Both missed this in my review of v1, sorry.

I'm collecting a few patches for 2.0-rc1, so I fixed this printf and 
applied it.

Paolo

>> +    } else {
>> +        printf("Supported machines are:\n");
>> +        for (el = machines; el; el = el->next) {
>> +            MachineClass *mc = el->data;
>> +            QEMUMachine *m = mc->qemu_machine;
>> +            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)" : "");
>>      }
>>
>>      g_slist_free(machines);
>
> The functions logic is a bit tortured (not your fault).  Here's how I'd
> clean it up:
>
> static MachineClass *machine_parse(const char *name)
> {
>     MachineClass *mc;
>     GSList *el, *machines;
>
>     if (is_help_option(name)) {
>         machines = object_class_get_list(TYPE_MACHINE, false);
>
>         printf("Supported machines are:\n");
>         for (el = machines; el; el = el->next) {
>             MachineClass *mc = el->data;
>             QEMUMachine *m = mc->qemu_machine;
>             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)" : "");
>         }
>
>         g_slist_free(machines);
>         exit(0);
>     }
>
>     mc = find_machine(name);
>     if (!mc) {
>         error_report("Unsupported machine type");
>         error_printf("Use '-machine help' to list supported machines\n");
>         exit(1);
>     }
>     return mc;
> }
>
>

      reply	other threads:[~2014-03-17 10:48 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-03-14 12:06 [Qemu-devel] [PATCH v7] vl.c: Output error on invalid machine type mrezanin
2014-03-14 12:36 ` Eric Blake
2014-03-17  8:04 ` Markus Armbruster
2014-03-17 10:47   ` Paolo Bonzini [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5326D2DB.2050305@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=afaerber@suse.de \
    --cc=armbru@redhat.com \
    --cc=mrezanin@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).