]> git.proxmox.com Git - qemu.git/commit
cutils: unsigned int parsing functions
authorEduardo Habkost <ehabkost@redhat.com>
Mon, 4 Feb 2013 18:27:45 +0000 (16:27 -0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Mon, 4 Feb 2013 20:38:33 +0000 (14:38 -0600)
commite3f9fe2d404ca10153e95499ece111c077b6690a
tree1e7c9447e310d8ec6d1002f25dce0f25444b0ceb
parentff057ccb07f07ee8f34ae4104f7ba8c2dcbc3f9a
cutils: unsigned int parsing functions

There are lots of duplicate parsing code using strto*() in QEMU, and
most of that code is broken in one way or another. Even the visitors
code have duplicate integer parsing code[1]. This introduces functions
to help parsing unsigned int values: parse_uint() and parse_uint_full().

Parsing functions for signed ints and floats will be submitted later.

parse_uint_full() has all the checks made by opts_type_uint64() at
opts-visitor.c:

 - Check for NULL (returns -EINVAL)
 - Check for negative numbers (returns -EINVAL)
 - Check for empty string (returns -EINVAL)
 - Check for overflow or other errno values set by strtoll() (returns
   -errno)
 - Check for end of string (reject invalid characters after number)
   (returns -EINVAL)

parse_uint() does everything above except checking for the end of the
string, so callers can continue parsing the remainder of string after
the number.

Unit tests included.

[1] string-input-visitor.c:parse_int() could use the same parsing code
    used by opts-visitor.c:opts_type_int(), instead of duplicating that
    logic.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
Reviewed-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
include/qemu-common.h
tests/Makefile
tests/test-cutils.c [new file with mode: 0644]
util/cutils.c