[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 11/25] remove -writeconfig
From: |
Markus Armbruster |
Subject: |
Re: [PATCH 11/25] remove -writeconfig |
Date: |
Mon, 25 Jan 2021 13:53:53 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Paolo Bonzini <pbonzini@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 <pbonzini@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)
> {
- Re: [PATCH 03/25] qemu-option: warn for short-form boolean options, (continued)
[PATCH 07/25] keyval: introduce keyval_parse_into, Paolo Bonzini, 2021/01/18
[PATCH 09/25] qom: use qemu_printf to print help for user-creatable objects, Paolo Bonzini, 2021/01/18
[PATCH 11/25] remove -writeconfig, Paolo Bonzini, 2021/01/18
- Re: [PATCH 11/25] remove -writeconfig,
Markus Armbruster <=
[PATCH 06/25] tests: convert check-qom-proplist to keyval, Paolo Bonzini, 2021/01/18
[PATCH 10/25] hmp: special case help options for object_add, Paolo Bonzini, 2021/01/18