From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35192) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUIzD-0002DN-7o for qemu-devel@nongnu.org; Fri, 12 Feb 2016 14:02:36 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aUIzB-00080R-J0 for qemu-devel@nongnu.org; Fri, 12 Feb 2016 14:02:35 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59883) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aUIzB-00080L-DJ for qemu-devel@nongnu.org; Fri, 12 Feb 2016 14:02:33 -0500 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (Postfix) with ESMTPS id EB5C4C0C2363 for ; Fri, 12 Feb 2016 19:02:32 +0000 (UTC) From: Eduardo Habkost Date: Fri, 12 Feb 2016 17:02:24 -0200 Message-Id: <1455303747-19776-2-git-send-email-ehabkost@redhat.com> In-Reply-To: <1455303747-19776-1-git-send-email-ehabkost@redhat.com> References: <1455303747-19776-1-git-send-email-ehabkost@redhat.com> Subject: [Qemu-devel] [PATCH v2 1/4] vl.c: Fix regression in machine error message List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Marcel Apfelbaum , Paolo Bonzini , lersek@redhat.com, armbru@redhat.com From: Marcel Apfelbaum Commit e1ce0c3cb (vl.c: fix regression when reading machine type from config file) fixed the error message when the machine type was supplied inside the config file. However now the option name is not displayed correctly if the error happens when the machine is specified at command line. Running ./x86_64-softmmu/qemu-system-x86_64 -M q35-1.5 -redir tcp:8022::22 will result in the error message: qemu-system-x86_64: -redir tcp:8022::22: unsupported machine type Use -machine help to list supported machines Fixed it by restoring the error location and also extracted the code dealing with machine options into a separate function. Reported-by: Michael S. Tsirkin Reviewed-by: Laszlo Ersek Signed-off-by: Marcel Apfelbaum Reviewed-by: Eduardo Habkost Signed-off-by: Eduardo Habkost --- vl.c | 37 ++++++++++++++++++++++++++----------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/vl.c b/vl.c index 175ebcc..afbf13f 100644 --- a/vl.c +++ b/vl.c @@ -2748,6 +2748,31 @@ static const QEMUOption *lookup_opt(int argc, char **argv, return popt; } +static void set_machine_options(MachineClass **machine_class) +{ + const char *optarg; + QemuOpts *opts; + Location loc; + + loc_push_none(&loc); + + opts = qemu_get_machine_opts(); + qemu_opts_loc_restore(opts); + + optarg = qemu_opt_get(opts, "type"); + if (optarg) { + *machine_class = machine_parse(optarg); + } + + if (*machine_class == NULL) { + error_report("No machine specified, and there is no default"); + error_printf("Use -machine help to list supported machines\n"); + exit(1); + } + + loc_pop(&loc); +} + static int machine_set_property(void *opaque, const char *name, const char *value, Error **errp) @@ -4030,17 +4055,7 @@ int main(int argc, char **argv, char **envp) replay_configure(icount_opts); - opts = qemu_get_machine_opts(); - optarg = qemu_opt_get(opts, "type"); - if (optarg) { - machine_class = machine_parse(optarg); - } - - if (machine_class == NULL) { - error_report("No machine specified, and there is no default"); - error_printf("Use -machine help to list supported machines\n"); - exit(1); - } + set_machine_options(&machine_class); set_memory_options(&ram_slots, &maxram_size, machine_class); -- 2.1.0