From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.2 required=3.0 tests=ALL_TRUSTED,BAYES_00, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF, T_SCC_BODY_TEXT_LINE shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 51F461F61A for ; Mon, 29 Aug 2022 09:26:48 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1661765208; bh=13W7hsVP7aPv6FLwEK6OSgiCx+vFAeSTdJTPXwixkr0=; h=From:To:Subject:Date:In-Reply-To:References:From; b=a0W29zZU3Qs/DheghkMJfR0eez3sP3HDRiQbAaibDJffUzl+ALCr0Lqclxeq2sWV2 a2I1JbShjEkCon5vOhxf+DsUDQS8hgHOX1SMpdH3Vovqx41BEU0pvuUJJZwxppjuoh +TGUpaTzSJRS0/WeAS6FAfkU7M2tS4j/+x5bKwfs= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 04/18] www: allow html_oneshot to take an array arg Date: Mon, 29 Aug 2022 09:26:33 +0000 Message-Id: <20220829092647.1512215-5-e@80x24.org> In-Reply-To: <20220829092647.1512215-1-e@80x24.org> References: <20220829092647.1512215-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Another step towards making our internal APIs more writev-like and reducing the copies needed for `join' or `.=' concatenation. --- lib/PublicInbox/View.pm | 4 ++-- lib/PublicInbox/ViewVCS.pm | 6 +++--- lib/PublicInbox/WWW.pm | 2 +- lib/PublicInbox/WwwAltId.pm | 6 +++--- lib/PublicInbox/WwwStream.pm | 7 +++---- lib/PublicInbox/WwwText.pm | 2 +- 6 files changed, 13 insertions(+), 14 deletions(-) diff --git a/lib/PublicInbox/View.pm b/lib/PublicInbox/View.pm index 158feb6a..5fbdd1fa 100644 --- a/lib/PublicInbox/View.pm +++ b/lib/PublicInbox/View.pm @@ -64,7 +64,7 @@ sub no_over_html ($) { } delete $ctx->{obuf}; eval { $$obuf .= html_footer($ctx, $eml) }; - html_oneshot($ctx, 200, $obuf); + html_oneshot($ctx, 200, $$obuf); } # public functions: (unstable) @@ -1222,7 +1222,7 @@ sub pagination_footer ($$) { $next = $next ? "$next | " : ' | '; $prev .= qq[ | latest]; } - ($next || $prev) ? \"
page: $next$prev
" : \''; + ($next || $prev) ? "
page: $next$prev
" : ''; } sub paginate_recent ($$) { diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm index b04a5672..23524ac0 100644 --- a/lib/PublicInbox/ViewVCS.pm +++ b/lib/PublicInbox/ViewVCS.pm @@ -36,11 +36,11 @@ my $BIN_DETECT = 8000; # same as git my $SHOW_FMT = '--pretty=format:'.join('%n', '%P', '%p', '%H', '%T', '%s', '%an <%ae> %ai', '%cn <%ce> %ci', '%b%x00'); -sub html_page ($$$) { - my ($ctx, $code, $str) = @_; +sub html_page ($$;@) { + my ($ctx, $code) = @_[0, 1]; my $wcb = delete $ctx->{-wcb}; $ctx->{-upfx} = '../../'; # from "/$INBOX/$OID/s/" - my $res = html_oneshot($ctx, $code, \$str); + my $res = html_oneshot($ctx, $code, @_[2..$#_]); $wcb ? $wcb->($res) : $res; } diff --git a/lib/PublicInbox/WWW.pm b/lib/PublicInbox/WWW.pm index 77f463d3..1df5572d 100644 --- a/lib/PublicInbox/WWW.pm +++ b/lib/PublicInbox/WWW.pm @@ -320,7 +320,7 @@ sub get_altid_dump { sub need { my ($ctx, $extra) = @_; require PublicInbox::WwwStream; - PublicInbox::WwwStream::html_oneshot($ctx, 501, \<$extra is not available for this public-inbox Return to index EOF diff --git a/lib/PublicInbox/WwwAltId.pm b/lib/PublicInbox/WwwAltId.pm index e107dfe0..47056160 100644 --- a/lib/PublicInbox/WwwAltId.pm +++ b/lib/PublicInbox/WwwAltId.pm @@ -33,14 +33,14 @@ sub sqldump ($$) { my $altid_map = $ibx->altid_map; my $fn = $altid_map->{$altid_pfx}; unless (defined $fn) { - return html_oneshot($ctx, 404, \<`$altid_pfx' is not a valid altid for this inbox EOF } if ($env->{REQUEST_METHOD} ne 'POST') { my $url = $ibx->base_url($ctx->{env}) . "$altid_pfx.sql.gz"; - return html_oneshot($ctx, 405, \<A POST request is required to retrieve $altid_pfx.sql.gz curl -d '' -O $url @@ -54,7 +54,7 @@ or EOF } - $sqlite3 //= which('sqlite3') // return html_oneshot($ctx, 501, \<sqlite3 not available The administrator needs to install the sqlite3(1) binary diff --git a/lib/PublicInbox/WwwStream.pm b/lib/PublicInbox/WwwStream.pm index ab006c40..f2777fdc 100644 --- a/lib/PublicInbox/WwwStream.pm +++ b/lib/PublicInbox/WwwStream.pm @@ -164,8 +164,8 @@ sub getline { $ctx->zflush(_html_end($ctx)); } -sub html_oneshot ($$;$) { - my ($ctx, $code, $sref) = @_; +sub html_oneshot ($$;@) { + my ($ctx, $code) = @_[0, 1]; my $res_hdr = [ 'Content-Type' => 'text/html; charset=UTF-8', 'Content-Length' => undef ]; bless $ctx, __PACKAGE__; @@ -174,8 +174,7 @@ sub html_oneshot ($$;$) { $ctx->zmore(html_top($ctx)); $ctx->{base_url} = base_url($ctx); }; - $ctx->zmore($$sref) if $sref; - my $bdy = $ctx->zflush(_html_end($ctx)); + my $bdy = $ctx->zflush(@_[2..$#_], _html_end($ctx)); $res_hdr->[3] = length($bdy); [ $code, $res_hdr, [ $bdy ] ] } diff --git a/lib/PublicInbox/WwwText.pm b/lib/PublicInbox/WwwText.pm index c6957e81..3f840c44 100644 --- a/lib/PublicInbox/WwwText.pm +++ b/lib/PublicInbox/WwwText.pm @@ -70,7 +70,7 @@ sub get_text { $txt =~ s!\bPOP3\b!POP3!; $txt =~ s!\b(Newsgroups?)\b!$1!; $txt =~ s!\bIMAP\b!IMAP!; - PublicInbox::WwwStream::html_oneshot($ctx, $code, \$txt); + PublicInbox::WwwStream::html_oneshot($ctx, $code, $txt); } sub _srch_prefix ($$) {