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.
This commit is contained in:
Takashi Yano 2020-01-10 20:47:12 +09:00 committed by Corinna Vinschen
parent 2f415d5efa
commit 50e2a63b04
1 changed files with 12 additions and 9 deletions

View File

@ -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 */