File Coverage

lib/Archive/Lha/Stream/File.pm
Criterion Covered Total %
statement 29 32 90.6
branch 2 4 50.0
condition n/a
subroutine 10 11 90.9
pod 6 6 100.0
total 47 53 88.6


line stmt bran cond sub pod time code
1             package Archive::Lha::Stream::File;
2            
3 17     17   2639 use strict;
  17         44  
  17         631  
4 17     17   104 use warnings;
  17         32  
  17         885  
5 17     17   83 use Carp;
  17         33  
  17         1304  
6 17     17   125 use Fcntl qw( :flock :seek );
  17         31  
  17         3091  
7 17     17   125 use base qw( Archive::Lha::Stream::Base );
  17         35  
  17         8852  
8            
9             sub open {
10 20     20 1 83 my ($self, %options) = @_;
11            
12             open my $fh, '<:raw', $options{file}
13 20 50       1033 or croak "Can't open $options{file}: $!";
14 20 50       255 flock $fh, LOCK_SH
15             or croak "Can't lock $options{file}: $!";
16 20         51 binmode $fh;
17            
18 20         317 $self->{fh} = $fh;
19             }
20            
21             sub close {
22 0     0 1 0 my $self = shift;
23            
24 0         0 close $self->{fh};
25            
26 0         0 delete $self->{fh};
27             }
28            
29             sub eof {
30 317     317 1 414 my $self = shift;
31            
32 317         4082 eof $self->{fh};
33             }
34            
35             sub seek {
36 852     852 1 1448 my ($self, $offset) = @_;
37            
38 852         6827 seek $self->{fh}, $offset, SEEK_SET;
39             }
40            
41             sub tell {
42 585     585 1 973 my ($self, $offset) = @_;
43            
44 585         1256 tell $self->{fh};
45             }
46            
47             sub read {
48 1349     1349 1 2500 my ($self, $length) = @_;
49            
50 1349         6580 read $self->{fh}, ( my $chunk ), $length;
51            
52 1349         4272 return $chunk;
53             }
54            
55             1;
56            
57             __END__