qapi: Rewrite string-input-visitor's integer and list parsing
Status from this message: Queued for 4.0. Thanks a lot, David!
Get series with b4
b4 am [email protected]Versions newest first · linked by author and title
- v3 Latest9 patches 2 repliesApplied
- v29 patches 23 repliesSuperseded
- v19 patches 24 repliesSuperseded
Changes in v3 from the cover letter
- "cutils: Add qemu_strtod() and qemu_strtod_finite()" -- Avoid UTF-8 characters
-- Proper -ERANGE handling
- Minor comment/subject/description changes
- Added RBs
Patches in v3 Applied
| # | Subject and files | Size | Replies | Applied |
|---|---|---|---|---|
| 1/9 | cutils: Add qemu_strtod() and qemu_strtod_finite()include/ util/ | +67 | 1 reply | |
| 2/9 | cutils: Fix qemu_strtosz() & friends to reject non-finite sizesinclude/ monitor.c tests/ +1 more | +29 | 0 replies | |
| 3/9 | qapi: Fix string-input-visitor to reject NaN and infinitiesqapi/ tests/ | +15 | 0 replies | |
| 4/9 | qapi: Use qemu_strtod_finite() in qobject-input-visitorqapi/ | +5 | 0 replies | |
| 5/9 | test-string-input-visitor: Add more teststests/ | +39 | 0 replies | |
| 6/9 | qapi: Rewrite string-input-visitor's integer and list parsinginclude/ qapi/ tests/ | +234 | 0 replies | |
| 7/9 | test-string-input-visitor: Use virtual walktests/ | +12 | 0 replies | |
| 8/9 | test-string-input-visitor: Split off uint64 list teststests/ | +109 | 0 replies | |
| 9/9 | test-string-input-visitor: Add range overflow teststests/ | +10 | 0 replies |
Reviews trailers per patch
All 9 patches have a Reviewed-by or Acked-by.
| Patch | Markus Armbruster | Eric Blake |
|---|---|---|
| 1/9 | R-b | R-b |
| 2/9 | R-b | R-b |
| 3/9 | R-b | R-b |
| 4/9 | R-b | R-b |
| 5/9 | R-b | R-b |
| 6/9 | R-b | R-b |
| 7/9 | R-b | R-b |
| 8/9 | R-b | |
| 9/9 | R-b |
Trailers given in replies are filled; those carried in the patches from earlier versions are outlined with dashes.
Cover letter [Qemu-devel] [PATCH v3 for-4.0 0/9] qapi: Rewrite string-input-visitor's integer and list parsing
Rewrite string-input-visitor to be (hopefully) less ugly. Support int and uint lists (including ranges, but not implemented via type "Range").
Virtual walks are now supported and more errors are cought (and some bugs fixed). Fix and extend the tests. Parsing of uint64_t is now properly supported.
Importantly, when parsing a list we now return the list and not an ordered set (we are not an ordered set parser after all). Whoever needs that can add it on top. As far as I can see, current code can deal with it but I'll have to look at the details.
While at it, introduce and use qemu_strtod() and qemu_strtod_finite(). However don't convert monitor.c as that seems to be too broken for me (it ignores both conversion errors and range errors, and there is an actual unit test in which conversion is expected to fail).
v2 -> v3:
- "cutils: Add qemu_strtod() and qemu_strtod_finite()" -- Avoid UTF-8 characters
-- Proper -ERANGE handling
- Minor comment/subject/description changes
- Added RBs
v1 -> v2:
- "cutils: Add qemu_strtod() and qemu_strtod_finite()" -- Add a proper documentation
-- Make -EINVAL perform "no conversion" in qemu_strtod_finite().
- "cutils: Fix qemu_strtosz() & friends to reject non-finite sizes" -- New subject/description
-- Added test case
-- Forward -ERANGE
- "qapi: Fix string-input-visitor to reject NaN and infinities" -- New subject/description
-- Added test case
- "test-string-input-visitor: Add more tests"
-- Add even more tests (descending range, overflow, range limit)
- "qapi: Rewrite string-input-visitor"
-- Accept ranges with one element (e.g. 1-1)
-- Bail out on big ranges (just like before)
-- Minor style fixed + description updates
- "test-string-input-visitor: split off uint64 list tests" -- ALso copy + adapt newly added tests for int64 lists
RFC -> v1:
- Too much to name it all, just some highlights
- Pull some tests before the rework
- Introduce qemu_strtod_finite() and use it in more places
- More tests
- "qapi: rewrite string-input-visitor"
-- programming error -> assert
-- g_assert() -> assert(), g_assert_not_reached() -> abort() -- Accept single-element ranges "1-1"
-- Split parsing and returning the next range element -- Minor style fixes
David Hildenbrand (9):
cutils: Add qemu_strtod() and qemu_strtod_finite()
cutils: Fix qemu_strtosz() & friends to reject non-finite sizes
qapi: Fix string-input-visitor to reject NaN and infinities
qapi: Use qemu_strtod_finite() in qobject-input-visitor
test-string-input-visitor: Add more tests
qapi: Rewrite string-input-visitor's integer and list parsing
test-string-input-visitor: Use virtual walk
test-string-input-visitor: Split off uint64 list tests
test-string-input-visitor: Add range overflow tests
include/qapi/string-input-visitor.h | 4 +- include/qemu/cutils.h | 8 +- monitor.c | 2 +- qapi/qobject-input-visitor.c | 9 +- qapi/string-input-visitor.c | 413 ++++++++++++++++------------ tests/test-cutils.c | 24 +- tests/test-string-input-visitor.c | 223 ++++++++++++--- util/cutils.c | 83 +++++- 8 files changed, 517 insertions(+), 249 deletions(-)
Signature · 1 line
2.17.2