From e84841e58acb20ba0f17ed88d6455deefb265a57 Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Sun, 3 Oct 2021 10:07:42 -0700 Subject: [PATCH] WIP: Fix TestLib::slurp_file() with offset on windows. --- src/test/perl/TestLib.pm | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index 15f4e6f56e3..2171e93d8ff 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -492,33 +492,33 @@ sub slurp_file my ($filename, $offset) = @_; local $/; my $contents; + my $fh; + + # On windows open file using win32 APIs, to allow us to set the + # FILE_SHARE_DELETE flag ("d" below), otherwise other accesses to the file + # may fail. if ($Config{osname} ne 'MSWin32') { - open(my $in, '<', $filename) + open($fh, '<', $filename) or croak "could not read \"$filename\": $!"; - if (defined($offset)) - { - seek($in, $offset, SEEK_SET) - or croak "could not seek \"$filename\": $!"; - } - $contents = <$in>; - close $in; } else { my $fHandle = createFile($filename, "r", "rwd") or croak "could not open \"$filename\": $^E"; - OsFHandleOpen(my $fh = IO::Handle->new(), $fHandle, 'r') + OsFHandleOpen($fh = IO::Handle->new(), $fHandle, 'r') or croak "could not read \"$filename\": $^E\n"; - if (defined($offset)) - { - setFilePointer($fh, $offset, qw(FILE_BEGIN)) - or croak "could not seek \"$filename\": $^E\n"; - } - $contents = <$fh>; - CloseHandle($fHandle) - or croak "could not close \"$filename\": $^E\n"; } + + if (defined($offset)) + { + seek($fh, $offset, SEEK_SET) + or croak "could not seek \"$filename\": $!"; + } + + $contents = <$fh>; + close $fh; + $contents =~ s/\r\n/\n/g if $Config{osname} eq 'msys'; return $contents; } -- 2.32.0.rc2