atoi.3: Explain disadvantages of atoi()

I believe new users should be discouraged from using atoi() and
that its disadvantages should be explained.

I added the information that 0 is returned on error - although C
standard and POSIX say that "If the value of the result cannot be
represented, the behavior is undefined." there are some
interpretations that 0 has to be returned
https://stackoverflow.com/questions/38393162/what-can-i-assume-about-the-behaviour-of-atoi-on-error
and this is also what happens in practice with glibc, musl and
uClibc.

Signed-off-by: Arkadiusz Drabczyk <arkadiusz@drabczyk.org>
Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
This commit is contained in:
Arkadiusz Drabczyk 2020-06-18 22:42:41 +02:00 committed by Michael Kerrisk
parent b260aaeca9
commit 5e297c356e
1 changed files with 12 additions and 1 deletions

View File

@ -81,7 +81,18 @@ functions behave the same as
except that they convert the initial portion of the
string to their return type of \fIlong\fP or \fIlong long\fP.
.SH RETURN VALUE
The converted value.
The converted value or 0 on error.
.SH BUGS
.I errno
is not set on error so there is no way to distinguish between 0 as an
error and as the converted value.
No checks for overflow or underflow are done.
Only input in decimal base can be converted.
It's recommended to use
.BR strtol ()
and
.BR strtoul ()
family of functions in new programs.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).