Loading...
--- Libc/Libc-262/stdlib/strtol.3
+++ Libc/Libc-594.1.4/stdlib/strtol.3
@@ -34,52 +34,85 @@
.\" SUCH DAMAGE.
.\"
.\" @(#)strtol.3 8.1 (Berkeley) 6/4/93
-.\" $FreeBSD: src/lib/libc/stdlib/strtol.3,v 1.14 2001/09/11 09:39:23 ru Exp $
-.\"
-.Dd June 4, 1993
+.\" $FreeBSD: src/lib/libc/stdlib/strtol.3,v 1.20 2005/01/22 18:02:58 ache Exp $
+.\"
+.Dd November 28, 2001
.Dt STRTOL 3
.Os
.Sh NAME
-.Nm strtol , strtoll , strtoq
-.Nd "convert a string value to a long, long long, or quad_t integer"
+.Nm strtoimax ,
+.Nm strtol ,
+.Nm strtoll ,
+.Nm strtoq
+.Nd "convert a string value to a"
+.Vt long , "long long" , intmax_t
+or
+.Vt quad_t
+integer
.Sh LIBRARY
.Lb libc
.Sh SYNOPSIS
+.In inttypes.h
+.Ft intmax_t
+.Fo strtoimax
+.Fa "const char *restrict str"
+.Fa "char **restrict endptr"
+.Fa "int base"
+.Fc
.In stdlib.h
-.In limits.h
.Ft long
-.Fn strtol "const char *nptr" "char **endptr" "int base"
+.Fo strtol
+.Fa "const char *restrict str"
+.Fa "char **restrict endptr"
+.Fa "int base"
+.Fc
.Ft long long
-.Fn strtoll "const char *nptr" "char **endptr" "int base"
+.Fo strtoll
+.Fa "const char *restrict str"
+.Fa "char **restrict endptr"
+.Fa "int base"
+.Fc
.In sys/types.h
.In stdlib.h
.In limits.h
.Ft quad_t
-.Fn strtoq "const char *nptr" "char **endptr" "int base"
+.Fo strtoq
+.Fa "const char *str"
+.Fa "char **endptr"
+.Fa "int base"
+.Fc
.Sh DESCRIPTION
The
.Fn strtol
function
converts the string in
-.Fa nptr
+.Fa str
to a
-.Em long
+.Vt long
value.
The
.Fn strtoll
function
converts the string in
-.Fa nptr
+.Fa str
to a
-.Em long long
+.Vt "long long"
+value.
+The
+.Fn strtoimax
+function
+converts the string in
+.Fa str
+to an
+.Vt intmax_t
value.
The
.Fn strtoq
function
converts the string in
-.Fa nptr
+.Fa str
to a
-.Em quad_t
+.Vt quad_t
value.
The conversion is done according to the given
.Fa base ,
@@ -98,7 +131,7 @@
.Fa base
is zero or 16,
the string may then include a
-.Ql 0x
+.Dq Li 0x
prefix,
and the number will be read in base 16; otherwise, a zero
.Fa base
@@ -107,7 +140,9 @@
in which case it is taken as 8 (octal).
.Pp
The remainder of the string is converted to a
-.Em long
+.Vt long , "long long" , intmax_t
+or
+.Vt quad_t
value in the obvious manner,
stopping at the first character which is not a valid digit
in the given base.
@@ -122,18 +157,19 @@
.Pp
If
.Fa endptr
-is non nil,
+is not
+.Dv NULL ,
.Fn strtol
stores the address of the first invalid character in
.Fa *endptr .
If there were no digits at all, however,
.Fn strtol
stores the original value of
-.Fa nptr
+.Fa str
in
.Fa *endptr .
(Thus, if
-.Fa *nptr
+.Fa *str
is not
.Ql \e0
but
@@ -141,55 +177,71 @@
is
.Ql \e0
on return, the entire string was valid.)
+.Pp
+Extended locale versions of these functions are documented in
+.Xr strtol_l 3 .
+See
+.Xr xlocale 3
+for more information.
.Sh RETURN VALUES
The
-.Fn strtol
-or
-.Fn strtoll
-function
-returns the result of the conversion,
+.Fn strtol ,
+.Fn strtoll ,
+.Fn strtoimax ,
+and
+.Fn strtoq
+functions
+return the result of the conversion,
unless the value would underflow or overflow.
If no conversion could be performed, 0 is returned and
the global variable
.Va errno
is set to
-.Er EINVAL .
-If an underflow occurs,
-.Fn strtol
-returns
-.Dv LONG_MIN .
-If an overflow occurs,
-.Fn strtol
-returns
-.Dv LONG_MAX .
-If an underflow occurs,
-.Fn strtoll
-returns
-.Dv LLONG_MIN .
-If an overflow occurs,
-.Fn strtoll
-returns
-.Dv LLONG_MAX .
-In all cases,
+.Er EINVAL
+(the last feature is not portable across all platforms).
+If an overflow or underflow occurs,
.Va errno
is set to
-.Er ERANGE .
+.Er ERANGE
+and the function return value is clamped according
+to the following table.
+.Bl -column -offset indent ".Fn strtoimax" ".Dv INTMAX_MIN" ".Dv INTMAX_MAX"
+.It Sy Function Ta Sy underflow Ta Sy overflow
+.It Fn strtol Ta Dv LONG_MIN Ta Dv LONG_MAX
+.It Fn strtoll Ta Dv LLONG_MIN Ta Dv LLONG_MAX
+.It Fn strtoimax Ta Dv INTMAX_MIN Ta Dv INTMAX_MAX
+.It Fn strtoq Ta Dv LLONG_MIN Ta Dv LLONG_MAX
+.El
.Sh ERRORS
.Bl -tag -width Er
.It Bq Er EINVAL
The value of
.Fa base
is not supported or
-no conversion could be performed.
+no conversion could be performed
+(the last feature is not portable across all platforms).
.It Bq Er ERANGE
The given string was out of range; the value converted has been clamped.
.El
+.Sh LEGACY SYNOPSIS
+.Fd #include <stdlib.h>
+.Fd #include <limits.h>
+.Pp
+.In limits.h
+is necessary for the
+.Fn strtol
+and
+.Fn strtoll
+functions.
.Sh SEE ALSO
.Xr atof 3 ,
.Xr atoi 3 ,
.Xr atol 3 ,
.Xr strtod 3 ,
-.Xr strtoul 3
+.Xr strtol_l 3 ,
+.Xr strtoul 3 ,
+.Xr wcstol 3 ,
+.Xr compat 5
.Sh STANDARDS
The
.Fn strtol
@@ -198,8 +250,10 @@
.St -isoC .
The
.Fn strtoll
-function
-conforms to
+and
+.Fn strtoimax
+functions
+conform to
.St -isoC-99 .
The
.Bx