From 3f128896d7ba48d815bfa0dd214b10c1f3821550 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Wed, 24 Mar 2021 22:12:09 +0000 Subject: Fix for terminal output in non-ascii utf-8 locales patch by Masamichi Hosoda git-svn-id: svn://tug.org/texlive/trunk@58690 c570f23f-e606-0410-a88d-b1316a301751 --- Master/install-tl | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/Master/install-tl b/Master/install-tl index a56dd3ac56b..c7aac16ac78 100755 --- a/Master/install-tl +++ b/Master/install-tl @@ -157,13 +157,28 @@ use TeXLive::TLCrypto; use TeXLive::TLDownload; use TeXLive::TLPaper; -if (win32) { +use Encode::Alias; +eval { require Encode::Locale; Encode::Locale->import (); - binmode (STDIN, ':encoding(console_in)'); - binmode (STDOUT, ':encoding(console_out)'); - binmode (STDERR, ':encoding(console_out)'); + debug("Encode::Locale is loaded.\n"); +}; +if ($@) { + if (win32) { + die ("For Windows, Encode::Locale is required.\n"); + } + debug("Encode::Locale is not found. Assuming all encodings are UTF-8.\n"); + Encode::Alias::define_alias('locale' => 'UTF-8'); + Encode::Alias::define_alias('locale_fs' => 'UTF-8'); + Encode::Alias::define_alias('console_in' => 'UTF-8'); + Encode::Alias::define_alias('console_out' => 'UTF-8'); +} +binmode (STDIN, ':encoding(console_in)'); +binmode (STDOUT, ':encoding(console_out)'); +binmode (STDERR, ':encoding(console_out)'); + +if (win32) { require TeXLive::TLWinGoo; TeXLive::TLWinGoo->import( qw( &is_vista @@ -2496,11 +2511,8 @@ sub do_cleanup { if (!defined($::LOGFILE)) { # no -logfile option; nothing written yet $::LOGFILENAME = "$vars{'TEXDIR'}/install-tl.log"; - if (open(LOGF,">$::LOGFILENAME")) { + if (open(LOGF,">:utf8", $::LOGFILENAME)) { $::LOGFILE = \*LOGF; - if (win32) { - binmode (LOGF, ':utf8'); - } foreach my $line(@::LOGLINES) { print $::LOGFILE "$line"; } -- cgit v1.2.3