remove -writeconfig
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> Message-Id: <20220414145721.326866-1-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
1f3f2bfe0e
commit
e960a7ee46
@ -67,13 +67,6 @@ and will cause a warning.
|
||||
The replacement for the ``nodelay`` short-form boolean option is ``nodelay=on``
|
||||
rather than ``delay=off``.
|
||||
|
||||
``-writeconfig`` (since 6.0)
|
||||
'''''''''''''''''''''''''''''
|
||||
|
||||
The ``-writeconfig`` option is not able to serialize the entire contents
|
||||
of the QEMU command line. It is thus considered a failed experiment
|
||||
and deprecated, with no current replacement.
|
||||
|
||||
Userspace local APIC with KVM (x86, since 6.0)
|
||||
''''''''''''''''''''''''''''''''''''''''''''''
|
||||
|
||||
|
@ -348,6 +348,13 @@ or ``gnutls`` library enabled as a cryptography provider.
|
||||
Neither the ``nettle`` library, or the built-in cryptography provider are
|
||||
supported on FIPS enabled hosts.
|
||||
|
||||
``-writeconfig`` (removed in 7.1)
|
||||
'''''''''''''''''''''''''''''''''
|
||||
|
||||
The ``-writeconfig`` option was not able to serialize the entire contents
|
||||
of the QEMU command line. It is thus considered a failed experiment
|
||||
and removed without a replacement.
|
||||
|
||||
QEMU Machine Protocol (QMP) commands
|
||||
------------------------------------
|
||||
|
||||
|
@ -12,7 +12,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,
|
||||
Error **errp);
|
||||
|
||||
|
@ -4622,18 +4622,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)
|
||||
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 (deprecated)\n", QEMU_ARCH_ALL)
|
||||
SRST
|
||||
ERST
|
||||
|
||||
DEF("no-user-config", 0, QEMU_OPTION_nouserconfig,
|
||||
"-no-user-config\n"
|
||||
|
20
softmmu/vl.c
20
softmmu/vl.c
@ -3551,26 +3551,6 @@ void qemu_init(int argc, char **argv, char **envp)
|
||||
display_remote++;
|
||||
break;
|
||||
#endif
|
||||
case QEMU_OPTION_writeconfig:
|
||||
{
|
||||
FILE *fp;
|
||||
warn_report("-writeconfig is deprecated and will go away without a replacement");
|
||||
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;
|
||||
|
@ -314,48 +314,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 */
|
||||
static int qemu_config_foreach(FILE *fp, QEMUConfigCB *cb, void *opaque,
|
||||
const char *fname, Error **errp)
|
||||
|
Loading…
Reference in New Issue
Block a user