user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
From: Eric Wong <e@80x24.org>
To: meta@public-inbox.org
Subject: [PATCH 05/11] www_coderepo: eliminate debug log footer
Date: Tue, 24 Jan 2023 09:49:34 +0000	[thread overview]
Message-ID: <20230124094940.572017-6-e@80x24.org> (raw)
In-Reply-To: <20230124094940.572017-1-e@80x24.org>

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 '<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} ];
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);
 	}
 

  parent reply	other threads:[~2023-01-24  9:50 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-01-24  9:49 [PATCH 00/11] www_coderepo: subjective web stuffs Eric Wong
2023-01-24  9:49 ` [PATCH 01/11] qspawn: drop lineno from command failure warning Eric Wong
2023-01-24  9:49 ` [PATCH 02/11] viewvcs: add path name hint based on `b=' query param Eric Wong
2023-01-24  9:49 ` [PATCH 03/11] viewvcs: prepopulate search bar with dfpost + dfn Eric Wong
2023-01-24  9:49 ` [PATCH 04/11] www_coderepo: show /$INBOX/?t=$DATE link for commits Eric Wong
2023-01-24  9:49 ` Eric Wong [this message]
2023-01-24  9:49 ` [PATCH 06/11] http: reuse STDIN if it's already /dev/null Eric Wong
2023-01-24  9:49 ` [PATCH 07/11] viewvcs: expand on path names being "non-authoritative" Eric Wong
2023-01-24  9:49 ` [PATCH 08/11] viewvcs: show message for 404||500 errors Eric Wong
2023-01-24  9:49 ` [PATCH 09/11] solver_git: remove extraneous leading `-' Eric Wong
2023-01-24  9:49 ` [PATCH 10/11] www_coderepo: remove some needless return statements Eric Wong
2023-01-24  9:49 ` [PATCH 11/11] viewvcs: improve tree glossary view Eric Wong

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://public-inbox.org/README

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230124094940.572017-6-e@80x24.org \
    --to=e@80x24.org \
    --cc=meta@public-inbox.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/public-inbox.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).