cutils: Use parse_uint in qemu_strtosz for negative rejection
commitb87ac96651054fa89baab4e3a88a7feee7f92314
authorEric Blake <eblake@redhat.com>
Mon, 22 May 2023 19:04:39 +0000 (22 14:04 -0500)
committerEric Blake <eblake@redhat.com>
Fri, 2 Jun 2023 17:29:27 +0000 (2 12:29 -0500)
tree912cb79075e7871787546deba4e37625b902c1ce
parent3c5f2467984c23aae5a64548dcb15efae18e207e
cutils: Use parse_uint in qemu_strtosz for negative rejection

Rather than open-coding two different ways to check for an unwanted
negative sign, reuse the same code in both functions.  That way, if we
decide down the road to accept "-0" instead of rejecting it, we have
fewer places to change.  Also, it means we now get ERANGE instead of
EINVAL for negative values in qemu_strtosz, which is reasonable for
what it represents.  This in turn changes the expected output of a
couple of iotests.

The change is not quite complete: negative fractional scaled values
can trip us up.  This will be fixed in a later patch addressing other
issues with fractional scaled values.

Signed-off-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Hanna Czenczek <hreitz@redhat.com>
Message-Id: <20230522190441.64278-18-eblake@redhat.com>
tests/qemu-iotests/049.out
tests/qemu-iotests/178.out.qcow2
tests/qemu-iotests/178.out.raw
tests/unit/test-cutils.c
util/cutils.c