From 5e297c356e71a3bb51df2cc708a5dafa1f3f5889 Mon Sep 17 00:00:00 2001 From: Arkadiusz Drabczyk Date: Thu, 18 Jun 2020 22:42:41 +0200 Subject: [PATCH] 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 Signed-off-by: Michael Kerrisk --- man3/atoi.3 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/man3/atoi.3 b/man3/atoi.3 index c5894d325..3c6527a5b 100644 --- a/man3/atoi.3 +++ b/man3/atoi.3 @@ -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).