qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH 1/8 v4] cutils: unsigned int parsing functions


From: Eduardo Habkost
Subject: Re: [Qemu-devel] [PATCH 1/8 v4] cutils: unsigned int parsing functions
Date: Thu, 17 Jan 2013 17:25:41 -0200
User-agent: Mutt/1.5.21 (2010-09-15)

On Thu, Jan 17, 2013 at 05:06:50PM -0200, Eduardo Habkost wrote:
> 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 -ERANGE)

Oops, I forgot to update the commit message. I hope the commiter can
change it before committing, to avoid having to resubmit it again.


>  - 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 <address@hidden>
> ---
> Changes v2:
>  - Trivial whitespace change
>  - Add 'base' parameter to the functions
> 
> Changes v4:
>  - Return -EINVAL in case a minus sign is found
>  - Make endptr point to beginning of string in case -EINVAL
>    is returned (like the strtoull() behavior)
[...]

-- 
Eduardo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]