xref: /freebsd/lib/libc/stdlib/strtol.3 (revision 25bb73e063c17cd9048cf60100dbc0ac5177e94a)
158f0484fSRodney W. Grimes.\" Copyright (c) 1990, 1991, 1993
258f0484fSRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
358f0484fSRodney W. Grimes.\"
458f0484fSRodney W. Grimes.\" This code is derived from software contributed to Berkeley by
558f0484fSRodney W. Grimes.\" Chris Torek and the American National Standards Committee X3,
658f0484fSRodney W. Grimes.\" on Information Processing Systems.
758f0484fSRodney W. Grimes.\"
858f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
958f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions
1058f0484fSRodney W. Grimes.\" are met:
1158f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
1258f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
1358f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
1458f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
1558f0484fSRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
1658f0484fSRodney W. Grimes.\" 3. All advertising materials mentioning features or use of this software
1758f0484fSRodney W. Grimes.\"    must display the following acknowledgement:
1858f0484fSRodney W. Grimes.\"	This product includes software developed by the University of
1958f0484fSRodney W. Grimes.\"	California, Berkeley and its contributors.
2058f0484fSRodney W. Grimes.\" 4. Neither the name of the University nor the names of its contributors
2158f0484fSRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
2258f0484fSRodney W. Grimes.\"    without specific prior written permission.
2358f0484fSRodney W. Grimes.\"
2458f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
2558f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2658f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2758f0484fSRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2858f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2958f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
3058f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
3158f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
3258f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
3358f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3458f0484fSRodney W. Grimes.\" SUCH DAMAGE.
3558f0484fSRodney W. Grimes.\"
3658f0484fSRodney W. Grimes.\"     @(#)strtol.3	8.1 (Berkeley) 6/4/93
377f3dea24SPeter Wemm.\" $FreeBSD$
3858f0484fSRodney W. Grimes.\"
3958f0484fSRodney W. Grimes.Dd June 4, 1993
4058f0484fSRodney W. Grimes.Dt STRTOL 3
4158f0484fSRodney W. Grimes.Os
4258f0484fSRodney W. Grimes.Sh NAME
4358f0484fSRodney W. Grimes.Nm strtol, strtoq
4458f0484fSRodney W. Grimes.Nd convert string value to a long or quad_t integer
4525bb73e0SAlexey Zelkin.Sh LIBRARY
4625bb73e0SAlexey Zelkin.Lb libc
4758f0484fSRodney W. Grimes.Sh SYNOPSIS
4858f0484fSRodney W. Grimes.Fd #include <stdlib.h>
4958f0484fSRodney W. Grimes.Fd #include <limits.h>
5058f0484fSRodney W. Grimes.Ft long
516333eac6SBruce Evans.Fn strtol "const char *nptr" "char **endptr" "int base"
5258f0484fSRodney W. Grimes
5358f0484fSRodney W. Grimes.Fd #include <sys/types.h>
5458f0484fSRodney W. Grimes.Fd #include <stdlib.h>
5558f0484fSRodney W. Grimes.Fd #include <limits.h>
5658f0484fSRodney W. Grimes.Ft quad_t
576333eac6SBruce Evans.Fn strtoq "const char *nptr" "char **endptr" "int base"
5858f0484fSRodney W. Grimes.Sh DESCRIPTION
5958f0484fSRodney W. GrimesThe
6058f0484fSRodney W. Grimes.Fn strtol
6158f0484fSRodney W. Grimesfunction
6258f0484fSRodney W. Grimesconverts the string in
6358f0484fSRodney W. Grimes.Fa nptr
6458f0484fSRodney W. Grimesto a
6558f0484fSRodney W. Grimes.Em long
6658f0484fSRodney W. Grimesvalue.
6758f0484fSRodney W. GrimesThe
6858f0484fSRodney W. Grimes.Fn strtoq
6958f0484fSRodney W. Grimesfunction
7058f0484fSRodney W. Grimesconverts the string in
7158f0484fSRodney W. Grimes.Fa nptr
7258f0484fSRodney W. Grimesto a
7358f0484fSRodney W. Grimes.Em quad_t
7458f0484fSRodney W. Grimesvalue.
7558f0484fSRodney W. GrimesThe conversion is done according to the given
7658f0484fSRodney W. Grimes.Fa base ,
7758f0484fSRodney W. Grimeswhich must be between 2 and 36 inclusive,
7858f0484fSRodney W. Grimesor be the special value 0.
7958f0484fSRodney W. Grimes.Pp
8058f0484fSRodney W. GrimesThe string may begin with an arbitrary amount of white space
8158f0484fSRodney W. Grimes(as determined by
8258f0484fSRodney W. Grimes.Xr isspace 3 )
8358f0484fSRodney W. Grimesfollowed by a single optional
8458f0484fSRodney W. Grimes.Ql +
8558f0484fSRodney W. Grimesor
8658f0484fSRodney W. Grimes.Ql -
8758f0484fSRodney W. Grimessign.
8858f0484fSRodney W. GrimesIf
8958f0484fSRodney W. Grimes.Fa base
9058f0484fSRodney W. Grimesis zero or 16,
9158f0484fSRodney W. Grimesthe string may then include a
9258f0484fSRodney W. Grimes.Ql 0x
9358f0484fSRodney W. Grimesprefix,
9458f0484fSRodney W. Grimesand the number will be read in base 16; otherwise, a zero
9558f0484fSRodney W. Grimes.Fa base
9658f0484fSRodney W. Grimesis taken as 10 (decimal) unless the next character is
9758f0484fSRodney W. Grimes.Ql 0 ,
9858f0484fSRodney W. Grimesin which case it is taken as 8 (octal).
9958f0484fSRodney W. Grimes.Pp
10058f0484fSRodney W. GrimesThe remainder of the string is converted to a
10158f0484fSRodney W. Grimes.Em long
10258f0484fSRodney W. Grimesvalue in the obvious manner,
10358f0484fSRodney W. Grimesstopping at the first character which is not a valid digit
10458f0484fSRodney W. Grimesin the given base.
10558f0484fSRodney W. Grimes(In bases above 10, the letter
10658f0484fSRodney W. Grimes.Ql A
10758f0484fSRodney W. Grimesin either upper or lower case
10858f0484fSRodney W. Grimesrepresents 10,
10958f0484fSRodney W. Grimes.Ql B
11058f0484fSRodney W. Grimesrepresents 11, and so forth, with
11158f0484fSRodney W. Grimes.Ql Z
11258f0484fSRodney W. Grimesrepresenting 35.)
11358f0484fSRodney W. Grimes.Pp
11458f0484fSRodney W. GrimesIf
11558f0484fSRodney W. Grimes.Fa endptr
11658f0484fSRodney W. Grimesis non nil,
11758f0484fSRodney W. Grimes.Fn strtol
11858f0484fSRodney W. Grimesstores the address of the first invalid character in
11958f0484fSRodney W. Grimes.Fa *endptr .
12058f0484fSRodney W. GrimesIf there were no digits at all, however,
12158f0484fSRodney W. Grimes.Fn strtol
12258f0484fSRodney W. Grimesstores the original value of
12358f0484fSRodney W. Grimes.Fa nptr
12458f0484fSRodney W. Grimesin
12558f0484fSRodney W. Grimes.Fa *endptr .
12658f0484fSRodney W. Grimes(Thus, if
12758f0484fSRodney W. Grimes.Fa *nptr
12858f0484fSRodney W. Grimesis not
12958f0484fSRodney W. Grimes.Ql \e0
13058f0484fSRodney W. Grimesbut
13158f0484fSRodney W. Grimes.Fa **endptr
13258f0484fSRodney W. Grimesis
13358f0484fSRodney W. Grimes.Ql \e0
13458f0484fSRodney W. Grimeson return, the entire string was valid.)
13558f0484fSRodney W. Grimes.Sh RETURN VALUES
13658f0484fSRodney W. GrimesThe
13758f0484fSRodney W. Grimes.Fn strtol
13858f0484fSRodney W. Grimesfunction
13958f0484fSRodney W. Grimesreturns the result of the conversion,
14058f0484fSRodney W. Grimesunless the value would underflow or overflow.
14158f0484fSRodney W. GrimesIf an underflow occurs,
14258f0484fSRodney W. Grimes.Fn strtol
14358f0484fSRodney W. Grimesreturns
14458f0484fSRodney W. Grimes.Dv LONG_MIN .
14558f0484fSRodney W. GrimesIf an overflow occurs,
14658f0484fSRodney W. Grimes.Fn strtol
14758f0484fSRodney W. Grimesreturns
14858f0484fSRodney W. Grimes.Dv LONG_MAX .
14958f0484fSRodney W. GrimesIn both cases,
15058f0484fSRodney W. Grimes.Va errno
15158f0484fSRodney W. Grimesis set to
15258f0484fSRodney W. Grimes.Er ERANGE .
15358f0484fSRodney W. Grimes.Sh ERRORS
15458f0484fSRodney W. Grimes.Bl -tag -width [ERANGE]
15558f0484fSRodney W. Grimes.It Bq Er ERANGE
15658f0484fSRodney W. GrimesThe given string was out of range; the value converted has been clamped.
15758f0484fSRodney W. Grimes.El
15858f0484fSRodney W. Grimes.Sh SEE ALSO
15958f0484fSRodney W. Grimes.Xr atof 3 ,
16058f0484fSRodney W. Grimes.Xr atoi 3 ,
16158f0484fSRodney W. Grimes.Xr atol 3 ,
16258f0484fSRodney W. Grimes.Xr strtod 3 ,
16358f0484fSRodney W. Grimes.Xr strtoul 3
16458f0484fSRodney W. Grimes.Sh STANDARDS
16558f0484fSRodney W. GrimesThe
16658f0484fSRodney W. Grimes.Fn strtol
16758f0484fSRodney W. Grimesfunction
16858f0484fSRodney W. Grimesconforms to
16958f0484fSRodney W. Grimes.St -ansiC .
17058f0484fSRodney W. Grimes.Sh BUGS
17158f0484fSRodney W. GrimesIgnores the current locale.
172