qemu-devel
[Top][All Lists]
Advanced

[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)
>  {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]