diff --git a/deep_fixitycheck.pl b/deep_fixitycheck.pl index 60953080c1defb892730840330a8691a9ba728a5..fe69cdb427a17ffcef1c3868e7dd2516c36d5efd 100644 --- a/deep_fixitycheck.pl +++ b/deep_fixitycheck.pl @@ -265,9 +265,16 @@ sub check_file_fixities($$) { my $fh = path($fileobj->{file_mounted})->openr(); binmode($fh); my $buffer; - while (read($fh, $buffer, 128*1024)) { # 128kB blocks - foreach my $fixity_algorithm (keys %digest_mapping) { - $digest_mapping{$fixity_algorithm}->add($buffer); + while (1) { + my $ret = read($fh, $buffer, 128*1024);# 128kB blocks + if (defined $ret) { + last if 0 == $ret; # EOF + foreach my $fixity_algorithm (keys %digest_mapping) { + $digest_mapping{$fixity_algorithm}->add($buffer); + } + } else { + add_error($fileobj, $result, "read error, $!"); + last; } } close ($fh); @@ -276,7 +283,6 @@ sub check_file_fixities($$) { $result->{fixity}->{$fixity_algorithm} = $digest_mapping{$fixity_algorithm}->hexdigest(); if ($result->{fixity}->{$fixity_algorithm} ne $fileobj->{fixity}->{$fixity_algorithm}) { add_error($fileobj, $result, "has fixity $result->{fixity}->{$fixity_algorithm} for algorithm $fixity_algorithm, but $fileobj->{fixity}->{$fixity_algorithm} was expected"); - die; } } }