- my $str;
- if ($git) {
- open my $fh, '>', \$str or
- die "failed to setup string handle: $!\n";
- binmode $fh;
- my $err = '';
- my $bytes;
- {
- local $SIG{__WARN__} = sub { $err .= $_[0] };
- $bytes = $git->cat_blob("HEAD:$path", $fh);
- }
- close $fh or die "failed to close string handle: $!\n";
-
- if ($bytes < 0 && $err &&
- $err !~ /doesn't exist in the repository/) {
- warn $err;
- }
- return if $bytes <= 0;
- } else {
- $str = `git cat-file blob HEAD:$path`;
- return if $? != 0 || length($str) == 0;
- }