Eric Blake wrote: > that means it is likely that other GNU code will assume isatty() > sets errno. Should we provide an isatty() module that guarantees that > errno will be set when returning 0?
The fact that isatty() always sets errno in glibc is undocumented: -- Function: int isatty (int FILEDES) This function returns `1' if FILEDES is a file descriptor associated with an open terminal device, and 0 otherwise. And the POSIX wording is (emphasis is mine): The isatty() function shall return 1 if fildes is associated with a terminal; otherwise, it shall return 0 and *may* set errno to indicate the error. People should program against standards. So people should get used to write errno = 0; if (!isatty (fd)) { if (errno == 0) errno = ENOTTY; } even if it looks complicated. That's the way the standard is. Bruno -- In memoriam The inmates of the Daugavpils Ghetto <http://en.wikipedia.org/wiki/Daugavpils_Ghetto>