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 v4: PATCH 03: One-liner to placate clang sanitizer v3: A few commit messages touched up, code unchanged The following changes since commit ff79d5e939c38677a575e3493eb9b4d36eb21865: Merge remote-tracking branch 'remotes/xtensa/tags/20170306-xtensa' into staging (2017-03-07 09:57:14 +0000) are available in the git repository at: git://repo.or.cz/qemu/armbru.git tags/pull-block-2017-02-28-v4 for you to fetch changes up to 0b2c1beea4358e40d1049b8ee019408ce96b37ce: keyval: Support lists (2017-03-07 16:07:48 +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