X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=public-inbox.cgi;fp=public-inbox.cgi;h=6f20e1450b7393df1110259d82b3f5884d94638a;hb=d47ac116dde198c610fdb6e03c48e9980071aa3d;hp=ffd6ec08f4a898f9712469ad45391cc98fe3c379;hpb=0f03ff48b643a3b04bc44d2e1af27bd7dafd56c1;p=public-inbox.git diff --git a/public-inbox.cgi b/public-inbox.cgi index ffd6ec08..6f20e145 100755 --- a/public-inbox.cgi +++ b/public-inbox.cgi @@ -142,12 +142,16 @@ sub get_index { # just returns a string ref for the blob in the current ctx sub mid2blob { my ($ctx) = @_; - local $ENV{GIT_DIR} = $ctx->{git_dir}; require Digest::SHA; my $hex = Digest::SHA::sha1_hex($ctx->{mid}); $hex =~ /\A([a-f0-9]{2})([a-f0-9]{38})\z/i or die "BUG: not a SHA-1 hex: $hex"; - my $blob = `git cat-file blob HEAD:$1/$2 2>/dev/null`; + require IPC::Run; + my ($in, $blob, $err); + open my $null, '+<', '/dev/null' or die "open: $!\n"; + IPC::Run::run(['git', '--git-dir', $ctx->{git_dir}, + qw(cat-file blob), "HEAD:$1/$2"], + $null, \$blob, $null); $? == 0 ? \$blob : undef; }