From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) 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 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id F18FC1FA2E for ; Tue, 24 Jan 2023 09:50:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=80x24.org; s=selector1; t=1674553805; bh=lnmwNEBevWpn4YBeoii0aYAdaT2yZ1y337ztL9eH6Rs=; h=From:To:Subject:Date:In-Reply-To:References:From; b=lqmt1/IAQMhu/GiMJZQot3+iqEAUD6FzL/nWzAAk0Nq1jtZmXtbXsY3s+wt5X4dpV adfUpqU6ksMShliI0FNfukiiss/VyXKIuVXqTPltfOMSruTySCobmGHBkcfmkMEW1P V/0ngWB3DfyrNRjMGXSBknD3tUS1HaBrwiFL+6I0= From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 05/11] www_coderepo: eliminate debug log footer Date: Tue, 24 Jan 2023 09:49:34 +0000 Message-Id: <20230124094940.572017-6-e@80x24.org> In-Reply-To: <20230124094940.572017-1-e@80x24.org> References: <20230124094940.572017-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: WwwCoderepo is for viewing blobs already in code repositories, so there's no place for a debug log showing which mails were used to arrive at a given blob. The debug footer remains for /$INBOX/$OID/s/ URLs, of course. --- lib/PublicInbox/RepoTree.pm | 1 - lib/PublicInbox/ViewVCS.pm | 12 +++++++++--- lib/PublicInbox/WwwCoderepo.pm | 17 +++++++++++++++-- 3 files changed, 24 insertions(+), 6 deletions(-) diff --git a/lib/PublicInbox/RepoTree.pm b/lib/PublicInbox/RepoTree.pm index 4c6ed840..3a848c6f 100644 --- a/lib/PublicInbox/RepoTree.pm +++ b/lib/PublicInbox/RepoTree.pm @@ -51,7 +51,6 @@ sub tree_show { # git check_async callback my ($oid, $type, $size, $ctx) = @_; return find_missing($ctx) if $type eq 'missing'; - open $ctx->{lh}, '<', \(my $dbg_log = '') or die "open(scalar): $!"; my $res = [ $ctx->{git}, $oid, $type, $size ]; my ($bn) = ($ctx->{-path} =~ m!/?([^/]+)\z!); if ($type eq 'blob') { diff --git a/lib/PublicInbox/ViewVCS.pm b/lib/PublicInbox/ViewVCS.pm index b238e832..60cc1376 100644 --- a/lib/PublicInbox/ViewVCS.pm +++ b/lib/PublicInbox/ViewVCS.pm @@ -62,8 +62,11 @@ sub dbg_log ($) { return '
debug log seek error
'; } $log = do { local $/; <$log> } // do { - warn "readline(log): $!"; - return '
debug log read error
'; + if (!eof($log)) { + warn "readline(log): $!"; + return '
debug log read error
'; + } + ''; }; return '' if $log eq ''; $ctx->{-linkify} //= PublicInbox::Linkify->new; @@ -586,7 +589,10 @@ sub show ($$;$) { } $ctx->{fn} = $fn; $ctx->{-tmp} = File::Temp->newdir("solver.$oid_b-XXXX", TMPDIR => 1); - open $ctx->{lh}, '+>>', "$ctx->{-tmp}/solve.log" or die "open: $!"; + unless ($ctx->{lh}) { + open $ctx->{lh}, '+>>', "$ctx->{-tmp}/solve.log" or + die "open: $!"; + } my $solver = PublicInbox::SolverGit->new($ctx->{ibx}, \&solve_result, $ctx); $solver->{gits} //= [ $ctx->{git} ]; diff --git a/lib/PublicInbox/WwwCoderepo.pm b/lib/PublicInbox/WwwCoderepo.pm index 5ca8ef55..024a9d8f 100644 --- a/lib/PublicInbox/WwwCoderepo.pm +++ b/lib/PublicInbox/WwwCoderepo.pm @@ -8,6 +8,7 @@ package PublicInbox::WwwCoderepo; use v5.12; use File::Temp 0.19 (); # newdir +use POSIX qw(O_RDWR F_GETFL); use PublicInbox::ViewVCS; use PublicInbox::WwwStatic qw(r); use PublicInbox::GitHTTPBackend; @@ -60,6 +61,15 @@ sub new { }; $self->{$_} = 10 for qw(summary_branches summary_tags); $self->{$_} = 10 for qw(summary_log); + + # try reuse STDIN if it's already /dev/null + open $self->{log_fh}, '+>', '/dev/null' or die "open: $!"; + my @l = stat($self->{log_fh}) or die "stat: $!"; + my @s = stat(STDIN) or die "stat(STDIN): $!"; + if ("@l[0, 1]" eq "@s[0, 1]") { + my $f = fcntl(STDIN, F_GETFL, 0) // die "F_GETFL: $!"; + $self->{log_fh} = *STDIN{IO} if $f & O_RDWR; + } $self; } @@ -216,12 +226,15 @@ sub srv { # endpoint called by PublicInbox::WWW } $path_info =~ m!\A/(.+?)/\z! and ($ctx->{git} = $cr->{$1}) and return summary($self, $ctx); - $path_info =~ m!\A/(.+?)/([a-f0-9]+)/s/([^/]+)?\z! and - ($ctx->{git} = $cr->{$1}) and + if ($path_info =~ m!\A/(.+?)/([a-f0-9]+)/s/([^/]+)?\z! and + ($ctx->{git} = $cr->{$1})) { + $ctx->{lh} = $self->{log_fh}; return PublicInbox::ViewVCS::show($ctx, $2, $3); + } if ($path_info =~ m!\A/(.+?)/tree/(.*)\z! and ($ctx->{git} = $cr->{$1})) { + $ctx->{lh} = $self->{log_fh}; return PublicInbox::RepoTree::srv_tree($ctx, $2) // r(404); }