mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-17 19:30:00 +08:00
Use native methods to open input in TestLib::slurp_file on Windows.
This is a backport of commits 114541d58e
and 6f59826f0 to the remaining
live branches.
This commit is contained in:
parent
133a0906d5
commit
da7edca463
@ -44,7 +44,17 @@ use SimpleTee;
|
||||
|
||||
use Test::More;
|
||||
|
||||
our $windows_os = $Config{osname} eq 'MSWin32' || $Config{osname} eq 'msys';
|
||||
our $windows_os;
|
||||
|
||||
BEGIN
|
||||
{
|
||||
$windows_os = $Config{osname} eq 'MSWin32' || $Config{osname} eq 'msys';
|
||||
if ($windows_os)
|
||||
{
|
||||
require Win32API::File;
|
||||
Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle));
|
||||
}
|
||||
}
|
||||
|
||||
# Open log file. For each test, the log file name uses the name of the
|
||||
# file launching this module, without the .pl suffix.
|
||||
@ -277,10 +287,24 @@ sub slurp_file
|
||||
{
|
||||
my ($filename) = @_;
|
||||
local $/;
|
||||
open(my $in, '<', $filename)
|
||||
or die "could not read \"$filename\": $!";
|
||||
my $contents = <$in>;
|
||||
close $in;
|
||||
my $contents;
|
||||
if ($Config{osname} ne 'MSWin32')
|
||||
{
|
||||
open(my $in, '<', $filename)
|
||||
or die "could not read \"$filename\": $!";
|
||||
$contents = <$in>;
|
||||
close $in;
|
||||
}
|
||||
else
|
||||
{
|
||||
my $fHandle = createFile($filename, "r", "rwd")
|
||||
or die "could not open \"$filename\": $^E";
|
||||
OsFHandleOpen(my $fh = IO::Handle->new(), $fHandle, 'r')
|
||||
or die "could not read \"$filename\": $^E\n";
|
||||
$contents = <$fh>;
|
||||
CloseHandle($fHandle)
|
||||
or die "could not close \"$filename\": $^E\n";
|
||||
}
|
||||
$contents =~ s/\r\n/\n/g if $Config{osname} eq 'msys';
|
||||
return $contents;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user