8bf12c4f75
This adds a special meaning for 'help' and '?' as options to the keyval parser. Instead of being an error (because of a missing value) or a value for an implied key, they now request help, which is a new boolean output of the parser in addition to the QDict. A new parameter 'p_help' is added to keyval_parse() that contains on return whether help was requested. If NULL is passed, requesting help results in an error and all other cases work like before. Turning previous error cases into help is a compatible extension. The behaviour potentially changes for implied keys: They could previously get 'help' as their value, which is now interpreted as requesting help. This is not a problem in practice because 'help' and '?' are not a valid values for the implied key of any option parsed with keyval_parse(): * audiodev: union Audiodev, implied key "driver" is enum AudiodevDriver, "help" and "?" are not among its values * display: union DisplayOptions, implied key "type" is enum DisplayType, "help" and "?" are not among its values * blockdev: union BlockdevOptions, implied key "driver is enum BlockdevDriver, "help" and "?" are not among its values * export: union BlockExport, implied key "type" is enum BlockExportType, "help" and "?" are not among its values * monitor: struct MonitorOptions, implied key "mode" is enum MonitorMode, "help" and "?" are not among its values * nbd-server: struct NbdServerOptions, no implied key. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-Id: <20201011073505.1185335-5-armbru@redhat.com> Reviewed-by: Eric Blake <eblake@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com> |
||
---|---|---|
.. | ||
acpi.json | ||
audio.json | ||
authz.json | ||
block-core.json | ||
block-export.json | ||
block.json | ||
char.json | ||
common.json | ||
control.json | ||
crypto.json | ||
dump.json | ||
error.json | ||
introspect.json | ||
job.json | ||
machine-target.json | ||
machine.json | ||
meson.build | ||
migration.json | ||
misc-target.json | ||
misc.json | ||
net.json | ||
opts-visitor.c | ||
pci.json | ||
pragma.json | ||
qapi-clone-visitor.c | ||
qapi-dealloc-visitor.c | ||
qapi-schema.json | ||
qapi-util.c | ||
qapi-visit-core.c | ||
qdev.json | ||
qmp-dispatch.c | ||
qmp-event.c | ||
qmp-registry.c | ||
qobject-input-visitor.c | ||
qobject-output-visitor.c | ||
qom.json | ||
rdma.json | ||
replay.json | ||
rocker.json | ||
run-state.json | ||
sockets.json | ||
string-input-visitor.c | ||
string-output-visitor.c | ||
tpm.json | ||
trace-events | ||
trace.h | ||
trace.json | ||
transaction.json | ||
ui.json |