[PATCH] Cygwin: pty: Prevent garbled output for existing non-cygwin apps.

Corinna Vinschen corinna-cygwin@cygwin.com
Fri Sep 11 12:09:52 GMT 2020


On Sep 11 19:54, Takashi Yano via Cygwin-patches wrote:
> - If pseudo console is disabled, non-cygwin apps do not detect
>   console device. In this case, some apps output UTF-8 regardless
>   of the locale setting. At least git-for-windows, rust-based apps
>   and node.js do that. This patch provides backward compatibility
>   as default behaviour by setting console codepage to the charset of
>   the locale. Even in the cases above, garbled output is prevented
>   with this patch in most cases because mintty uses UTF-8 by default.
> 
>   I beleave this is not really a problem in cygwin side but that in
>   app side, however, some users complain about garbled output with
>   existing apps in MSYS2 (which is based on cygwin) in which pseudo
>   console is disabled by default.
> ---
>  winsup/cygwin/fhandler_tty.cc | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc
> index ee5c6a90a..3d93bef30 100644
> --- a/winsup/cygwin/fhandler_tty.cc
> +++ b/winsup/cygwin/fhandler_tty.cc
> @@ -1835,7 +1835,11 @@ fhandler_pty_slave::setup_locale (void)
>    extern UINT __eval_codepage_from_internal_charset ();
>  
>    if (!get_ttyp ()->term_code_page)
> -    get_ttyp ()->term_code_page = __eval_codepage_from_internal_charset ();
> +    {
> +      get_ttyp ()->term_code_page = __eval_codepage_from_internal_charset ();
> +      SetConsoleCP (get_ttyp ()->term_code_page);
> +      SetConsoleOutputCP (get_ttyp ()->term_code_page);
> +    }
>  }
>  
>  void
> -- 
> 2.28.0

Pushed.


Thanks,
Corinna


More information about the Cygwin-patches mailing list