Hi Ian, On 12/8/22 13:34, Ian Abbott wrote: > The `scanf()` function does not intentionally set `errno` to `ERANGE`. > That is just a side effect of the code that it uses to perform > conversions. It also does not work as reliably as indicated in the > 'man' page when the target integer type is narrower than `long`. > Typically (at least in glibc) for target integer types narrower than > `long`, the number has to exceed the range of `long` (for signed > conversions) or `unsigned long` (for unsigned conversions) for `errno` > to be set to `ERANGE`. > > Documenting `ERANGE` in the ERRORS section kind of implies that > `scanf()` should return `EOF` when an integer overflow is encountered, > which it doesn't (and doing so would violate the C standard). > > Just remove any mention of the `ERANGE` error to avoid confusion. > > Fixes: 646af540e467 ("Add an ERRORS section documenting at least some of the errors that may occur for scanf().") > Cc: Michael Kerrisk > Signed-off-by: Ian Abbott I see. How about saying something like "it may also fail for any of any errors that functions used to perform the conversions may fail"? Cheers, Alex > --- > man3/scanf.3 | 7 ------- > 1 file changed, 7 deletions(-) > > diff --git a/man3/scanf.3 b/man3/scanf.3 > index ba470a5c1..c5ff59f45 100644 > --- a/man3/scanf.3 > +++ b/man3/scanf.3 > @@ -576,10 +576,6 @@ is NULL. > .TP > .B ENOMEM > Out of memory. > -.TP > -.B ERANGE > -The result of an integer conversion would exceed the size > -that can be stored in the corresponding integer type. > .SH ATTRIBUTES > For an explanation of the terms used in this section, see > .BR attributes (7). > @@ -609,9 +605,6 @@ The functions > and > .BR sscanf () > conform to C89 and C99 and POSIX.1-2001. > -These standards do not specify the > -.B ERANGE > -error. > .PP > The > .B q --