[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v2 03/24] keyval: New keyval_parse()
From: |
Eric Blake |
Subject: |
Re: [Qemu-devel] [PATCH v2 03/24] keyval: New keyval_parse() |
Date: |
Tue, 28 Feb 2017 15:48:40 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.7.0 |
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.
>
> 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>
--
Eric Blake eblake redhat com +1-919-301-3266
Libvirt virtualization library http://libvirt.org
signature.asc
Description: OpenPGP digital signature
- [Qemu-devel] [PATCH v2 01/24] test-qemu-opts: Cover qemu_opts_parse() of "no", (continued)
- [Qemu-devel] [PATCH v2 01/24] test-qemu-opts: Cover qemu_opts_parse() of "no", Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 10/24] qjson: Abort earlier on qobject_from_jsonf() misuse, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 02/24] tests: Fix gcov-files-test-qemu-opts-y, gcov-files-test-logging-y, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 09/24] libqtest: Fix qmp() & friends to abort on JSON parse errors, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 15/24] test-visitor-serialization: Pass &error_abort to qobject_from_json(), Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 21/24] block: Initial implementation of -blockdev, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 17/24] test-qapi-util: New, covering qapi/qapi-util.c, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 05/24] test-keyval: Cover use with qobject input visitor, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 03/24] keyval: New keyval_parse(), Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 11/24] test-qobject-input-visitor: Abort earlier on bad test input, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 08/24] qobject: Propagate parse errors through qobject_from_jsonv(), Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 13/24] block: More detailed syntax error reporting for JSON filenames, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 06/24] qapi: Factor out common part of qobject input visitor creation, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 19/24] keyval: Restrict key components to valid QAPI names, Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 07/24] qapi: Factor out common qobject_input_get_keyval(), Markus Armbruster, 2017/02/28
- [Qemu-devel] [PATCH v2 20/24] qapi: New qobject_input_visitor_new_str() for convenience, Markus Armbruster, 2017/02/28