From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 130626 invoked by alias); 14 Jan 2020 16:31:18 -0000 Mailing-List: contact cygwin-cvs-help@cygwin.com; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cygwin-cvs-owner@cygwin.com Received: (qmail 130569 invoked by uid 9078); 14 Jan 2020 16:31:18 -0000 Date: Tue, 14 Jan 2020 16:31:00 -0000 Message-ID: <20200114163118.130568.qmail@sourceware.org> Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin] Cygwin: pty: Set console code page only if pseudo console is enabled. X-Act-Checkin: newlib-cygwin X-Git-Author: Takashi Yano X-Git-Refname: refs/heads/master X-Git-Oldrev: 2f415d5efae5a47906f0fdf5080c407b56b5ce20 X-Git-Newrev: 50e2a63b04bdd018484605fbb954fd1bd5147fa0 X-SW-Source: 2020-q1/txt/msg00014.txt https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=50e2a63b04bdd018484605fbb954fd1bd5147fa0 commit 50e2a63b04bdd018484605fbb954fd1bd5147fa0 Author: Takashi Yano Date: Fri Jan 10 20:47:12 2020 +0900 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. Diff: --- 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 983e058..fff5beb 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 */