mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-05 00:33:55 -06:00
qapi, qemu-options: make all parsing visitors parse boolean options the same
OptsVisitor, StringInputVisitor and the keyval visitor have three different ideas of how a human could write the value of a boolean option. Pay homage to the backwards-compatibility gods and make the new common helper accept all four sets (on/off, true/false, y/n and yes/no), but remove case-insensitivity. Since OptsVisitor is supposed to match qemu-options, adjust it as well. Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20201103161339.447118-1-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
e27bd49876
commit
372bcb2585
6 changed files with 30 additions and 52 deletions
|
@ -368,7 +368,6 @@ opts_type_str(Visitor *v, const char *name, char **obj, Error **errp)
|
|||
}
|
||||
|
||||
|
||||
/* mimics qemu-option.c::parse_option_bool() */
|
||||
static bool
|
||||
opts_type_bool(Visitor *v, const char *name, bool *obj, Error **errp)
|
||||
{
|
||||
|
@ -379,19 +378,8 @@ opts_type_bool(Visitor *v, const char *name, bool *obj, Error **errp)
|
|||
if (!opt) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (opt->str) {
|
||||
if (strcmp(opt->str, "on") == 0 ||
|
||||
strcmp(opt->str, "yes") == 0 ||
|
||||
strcmp(opt->str, "y") == 0) {
|
||||
*obj = true;
|
||||
} else if (strcmp(opt->str, "off") == 0 ||
|
||||
strcmp(opt->str, "no") == 0 ||
|
||||
strcmp(opt->str, "n") == 0) {
|
||||
*obj = false;
|
||||
} else {
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, opt->name,
|
||||
"on|yes|y|off|no|n");
|
||||
if (!qapi_bool_parse(opt->name, opt->str, obj, errp)) {
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue