-# Copyright (C) 2019 all contributors <meta@public-inbox.org>
+# Copyright (C) 2019-2020 all contributors <meta@public-inbox.org>
# License: AGPL-3.0+ <https://www.gnu.org/licenses/agpl-3.0.txt>
# show any VCS object, similar to "git show"
use warnings;
use bytes (); # only for bytes::length
use PublicInbox::SolverGit;
-use PublicInbox::WwwStream;
+use PublicInbox::WwwStream qw(html_oneshot);
use PublicInbox::Linkify;
use PublicInbox::Tmpfile;
use PublicInbox::Hval qw(ascii_html to_filename);
our $MAX_SIZE = 1024 * 1024; # TODO: configurable
my $BIN_DETECT = 8000; # same as git
-sub html_i { # WwwStream::getline callback
- my ($nr, $ctx) = @_;
- $nr == 1 ? ${delete $ctx->{obuf}} : undef;
-}
-
sub html_page ($$$) {
my ($ctx, $code, $strref) = @_;
my $wcb = delete $ctx->{-wcb};
$ctx->{-upfx} = '../../'; # from "/$INBOX/$OID/s/"
- $ctx->{obuf} = $strref;
- my $res = PublicInbox::WwwStream->response($ctx, $code, \&html_i);
+ my $res = html_oneshot($ctx, $code, $strref);
$wcb ? $wcb->($res) : $res;
}
warn "premature EOF on $oid $$logref\n";
return html_page($ctx, 500, $logref);
}
+ @$ctx{qw(-res -logref)} = ($res, $logref);
undef; # bref keeps growing
}
}
}
my $l = PublicInbox::Linkify->new;
utf8::decode($$bref);
- $l->linkify_1($$bref);
- $$bref = '<pre>'. $l->linkify_2(ascii_html($$bref));
+ $$bref = '<pre>'. $l->to_html($$bref);
$$bref .= '</pre><hr>' . $$logref;
html_page($ctx, 200, $bref);
}
my $ref = ref($res);
my $l = PublicInbox::Linkify->new;
- $l->linkify_1($log);
$log = '<pre>debug log:</pre><hr /><pre>' .
- $l->linkify_2(ascii_html($log)) . '</pre>';
+ $l->to_html($log) . '</pre>';
$res or return html_page($ctx, 404, \$log);
$ref eq 'ARRAY' or return html_page($ctx, 500, \$log);
# TODO: detect + convert to ensure validity
utf8::decode($$blob);
- my $nl = ($$blob =~ tr/\n/\n/);
+ my $nl = ($$blob =~ s/\r?\n/\n/sg);
my $pad = length($nl);
$l->linkify_1($$blob);