[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v2 03/24] keyval: New keyval_parse(
From: |
Markus Armbruster |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v2 03/24] keyval: New keyval_parse() |
Date: |
Tue, 28 Feb 2017 23:01:19 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Eric Blake <address@hidden> writes:
> On 02/28/2017 03:26 PM, Markus Armbruster wrote:
>> keyval_parse() parses KEY=VALUE,... into a QDict. Works like
>> qemu_opts_parse(), except:
>>
>> * Returns a QDict instead of a QemuOpts (d'oh).
>>
>> * Supports nesting, unlike QemuOpts: a KEY is split into key
>> fragments at '.' (dotted key convention; the block layer does
>> something similar on top of QemuOpts). The key fragments are QDict
>> keys, and the last one's value is updated to VALUE.
>>
>> * Each key fragment may be up to 127 bytes long. qemu_opts_parse()
>> limits the entire key to 127 bytes.
>>
>> * Overlong key fragments are rejected. qemu_opts_parse() silently
>> truncates them.
>>
>> * Empty key fragments are rejected. qemu_opts_parse() happily
>> accepts empty keys.
>>
>> * It does not store the returned value. qemu_opts_parse() stores it
>> in the QemuOptsList.
>>
>> * It does not treat parameter "id" specially. qemu_opts_parse()
>> ignores all but the first "id", and fails when its value isn't
>> id_wellformed(), or duplicate (a QemuOpts with the same ID is
>> already stored). It also screws up when a value contains ",id=".
>>
>> * Implied value is not supported. qemu_opts_parse() desugars "foo" to
>> "foo=on", and "nofoo" to "foo=off".
>>
>> * An implied key's value can't be empty, and can't contain ','.
>
> or '=' (but the presence of '=' means no implied key, while the presence
> of ',' marks end of the implied key's value). Not sure it's worth
> tweaking this commit message any further.
Both fail the assertion they're meant to fail (I tested). I'll fix the
commit message.
>>
>> I intend to grow this into a saner replacement for QemuOpts. It'll
>> take time, though.
>>
>> Note: keyval_parse() provides no way to do lists, and its key syntax
>> is incompatible with the __RFQDN_ prefix convention for downstream
>> extensions, because it blindly splits at '.', even in __RFQDN_. Both
>> issues will be addressed later in the series.
>>
>> Signed-off-by: Markus Armbruster <address@hidden>
>> ---
>
> Looks like you addressed all the comments.
> Reviewed-by: Eric Blake <address@hidden>
Thanks!
- [Qemu-block] [PATCH v2 00/24] block: Command line option -blockdev, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 01/24] test-qemu-opts: Cover qemu_opts_parse() of "no", Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 02/24] tests: Fix gcov-files-test-qemu-opts-y, gcov-files-test-logging-y, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 09/24] libqtest: Fix qmp() & friends to abort on JSON parse errors, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 08/24] qobject: Propagate parse errors through qobject_from_jsonv(), Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 10/24] qjson: Abort earlier on qobject_from_jsonf() misuse, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 13/24] block: More detailed syntax error reporting for JSON filenames, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 11/24] test-qobject-input-visitor: Abort earlier on bad test input, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 03/24] keyval: New keyval_parse(), Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 04/24] qapi: qobject input visitor variant for use with keyval_parse(), Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 15/24] test-visitor-serialization: Pass &error_abort to qobject_from_json(), Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 23/24] docs/qapi-code-gen.txt: Clarify naming rules, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 06/24] qapi: Factor out common part of qobject input visitor creation, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 07/24] qapi: Factor out common qobject_input_get_keyval(), Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 16/24] monitor: Assert qmp_schema_json[] is sane, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 20/24] qapi: New qobject_input_visitor_new_str() for convenience, Markus Armbruster, 2017/02/28
- [Qemu-block] [PATCH v2 19/24] keyval: Restrict key components to valid QAPI names, Markus Armbruster, 2017/02/28