index 15f4e6f56e340844b6909088ba0e698c29cb88ff..06aae1760ebf938f9b3adb6ec4f9962a2daeaecb 100644 (file)
{
require Win32API::File;
Win32API::File->import(
- qw(createFile OsFHandleOpen CloseHandle setFilePointer));
+ qw(createFile OsFHandleOpen CloseHandle));
}
# Specifies whether to use Unix sockets for test setups. On
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;
}