Actually, the command line option is the least part of this series. Its bulk is about building infrastructure and getting errors out of the JSON parser.
The design of the command line interface was discussed here: Subject: Non-flat command line option argument syntax Message-ID: <87bmukmlau....@dusky.pond.sub.org> https://lists.gnu.org/archive/html/qemu-devel/2017-02/msg00555.html v3: A few commit messages touched up, code unchanged The following changes since commit fbddc2e5608eb655493253d080598375db61a748: Merge remote-tracking branch 'remotes/armbru/tags/pull-qapi-2017-02-28' into staging (2017-03-06 10:18:33 +0000) are available in the git repository at: git://repo.or.cz/qemu/armbru.git tags/pull-block-2017-02-28-v3 for you to fetch changes up to de479f01438d974100ac9ec10ab82c2ee1ad124f: keyval: Support lists (2017-03-07 08:15:18 +0100) ---------------------------------------------------------------- block: Command line option -blockdev ---------------------------------------------------------------- Daniel P. Berrange (1): qapi: qobject input visitor variant for use with keyval_parse() Markus Armbruster (23): test-qemu-opts: Cover qemu_opts_parse() of "no" tests: Fix gcov-files-test-qemu-opts-y, gcov-files-test-logging-y keyval: New keyval_parse() test-keyval: Cover use with qobject input visitor qapi: Factor out common part of qobject input visitor creation qapi: Factor out common qobject_input_get_keyval() qobject: Propagate parse errors through qobject_from_jsonv() libqtest: Fix qmp() & friends to abort on JSON parse errors qjson: Abort earlier on qobject_from_jsonf() misuse test-qobject-input-visitor: Abort earlier on bad test input qobject: Propagate parse errors through qobject_from_json() block: More detailed syntax error reporting for JSON filenames check-qjson: Test errors from qobject_from_json() test-visitor-serialization: Pass &error_abort to qobject_from_json() monitor: Assert qmp_schema_json[] is sane test-qapi-util: New, covering qapi/qapi-util.c qapi: New parse_qapi_name() keyval: Restrict key components to valid QAPI names qapi: New qobject_input_visitor_new_str() for convenience block: Initial implementation of -blockdev qapi: Improve how keyval input visitor reports unexpected dicts docs/qapi-code-gen.txt: Clarify naming rules keyval: Support lists block.c | 9 +- docs/qapi-code-gen.txt | 61 ++-- include/qapi/qmp/qjson.h | 5 +- include/qapi/qobject-input-visitor.h | 21 ++ include/qapi/util.h | 2 + include/qemu/option.h | 3 + monitor.c | 2 +- qapi/qapi-util.c | 47 +++ qapi/qobject-input-visitor.c | 214 +++++++++++- qemu-options.hx | 7 + qobject/qjson.c | 14 +- tests/.gitignore | 2 + tests/Makefile.include | 10 +- tests/check-qjson.c | 88 +++-- tests/libqtest.c | 3 +- tests/test-keyval.c | 624 +++++++++++++++++++++++++++++++++++ tests/test-qapi-util.c | 85 +++++ tests/test-qemu-opts.c | 5 + tests/test-qobject-input-visitor.c | 190 ++++++++++- tests/test-visitor-serialization.c | 2 +- util/Makefile.objs | 1 + util/keyval.c | 394 ++++++++++++++++++++++ vl.c | 39 +++ 23 files changed, 1746 insertions(+), 82 deletions(-) create mode 100644 tests/test-keyval.c create mode 100644 tests/test-qapi-util.c create mode 100644 util/keyval.c -- 2.7.4