Skip to content

Commit 8692483

Browse files
cs96andgitster
authored andcommitted
mingw: fix colourization on Cygwin pseudo terminals
Git only colours the output and uses pagination if isatty() returns 1. MSYS2 and Cygwin emulate pseudo terminals via named pipes, meaning that isatty() returns 0. f7f90e0 (mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*), 2016-04-27) fixed this for MSYS2 terminals, but not for Cygwin. The named pipes that Cygwin and MSYS2 use are very similar. MSYS2 PTY pipes are called 'msys-*-pty*' and Cygwin uses 'cygwin-*-pty*'. This commit modifies the existing check to allow both MSYS2 and Cygwin PTY pipes to be identified as TTYs. Note that pagination is still broken when running Git for Windows from within Cygwin, as MSYS2's less.exe is spawned (and does not like to interact with Cygwin's PTY). This partially fixes #267 Signed-off-by: Alan Davies <[email protected]> Signed-off-by: Johannes Schindelin <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent fee807c commit 8692483

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

compat/winansi.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -562,8 +562,12 @@ static void detect_msys_tty(int fd)
562562
name = nameinfo->Name.Buffer;
563563
name[nameinfo->Name.Length] = 0;
564564

565-
/* check if this could be a MSYS2 pty pipe ('msys-XXXX-ptyN-XX') */
566-
if (!wcsstr(name, L"msys-") || !wcsstr(name, L"-pty"))
565+
/*
566+
* Check if this could be a MSYS2 pty pipe ('msys-XXXX-ptyN-XX')
567+
* or a cygwin pty pipe ('cygwin-XXXX-ptyN-XX')
568+
*/
569+
if ((!wcsstr(name, L"msys-") && !wcsstr(name, L"cygwin-")) ||
570+
!wcsstr(name, L"-pty"))
567571
return;
568572

569573
/* init ioinfo size if we haven't done so */

0 commit comments

Comments
 (0)