diff options
author | Johannes Schindelin <johannes.schindelin@gmx.de> | 2016-12-11 12:16:57 +0100 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2016-12-11 16:15:46 -0800 |
commit | cbb3f3c9b1975c9bdd07f24fc4ef4e504507adaa (patch) | |
tree | 3f20d55b4ec5b38f0cf03b8452ee73955c5f559e /compat/mingw.h | |
parent | c3808ca6982b0ad7ee9b87eca9b50b9a24ec08b0 (diff) | |
download | git-cbb3f3c9b1975c9bdd07f24fc4ef4e504507adaa.tar.gz |
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>
Diffstat (limited to 'compat/mingw.h')
-rw-r--r-- | compat/mingw.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compat/mingw.h b/compat/mingw.h index 034fff9479..3350169555 100644 --- a/compat/mingw.h +++ b/compat/mingw.h @@ -384,6 +384,9 @@ int mingw_raise(int sig); * ANSI emulation wrappers */ +int winansi_isatty(int fd); +#define isatty winansi_isatty + void winansi_init(void); HANDLE winansi_get_osfhandle(int fd); |