d454dbe0ee
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 <armbru@redhat.com> Message-Id: <1488317230-26248-4-git-send-email-armbru@redhat.com>
91 lines
1.6 KiB
Plaintext
91 lines
1.6 KiB
Plaintext
atomic_add-bench
|
|
check-qdict
|
|
check-qfloat
|
|
check-qint
|
|
check-qjson
|
|
check-qlist
|
|
check-qnull
|
|
check-qstring
|
|
check-qom-interface
|
|
check-qom-proplist
|
|
qht-bench
|
|
rcutorture
|
|
test-aio
|
|
test-base64
|
|
test-bitops
|
|
test-bitcnt
|
|
test-blockjob
|
|
test-blockjob-txn
|
|
test-bufferiszero
|
|
test-char
|
|
test-clone-visitor
|
|
test-coroutine
|
|
test-crypto-afsplit
|
|
test-crypto-block
|
|
test-crypto-cipher
|
|
test-crypto-hash
|
|
test-crypto-ivgen
|
|
test-crypto-pbkdf
|
|
test-crypto-secret
|
|
test-crypto-tlscredsx509
|
|
test-crypto-tlscredsx509-work/
|
|
test-crypto-tlscredsx509-certs/
|
|
test-crypto-tlssession
|
|
test-crypto-tlssession-work/
|
|
test-crypto-tlssession-client/
|
|
test-crypto-tlssession-server/
|
|
test-crypto-xts
|
|
test-cutils
|
|
test-hbitmap
|
|
test-int128
|
|
test-iov
|
|
test-io-channel-buffer
|
|
test-io-channel-command
|
|
test-io-channel-command.fifo
|
|
test-io-channel-file
|
|
test-io-channel-file.txt
|
|
test-io-channel-socket
|
|
test-io-channel-tls
|
|
test-io-task
|
|
test-keyval
|
|
test-logging
|
|
test-mul64
|
|
test-opts-visitor
|
|
test-qapi-event.[ch]
|
|
test-qapi-types.[ch]
|
|
test-qapi-visit.[ch]
|
|
test-qdev-global-props
|
|
test-qemu-opts
|
|
test-qdist
|
|
test-qga
|
|
test-qht
|
|
test-qht-par
|
|
test-qmp-commands
|
|
test-qmp-commands.h
|
|
test-qmp-event
|
|
test-qobject-input-strict
|
|
test-qobject-input-visitor
|
|
test-qmp-introspect.[ch]
|
|
test-qmp-marshal.c
|
|
test-qobject-output-visitor
|
|
test-rcu-list
|
|
test-replication
|
|
test-shift128
|
|
test-string-input-visitor
|
|
test-string-output-visitor
|
|
test-thread-pool
|
|
test-throttle
|
|
test-timed-average
|
|
test-uuid
|
|
test-visitor-serialization
|
|
test-vmstate
|
|
test-write-threshold
|
|
test-x86-cpuid
|
|
test-x86-cpuid-compat
|
|
test-xbzrle
|
|
test-netfilter
|
|
test-filter-mirror
|
|
test-filter-redirector
|
|
*-test
|
|
qapi-schema/*.test.*
|