Commit cf90f796 authored by Frédéric Buclin's avatar Frédéric Buclin Committed by Dylan William Hardison

Bug 1260020 - Use Win32::GetConsoleOutputCP() instead of Win32::Console::OutputCP()

parent 1e2027a9
...@@ -24,6 +24,8 @@ use POSIX qw(setlocale LC_CTYPE); ...@@ -24,6 +24,8 @@ use POSIX qw(setlocale LC_CTYPE);
use Scalar::Util qw(tainted); use Scalar::Util qw(tainted);
use Term::ANSIColor qw(colored); use Term::ANSIColor qw(colored);
use PerlIO; use PerlIO;
use if ON_WINDOWS, 'Win32';
use if ON_WINDOWS, 'Win32::API';
use parent qw(Exporter); use parent qw(Exporter);
our @EXPORT_OK = qw( our @EXPORT_OK = qw(
...@@ -73,10 +75,8 @@ sub get_version_and_os { ...@@ -73,10 +75,8 @@ sub get_version_and_os {
my @os_details = POSIX::uname; my @os_details = POSIX::uname;
# 0 is the name of the OS, 2 is the major version, # 0 is the name of the OS, 2 is the major version,
my $os_name = $os_details[0] . ' ' . $os_details[2]; my $os_name = $os_details[0] . ' ' . $os_details[2];
if (ON_WINDOWS) { $os_name = Win32::GetOSName() if ON_WINDOWS;
require Win32;
$os_name = Win32::GetOSName();
}
# $os_details[3] is the minor version. # $os_details[3] is the minor version.
return { bz_ver => BUGZILLA_VERSION, return { bz_ver => BUGZILLA_VERSION,
perl_ver => sprintf('%vd', $^V), perl_ver => sprintf('%vd', $^V),
...@@ -582,11 +582,10 @@ sub set_output_encoding { ...@@ -582,11 +582,10 @@ sub set_output_encoding {
return if grep(/^encoding/, @stdout_layers); return if grep(/^encoding/, @stdout_layers);
my $encoding; my $encoding;
if (ON_WINDOWS and eval { require Win32::Console }) { if (ON_WINDOWS) {
# Although setlocale() works on Windows, it doesn't always return # Although setlocale() works on Windows, it doesn't always return
# the current *console's* encoding. So we use OutputCP here instead, # the current *console's* encoding.
# when we can. $encoding = Win32::GetConsoleOutputCP();
$encoding = Win32::Console::OutputCP();
} }
else { else {
my $locale = setlocale(LC_CTYPE); my $locale = setlocale(LC_CTYPE);
...@@ -643,9 +642,7 @@ sub prevent_windows_dialog_boxes { ...@@ -643,9 +642,7 @@ sub prevent_windows_dialog_boxes {
# during checksetup (since loading DBD::Oracle during checksetup when # during checksetup (since loading DBD::Oracle during checksetup when
# Oracle isn't installed causes a scary popup and pauses checksetup). # Oracle isn't installed causes a scary popup and pauses checksetup).
# #
# Win32::API ships with ActiveState by default, though there could if (ON_WINDOWS) {
# theoretically be a Windows installation without it, I suppose.
if (ON_WINDOWS and eval { require Win32::API }) {
# Call kernel32.SetErrorMode with arguments that mean: # Call kernel32.SetErrorMode with arguments that mean:
# "The system does not display the critical-error-handler message box. # "The system does not display the critical-error-handler message box.
# Instead, the system sends the error to the calling process." and # Instead, the system sends the error to the calling process." and
......
...@@ -87,8 +87,11 @@ my %all_features = ( ...@@ -87,8 +87,11 @@ my %all_features = (
# Windows requires some additional modules. # Windows requires some additional modules.
if ( $^O eq 'MSWin32' ) { if ( $^O eq 'MSWin32' ) {
$requires{'Win32'} = '0.35'; # 0.45 implements the GetConsoleOutputCP() method.
$requires{'Win32::API'} = '0.55'; # It also supports Windows 7. Set this to 0.52 to support Windows 10.
$requires{'Win32'} = '0.45';
# 0.63 fixes a problem with Strawberry Perl 5.14.1.
$requires{'Win32::API'} = '0.63';
$requires{'DateTime::TimeZone::Local::Win32'} = '1.64'; $requires{'DateTime::TimeZone::Local::Win32'} = '1.64';
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment