From f7f90e0f4f58d493242078d17c0eba41dd3f1f79 Mon Sep 17 00:00:00 2001 From: Karsten Blees Date: Wed, 27 Apr 2016 17:16:37 +0200 Subject: mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*) MSYS2 emulates pseudo terminals via named pipes, and isatty() returns 0 for such file descriptors. Therefore, some interactive functionality (such as launching a pager, asking if a failed unlink should be repeated etc.) doesn't work when run in a terminal emulator that uses MSYS2's ptys (such as mintty). However, MSYS2 uses special names for its pty pipes ('msys-*-pty*'), which allows us to distinguish them from normal piped input / output. On startup, check if stdin / stdout / stderr are connected to such pipes using the NtQueryObject API from NTDll.dll. If the names match, adjust the flags in MSVCRT's ioinfo structure accordingly. Signed-off-by: Karsten Blees Signed-off-by: Johannes Schindelin Signed-off-by: Junio C Hamano --- config.mak.uname | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'config.mak.uname') diff --git a/config.mak.uname b/config.mak.uname index 40d6b29eee..a88f13989a 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -557,7 +557,8 @@ else BASIC_LDFLAGS += -Wl,--large-address-aware endif CC = gcc - COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 + COMPAT_CFLAGS += -D__USE_MINGW_ANSI_STDIO=0 -DDETECT_MSYS_TTY + EXTLIBS += -lntdll INSTALL = /bin/install NO_R_TO_GCC_LINKER = YesPlease INTERNAL_QSORT = YesPlease -- cgit v1.2.1