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 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).