From 4cad67e24c9babd9422ed0c450a49d38df2cb314 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 24 Jan 2023 09:49:34 +0000 Subject: www_coderepo: eliminate debug log footer 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); } -- cgit v1.2.3-24-ge0c7