diff options
-rwxr-xr-x | Master/install-tl | 28 |
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"; } |