> Date: Mon, 09 Jun 2014 09:33:18 +0100 > From: Pádraig Brady <p...@draigbrady.com> > Cc: bug-gnulib@gnu.org > > It's an optimized test rather than an optimization for isatty() itself. > Without this call the isatty() replacement is moot because the > reason it exists on mingw is to double check the handle as there > true is returned for the NUL device.
Indeed, that's the main reason why just isatty is not enough. > > More importantly, it breaks on Windows 8, where all handles are multiples > > of 4. The result is a false negative, and an unclean output from a freshly > > compiled glib. > > Ugh fair enough. So it seems these lower 2 bits are still significant, > just not used for tagging consoles any more? > So is isatty(nul_handle) still returning true there? > If not, then we could use a direct test of isatty(nul_handle) > to enable the replacement. > Note also the replacement is useful on "MSVC 9" to avoid an > exception for isatty(invalid_handle), which we'd have to consider. You can call one of the console functions to test if a handle is connected to a console. E.g., GetConsoleMode for the input handle and GetConsoleScreenBufferInfo for output. These functions fail when the handle is not a console handle.