From 0c764a9dfc0d480c21f325480aa2e69581841858 Mon Sep 17 00:00:00 2001 From: Laszlo Ersek Date: Thu, 21 Mar 2013 00:23:17 +0100 Subject: acpi_table_add(): accept QemuOpts and parse it with OptsVisitor As one consequence, strtok() -- which modifies its argument -- is replaced with g_strsplit(). Signed-off-by: Laszlo Ersek Reviewed-by: Anthony Liguori Message-id: 1363821803-3380-6-git-send-email-lersek@redhat.com Signed-off-by: Anthony Liguori --- hw/i386/pc.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'hw/i386/pc.c') diff --git a/hw/i386/pc.c b/hw/i386/pc.c index b1e06fa0e7..d1bc0deb28 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -51,6 +51,7 @@ #include "exec/address-spaces.h" #include "sysemu/arch_init.h" #include "qemu/bitmap.h" +#include "qemu/config-file.h" /* debug PC/ISA interrupts */ //#define DEBUG_IRQ @@ -889,6 +890,7 @@ void pc_cpus_init(const char *cpu_model) void pc_acpi_init(const char *default_dsdt) { char *filename = NULL, *arg = NULL; + QemuOpts *opts; if (acpi_tables != NULL) { /* manually set via -acpitable, leave it alone */ @@ -902,7 +904,12 @@ void pc_acpi_init(const char *default_dsdt) } arg = g_strdup_printf("file=%s", filename); - if (acpi_table_add(arg) != 0) { + + /* creates a deep copy of "arg" */ + opts = qemu_opts_parse(qemu_find_opts("acpi"), arg, 0); + g_assert(opts != NULL); + + if (acpi_table_add(opts) != 0) { fprintf(stderr, "WARNING: failed to load %s\n", filename); } g_free(arg); -- cgit v1.2.3