All rights reserved.
This code is derived from software contributed to Berkeley by
Chris Torek.
%sccs.include.redist.man%
@(#)strtol.3 5.1 (Berkeley) 05/15/90
#include <limits.h>
"long strtol(char *nptr, char **endptr, int base);
The string may begin with an arbitrary amount of white space (as determined by isspace ; see ctype (3)), followed by a single optional `+' or `-' sign. If base is zero or 16, the string may then include a `0x' prefix, and the number will be read in base 16; otherwise, a zero base is taken as 10 (decimal) unless the next character is `0', in which case it is taken as 8 (octal).
The remainder of the string is converted to a long value in the obvious manner, stopping at the first character which is not a valid digit in the given base. (In bases above 10, the letter `A' in either upper or lower case represents 10, `B' represents 11, and so forth, with `Z' representing 35.)
If endptr is non nil, strtol stores the address of the first invalid character in *endptr . If there were no digits at all, however, strtol stores the original value of nptr in *endptr . (Thus, if *nptr is not '\e0' but **endptr is '\e0' on return, the entire string was valid.)
[ERANGE] The given string was out of range; the value converted has been clamped.