Am 28.02.2017 um 22:26 hat Markus Armbruster geschrieben: > 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 ','. > > 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 <arm...@redhat.com>
Reviewed-by: Kevin Wolf <kw...@redhat.com>