From 50e2a63b04bdd018484605fbb954fd1bd5147fa0 Mon Sep 17 00:00:00 2001 From: Takashi Yano Date: Fri, 10 Jan 2020 20:47:12 +0900 Subject: [PATCH] Cygwin: pty: Set console code page only if pseudo console is enabled. - Input UTF-8 chars are garbled in ConEmu with cygwin connector if the environment does not support pseudo console. This patch fixes the issue. --- winsup/cygwin/fhandler_tty.cc | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 983e058dc..fff5bebe3 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -2626,15 +2626,18 @@ fhandler_pty_slave::setup_locale (void) LCID lcid = get_langinfo (locale, charset); /* Set console code page form locale */ - UINT code_page; - if (lcid == 0 || lcid == (LCID) -1) - code_page = 20127; /* ASCII */ - else if (!GetLocaleInfo (lcid, - LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, - (char *) &code_page, sizeof (code_page))) - code_page = 20127; /* ASCII */ - SetConsoleCP (code_page); - SetConsoleOutputCP (code_page); + if (get_pseudo_console ()) + { + UINT code_page; + if (lcid == 0 || lcid == (LCID) -1) + code_page = 20127; /* ASCII */ + else if (!GetLocaleInfo (lcid, + LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, + (char *) &code_page, sizeof (code_page))) + code_page = 20127; /* ASCII */ + SetConsoleCP (code_page); + SetConsoleOutputCP (code_page); + } /* Set terminal code page from locale */ /* This code is borrowed from mintty: charset.c */