[dpdk-dev] [PATCH 1/1] net/mlx4: add port parameter

Stephen Hemminger stephen at networkplumber.org
Fri Mar 10 17:34:59 CET 2017


On Fri, 10 Mar 2017 16:24:32 +0000
"Legacy, Allain" <Allain.Legacy at windriver.com> wrote:

> The robustness of the strtoul() could be improved with something like the following to catch non-integer characters following the port number. 
> 
>     char *end = NULL;
>     tmp = strtoull(val, &end, 0);
>     if ((val[0] == '\0') || (end == NULL) || (*end != '\0') || (errno != 0))

Extra () no necessary here.
Also errno is not set unless the return value is ULLONG_MAX. It will be last
value.

Something like:
	tmp = strtoull(val, &end, 0);
	if (!*val || !*end || (tmp == ULLONG_MAX && errno))
...

       If  endptr  is  not  NULL,  strtoul()  stores  the address of the first
       invalid character in *endptr.  If there were no  digits  at  all,  str‐
       toul()  stores  the  original value of nptr in *endptr (and returns 0).
       In particular, if *nptr is not '\0' but **endptr is '\0' on return, the
       entire string is valid.
...

RETURN VALUE
       The strtoul() function returns either the result of the conversion  or,
       if  there  was  a leading minus sign, the negation of the result of the
       conversion represented as an unsigned value, unless the original  (non‐
       negated)  value  would  overflow; in the latter case, strtoul() returns
       ULONG_MAX and sets errno to ERANGE.  Precisely the same holds for  str‐
       toull() (with ULLONG_MAX instead of ULONG_MAX).


More information about the dev mailing list