user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* [PATCH 00/11] www_coderepo: subjective web stuffs
@ 2023-01-24  9:49  7% Eric Wong
  2023-01-24  9:49  6% ` [PATCH 05/11] www_coderepo: eliminate debug log footer Eric Wong
  0 siblings, 1 reply; 2+ results
From: Eric Wong @ 2023-01-24  9:49 UTC (permalink / raw)
  To: meta

Aside from avoiding FD waste for /dev/null in common
deployments, there's not much _measurably_ better.

Eric Wong (11):
  qspawn: drop lineno from command failure warning
  viewvcs: add path name hint based on `b=' query param
  viewvcs: prepopulate search bar with dfpost + dfn
  www_coderepo: show /$INBOX/?t=$DATE link for commits
  www_coderepo: eliminate debug log footer
  http: reuse STDIN if it's already /dev/null
  viewvcs: expand on path names being "non-authoritative"
  viewvcs: show message for 404||500 errors
  solver_git: remove extraneous leading `-'
  www_coderepo: remove some needless return statements
  viewvcs: improve tree glossary view

 lib/PublicInbox/HTTP.pm        |  8 ++++-
 lib/PublicInbox/Qspawn.pm      |  2 +-
 lib/PublicInbox/RepoTree.pm    |  3 +-
 lib/PublicInbox/SolverGit.pm   |  2 +-
 lib/PublicInbox/ViewVCS.pm     | 56 ++++++++++++++++++++++++++--------
 lib/PublicInbox/WwwCoderepo.pm | 50 +++++++++++++++---------------
 t/solver_git.t                 |  2 +-
 7 files changed, 81 insertions(+), 42 deletions(-)

^ permalink raw reply	[relevance 7%]

* [PATCH 05/11] www_coderepo: eliminate debug log footer
  2023-01-24  9:49  7% [PATCH 00/11] www_coderepo: subjective web stuffs Eric Wong
@ 2023-01-24  9:49  6% ` Eric Wong
  0 siblings, 0 replies; 2+ results
From: Eric Wong @ 2023-01-24  9:49 UTC (permalink / raw)
  To: meta

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

^ permalink raw reply related	[relevance 6%]

Results 1-2 of 2 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2023-01-24  9:49  7% [PATCH 00/11] www_coderepo: subjective web stuffs Eric Wong
2023-01-24  9:49  6% ` [PATCH 05/11] www_coderepo: eliminate debug log footer Eric Wong

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).