summaryrefslogtreecommitdiffstats
path: root/softmmu
diff options
context:
space:
mode:
authorPaolo Bonzini2020-11-12 14:16:22 +0100
committerPaolo Bonzini2020-12-10 18:15:19 +0100
commited7fa564cb104070213eb6184573a0074827bdb8 (patch)
tree67b36baeaa6c0bd66f6fd7481b06c5fa2eb51203 /softmmu
parentvl: clean up -boot variables (diff)
downloadqemu-ed7fa564cb104070213eb6184573a0074827bdb8.tar.gz
qemu-ed7fa564cb104070213eb6184573a0074827bdb8.tar.xz
qemu-ed7fa564cb104070213eb6184573a0074827bdb8.zip
config-file: move -set implementation to vl.c
We want to make it independent of QemuOpts. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'softmmu')
-rw-r--r--softmmu/vl.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 77ee044c42..7146fbe219 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -2797,6 +2797,39 @@ static int qemu_read_default_config_file(void)
return 0;
}
+static int qemu_set_option(const char *str)
+{
+ Error *local_err = NULL;
+ char group[64], id[64], arg[64];
+ QemuOptsList *list;
+ QemuOpts *opts;
+ int rc, offset;
+
+ rc = sscanf(str, "%63[^.].%63[^.].%63[^=]%n", group, id, arg, &offset);
+ if (rc < 3 || str[offset] != '=') {
+ error_report("can't parse: \"%s\"", str);
+ return -1;
+ }
+
+ list = qemu_find_opts(group);
+ if (list == NULL) {
+ return -1;
+ }
+
+ opts = qemu_opts_find(list, id);
+ if (!opts) {
+ error_report("there is no %s \"%s\" defined",
+ list->name, id);
+ return -1;
+ }
+
+ if (!qemu_opt_set(opts, arg, str + offset + 1, &local_err)) {
+ error_report_err(local_err);
+ return -1;
+ }
+ return 0;
+}
+
static void user_register_global_props(void)
{
qemu_opts_foreach(qemu_find_opts("global"),