mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -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
|
@ -13,6 +13,7 @@
|
|||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qemu/ctype.h"
|
||||
#include "qapi/qmp/qerror.h"
|
||||
|
||||
const char *qapi_enum_lookup(const QEnumLookup *lookup, int val)
|
||||
{
|
||||
|
@ -40,6 +41,28 @@ int qapi_enum_parse(const QEnumLookup *lookup, const char *buf,
|
|||
return def;
|
||||
}
|
||||
|
||||
bool qapi_bool_parse(const char *name, const char *value, bool *obj, Error **errp)
|
||||
{
|
||||
if (g_str_equal(value, "on") ||
|
||||
g_str_equal(value, "yes") ||
|
||||
g_str_equal(value, "true") ||
|
||||
g_str_equal(value, "y")) {
|
||||
*obj = true;
|
||||
return true;
|
||||
}
|
||||
if (g_str_equal(value, "off") ||
|
||||
g_str_equal(value, "no") ||
|
||||
g_str_equal(value, "false") ||
|
||||
g_str_equal(value, "n")) {
|
||||
*obj = false;
|
||||
return true;
|
||||
}
|
||||
|
||||
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, name,
|
||||
"'on' or 'off'");
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse a valid QAPI name from @str.
|
||||
* A valid name consists of letters, digits, hyphen and underscore.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue