}
my $env = $ctx->{env};
if ($raw) {
- my $body;
- if (my $gzf = $code == 200 ? gzf_maybe($hdr, $env) : undef) {
- my $zbuf = $gzf->translate($txt);
- undef $txt;
- $body = [ $zbuf .= $gzf->translate(undef) ];
- } else {
- $body = [ $txt ];
+ if ($code == 200) {
+ my $gzf = gzf_maybe($hdr, $env);
+ $txt = $gzf->translate($txt);
+ $txt .= $gzf->zflush;
}
- $hdr->[3] = bytes::length($body->[0]);
- return [ $code, $hdr, $body ]
+ $hdr->[3] = bytes::length($txt);
+ return [ $code, $hdr, [ $txt ] ]
}
# enforce trailing slash for "wget -r" compatibility
# and drop the original structure
if (defined(my $cr = $ibx->{coderepo})) {
$$txt .= "\tcoderepo = $_\n" for @$cr;
+ $$txt .= <<'EOF';
+; `coderepo' entries allows blob reconstruction via patch emails if
+; the inbox is indexed with Xapian. `@@ <from-range> <to-range> @@'
+; line number ranges in `[PATCH]' emails link to /$INBOX_NAME/$OID/s/,
+; an HTTP endpoint which reconstructs git blobs via git-apply(1).
+EOF
my $pi_config = $ctx->{www}->{pi_config};
for my $cr_name (@$cr) {
my $urls = $pi_config->{"coderepo.$cr_name.cgiturl"};
if ($urls && scalar(@$urls)) {
$$txt .= "\t; ";
$$txt .= join(" ||\n\t;\t", map {;
- my $cpath = $path;
+ my $dst = $path;
if ($path !~ m![a-z0-9_/\.\-]!i) {
- $cpath = dq_escape($cpath);
+ $dst = '"'.dq_escape($dst).'"';
}
- qq(git clone $_ "$cpath");
+ qq(git clone $_ $dst);
} @$urls);
$$txt .= "\n";
}