summaryrefslogtreecommitdiff
path: root/compat
diff options
context:
space:
mode:
authorJohannes Schindelin <johannes.schindelin@gmx.de>2016-12-22 17:08:57 (GMT)
committerJunio C Hamano <gitster@pobox.com>2016-12-22 17:58:20 (GMT)
commitfee807c5f6da43ba03f4f92d832fd625ab57b0d7 (patch)
treebb7c9dd7f4365cc5ecda583430b97e58afa0dead /compat
parentcbb3f3c9b1975c9bdd07f24fc4ef4e504507adaa (diff)
downloadgit-fee807c5f6da43ba03f4f92d832fd625ab57b0d7.zip
git-fee807c5f6da43ba03f4f92d832fd625ab57b0d7.tar.gz
git-fee807c5f6da43ba03f4f92d832fd625ab57b0d7.tar.bz2
mingw: adjust is_console() to work with stdin
When determining whether a handle corresponds to a *real* Win32 Console (as opposed to, say, a character device such as /dev/null), we use the GetConsoleOutputBufferInfo() function as a tell-tale. However, that does not work for *input* handles associated with a console. Let's just use the GetConsoleMode() function for input handles, and since it does not work on output handles fall back to the previous method for those. This patch prepares for using is_console() instead of my previous misguided attempt in cbb3f3c9b1 (mingw: intercept isatty() to handle /dev/null as Git expects it, 2016-12-11) that broke everything on Windows. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'compat')
-rw-r--r--compat/winansi.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/compat/winansi.c b/compat/winansi.c
index cb725fb..590d61c 100644
--- a/compat/winansi.c
+++ b/compat/winansi.c
@@ -84,6 +84,7 @@ static void warn_if_raster_font(void)
static int is_console(int fd)
{
CONSOLE_SCREEN_BUFFER_INFO sbi;
+ DWORD mode;
HANDLE hcon;
static int initialized = 0;
@@ -98,7 +99,10 @@ static int is_console(int fd)
return 0;
/* check if its a handle to a console output screen buffer */
- if (!GetConsoleScreenBufferInfo(hcon, &sbi))
+ if (!fd) {
+ if (!GetConsoleMode(hcon, &mode))
+ return 0;
+ } else if (!GetConsoleScreenBufferInfo(hcon, &sbi))
return 0;
/* initialize attributes */