mingw: intercept isatty() to handle /dev/null as Git expects it
commitcbb3f3c9b1975c9bdd07f24fc4ef4e504507adaa
authorJohannes Schindelin <johannes.schindelin@gmx.de>
Sun, 11 Dec 2016 11:16:57 +0000 (11 12:16 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 12 Dec 2016 00:15:46 +0000 (11 16:15 -0800)
tree3f20d55b4ec5b38f0cf03b8452ee73955c5f559e
parentc3808ca6982b0ad7ee9b87eca9b50b9a24ec08b0
mingw: intercept isatty() to handle /dev/null as Git expects it

When Git's source code calls isatty(), it really asks whether the
respective file descriptor is connected to an interactive terminal.

Windows' _isatty() function, however, determines whether the file
descriptor is associated with a character device. And NUL, Windows'
equivalent of /dev/null, is a character device.

Which means that for years, Git mistakenly detected an associated
interactive terminal when being run through the test suite, which
almost always redirects stdin, stdout and stderr to /dev/null.

This bug only became obvious, and painfully so, when the new
bisect--helper entered the `pu` branch and made the automatic build & test
time out because t6030 was waiting for an answer.

For details, see

https://msdn.microsoft.com/en-us/library/f4s0ddew.aspx

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/mingw.h
compat/winansi.c