texlive[58690] Master/install-tl: Fix for terminal output in

commits+preining at tug.org commits+preining at tug.org
Wed Mar 24 23:12:09 CET 2021


Revision: 58690
          http://tug.org/svn/texlive?view=revision&revision=58690
Author:   preining
Date:     2021-03-24 23:12:09 +0100 (Wed, 24 Mar 2021)
Log Message:
-----------
Fix for terminal output in non-ascii utf-8 locales

patch by Masamichi Hosoda

Modified Paths:
--------------
    trunk/Master/install-tl

Modified: trunk/Master/install-tl
===================================================================
--- trunk/Master/install-tl	2021-03-24 21:38:01 UTC (rev 58689)
+++ trunk/Master/install-tl	2021-03-24 22:12:09 UTC (rev 58690)
@@ -157,13 +157,28 @@
 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 @@
   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";
       }



More information about the tex-live-commits mailing list.