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); LCID lcid = get_langinfo (locale, charset);
/* Set console code page form locale */ /* Set console code page form locale */
UINT code_page; if (get_pseudo_console ())
if (lcid == 0 || lcid == (LCID) -1) {
code_page = 20127; /* ASCII */ UINT code_page;
else if (!GetLocaleInfo (lcid, if (lcid == 0 || lcid == (LCID) -1)
LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER, code_page = 20127; /* ASCII */
(char *) &code_page, sizeof (code_page))) else if (!GetLocaleInfo (lcid,
code_page = 20127; /* ASCII */ LOCALE_IDEFAULTCODEPAGE | LOCALE_RETURN_NUMBER,
SetConsoleCP (code_page); (char *) &code_page, sizeof (code_page)))
SetConsoleOutputCP (code_page); code_page = 20127; /* ASCII */
SetConsoleCP (code_page);
SetConsoleOutputCP (code_page);
}
/* Set terminal code page from locale */ /* Set terminal code page from locale */
/* This code is borrowed from mintty: charset.c */ /* This code is borrowed from mintty: charset.c */