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;
> }
>
>
prev parent 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 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.