Paolo Bonzini <pbonz...@redhat.com> writes: > Like -set and -readconfig, it would not really be too hard to > extend -writeconfig to parsing mechanisms other than QemuOpts. > However, the uses of -writeconfig are substantially more > limited, as it is generally easier to write the configuration > by hand in the first place. In addition, -writeconfig does > not even try to detect cases where it prints incorrect > syntax (for example if values have a quote in them, since > qemu_config_parse does not support any kind of escaping. > Just remove it. > > Signed-off-by: Paolo Bonzini <pbonz...@redhat.com>
I love the "and how give me a config file for all that" idea, but I agree our -writeconfig is flawed. I hope we can bring it back in more useful shape. No deprecation grace period? > --- > include/qemu/config-file.h | 1 - > qemu-options.hx | 13 ++---------- > softmmu/vl.c | 19 ----------------- > util/qemu-config.c | 42 -------------------------------------- > 4 files changed, 2 insertions(+), 73 deletions(-) > > diff --git a/include/qemu/config-file.h b/include/qemu/config-file.h > index 29226107bd..7d26fe3816 100644 > --- a/include/qemu/config-file.h > +++ b/include/qemu/config-file.h > @@ -10,7 +10,6 @@ void qemu_add_opts(QemuOptsList *list); > void qemu_add_drive_opts(QemuOptsList *list); > int qemu_global_option(const char *str); > > -void qemu_config_write(FILE *fp); > int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname); > > int qemu_read_config_file(const char *filename); > diff --git a/qemu-options.hx b/qemu-options.hx > index 62791f56d8..7480b6a03f 100644 > --- a/qemu-options.hx > +++ b/qemu-options.hx > @@ -4301,23 +4301,14 @@ SRST > ERST > > DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig, > - "-readconfig <file>\n", QEMU_ARCH_ALL) > + "-readconfig <file>\n" > + " read config file\n", QEMU_ARCH_ALL) Sure this belongs? > SRST > ``-readconfig file`` > Read device configuration from file. This approach is useful when > you want to spawn QEMU process with many command line options but > you don't want to exceed the command line character limit. > ERST > -DEF("writeconfig", HAS_ARG, QEMU_OPTION_writeconfig, > - "-writeconfig <file>\n" > - " read/write config file\n", QEMU_ARCH_ALL) > -SRST > -``-writeconfig file`` > - Write device configuration to file. The file can be either filename > - to save command line and device configuration into file or dash > - ``-``) character to print the output to stdout. This can be later > - used as input file for ``-readconfig`` option. > -ERST > > DEF("no-user-config", 0, QEMU_OPTION_nouserconfig, > "-no-user-config\n" > diff --git a/softmmu/vl.c b/softmmu/vl.c > index 7ddf405d76..d34307bf11 100644 > --- a/softmmu/vl.c > +++ b/softmmu/vl.c > @@ -3337,25 +3337,6 @@ void qemu_init(int argc, char **argv, char **envp) > } > display_remote++; > break; > - case QEMU_OPTION_writeconfig: > - { > - FILE *fp; > - if (strcmp(optarg, "-") == 0) { > - fp = stdout; > - } else { > - fp = fopen(optarg, "w"); > - if (fp == NULL) { > - error_report("open %s: %s", optarg, > - strerror(errno)); > - exit(1); > - } > - } > - qemu_config_write(fp); > - if (fp != stdout) { > - fclose(fp); > - } > - break; > - } > case QEMU_OPTION_qtest: > qtest_chrdev = optarg; > break; > diff --git a/util/qemu-config.c b/util/qemu-config.c > index e2a700b284..a4a1324c68 100644 > --- a/util/qemu-config.c > +++ b/util/qemu-config.c > @@ -307,48 +307,6 @@ void qemu_add_opts(QemuOptsList *list) > abort(); > } > > -struct ConfigWriteData { > - QemuOptsList *list; > - FILE *fp; > -}; > - > -static int config_write_opt(void *opaque, const char *name, const char > *value, > - Error **errp) > -{ > - struct ConfigWriteData *data = opaque; > - > - fprintf(data->fp, " %s = \"%s\"\n", name, value); > - return 0; > -} > - > -static int config_write_opts(void *opaque, QemuOpts *opts, Error **errp) > -{ > - struct ConfigWriteData *data = opaque; > - const char *id = qemu_opts_id(opts); > - > - if (id) { > - fprintf(data->fp, "[%s \"%s\"]\n", data->list->name, id); > - } else { > - fprintf(data->fp, "[%s]\n", data->list->name); > - } > - qemu_opt_foreach(opts, config_write_opt, data, NULL); > - fprintf(data->fp, "\n"); > - return 0; > -} > - > -void qemu_config_write(FILE *fp) > -{ > - struct ConfigWriteData data = { .fp = fp }; > - QemuOptsList **lists = vm_config_groups; > - int i; > - > - fprintf(fp, "# qemu config file\n\n"); > - for (i = 0; lists[i] != NULL; i++) { > - data.list = lists[i]; > - qemu_opts_foreach(data.list, config_write_opts, &data, NULL); > - } > -} > - > /* Returns number of config groups on success, -errno on error */ > int qemu_config_parse(FILE *fp, QemuOptsList **lists, const char *fname) > {