]> Sergey Matveev's repositories - public-inbox.git/commitdiff
www_coderepo: eliminate debug log footer
authorEric Wong <e@80x24.org>
Tue, 24 Jan 2023 09:49:34 +0000 (09:49 +0000)
committerEric Wong <e@80x24.org>
Tue, 24 Jan 2023 10:07:53 +0000 (10:07 +0000)
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
lib/PublicInbox/ViewVCS.pm
lib/PublicInbox/WwwCoderepo.pm

index 4c6ed840ee5e7e9a04859a4315cf52e0632b6a2e..3a848c6ff9b468701ebe8d0c72309d5e67d479a8 100644 (file)
@@ -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') {
index b238e83213935ed76716189f24e0b5ee99c2ccd7..60cc1376f29d49a9fe88988a9136e34cebb4a941 100644 (file)
@@ -62,8 +62,11 @@ sub dbg_log ($) {
                return '<pre>debug log seek error</pre>';
        }
        $log = do { local $/; <$log> } // do {
-               warn "readline(log): $!";
-               return '<pre>debug log read error</pre>';
+               if (!eof($log)) {
+                       warn "readline(log): $!";
+                       return '<pre>debug log read error</pre>';
+               }
+               '';
        };
        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} ];
index 5ca8ef554774a6131560a7406423782e0acb5cb5..024a9d8f8eb8c393e292a060edde56e5eb8ed6a5 100644 (file)
@@ -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);
        }