diff options
Diffstat (limited to 'src/test/perl/TestLib.pm')
-rw-r--r-- | src/test/perl/TestLib.pm | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index 4cb3c765d93..63975db5e76 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -13,7 +13,7 @@ use warnings; use Config; use Cwd; use Exporter 'import'; -use Fcntl qw(:mode); +use Fcntl qw(:mode :seek); use File::Basename; use File::Find; use File::Spec; @@ -82,7 +82,7 @@ BEGIN if ($windows_os) { require Win32API::File; - Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle)); + Win32API::File->import(qw(createFile OsFHandleOpen CloseHandle setFilePointer)); } } @@ -259,13 +259,18 @@ sub slurp_dir sub slurp_file { - my ($filename) = @_; + my ($filename, $offset) = @_; local $/; my $contents; if ($Config{osname} ne 'MSWin32') { open(my $in, '<', $filename) or die "could not read \"$filename\": $!"; + if (defined($offset)) + { + seek($in, $offset, SEEK_SET) + or die "could not seek \"$filename\": $!"; + } $contents = <$in>; close $in; } @@ -275,6 +280,11 @@ sub slurp_file or die "could not open \"$filename\": $^E"; OsFHandleOpen(my $fh = IO::Handle->new(), $fHandle, 'r') or die "could not read \"$filename\": $^E\n"; + if (defined($offset)) + { + setFilePointer($fh, $offset, qw(FILE_BEGIN)) + or die "could not seek \"$filename\": $^E\n"; + } $contents = <$fh>; CloseHandle($fHandle) or die "could not close \"$filename\": $^E\n"; |