summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <preining@logic.at>2021-03-24 22:12:09 +0000
committerNorbert Preining <preining@logic.at>2021-03-24 22:12:09 +0000
commit3f128896d7ba48d815bfa0dd214b10c1f3821550 (patch)
treef943e84c860da7886d7f555ca18fe07b8057ca04
parentb5443964ec1910e835229842b70de0006424fae3 (diff)
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
-rwxr-xr-xMaster/install-tl28
1 files 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";
}