user/dev discussion of public-inbox itself
 help / color / mirror / code / Atom feed
* [PATCH] PublicInbox::Feed owns `feedmax' default value
@ 2020-12-11 20:49 Eric Wong
  0 siblings, 0 replies; only message in thread
From: Eric Wong @ 2020-12-11 20:49 UTC (permalink / raw)
  To: meta

There's no need to have extra code in the Inbox package for this
or to waste dozens of bytes for every Inbox object which uses
the default value.

This makes our code more flexible w.r.t Inbox-like ExtSearch
objects and fixes uninitialized value warnings with ->ALL.
---
 lib/PublicInbox/Feed.pm  |  2 +-
 lib/PublicInbox/Inbox.pm | 17 ++++++-----------
 t/config.t               |  2 --
 3 files changed, 7 insertions(+), 14 deletions(-)

diff --git a/lib/PublicInbox/Feed.pm b/lib/PublicInbox/Feed.pm
index 4dd584d3..f570a25d 100644
--- a/lib/PublicInbox/Feed.pm
+++ b/lib/PublicInbox/Feed.pm
@@ -80,7 +80,7 @@ sub _no_thread () {
 sub recent_msgs {
 	my ($ctx) = @_;
 	my $ibx = $ctx->{ibx};
-	my $max = $ibx->{feedmax};
+	my $max = $ibx->{feedmax} // 25;
 	return PublicInbox::View::paginate_recent($ctx, $max) if $ibx->over;
 
 	# only for rare v1 inboxes which aren't indexed at all
diff --git a/lib/PublicInbox/Inbox.pm b/lib/PublicInbox/Inbox.pm
index 586bd561..4e3c23f3 100644
--- a/lib/PublicInbox/Inbox.pm
+++ b/lib/PublicInbox/Inbox.pm
@@ -74,16 +74,6 @@ sub _cleanup_later ($) {
 	$CLEANUP->{"$self"} = $self;
 }
 
-sub _set_uint ($$$) {
-	my ($opts, $field, $default) = @_;
-	my $val = $opts->{$field};
-	if (defined $val) {
-		$val = $val->[-1] if ref($val) eq 'ARRAY';
-		$val = undef if $val !~ /\A[0-9]+\z/;
-	}
-	$opts->{$field} = $val || $default;
-}
-
 sub _set_limiter ($$$) {
 	my ($self, $pi_cfg, $pfx) = @_;
 	my $lkey = "-${pfx}_limiter";
@@ -112,7 +102,12 @@ sub new {
 	$opts->{domain} = ($p =~ /\@(\S+)\z/) ? $1 : 'localhost';
 	my $pi_cfg = delete $opts->{-pi_cfg};
 	_set_limiter($opts, $pi_cfg, 'httpbackend');
-	_set_uint($opts, 'feedmax', 25);
+	my $fmax = $opts->{feedmax};
+	if (defined($fmax) && $fmax =~ /\A[0-9]+\z/) {
+		$opts->{feedmax} += 0;
+	} else {
+		delete $opts->{feedmax};
+	}
 	$opts->{nntpserver} ||= $pi_cfg->{'publicinbox.nntpserver'};
 	my $dir = $opts->{inboxdir};
 	if (defined $dir && -f "$dir/inbox.lock") {
diff --git a/t/config.t b/t/config.t
index ee51c6cc..99a7fef4 100644
--- a/t/config.t
+++ b/t/config.t
@@ -41,7 +41,6 @@ my ($tmpdir, $for_destroy) = tmpdir();
 		'url' => [ 'http://example.com/meta' ],
 		-primary_address => 'meta@public-inbox.org',
 		'name' => 'meta',
-		feedmax => 25,
 		-httpbackend_limiter => undef,
 		nntpserver => undef,
 	}, "lookup matches expected output");
@@ -58,7 +57,6 @@ my ($tmpdir, $for_destroy) = tmpdir();
 		'inboxdir' => '/home/pi/test-main.git',
 		'domain' => 'public-inbox.org',
 		'name' => 'test',
-		feedmax => 25,
 		'url' => [ 'http://example.com/test' ],
 		-httpbackend_limiter => undef,
 		nntpserver => undef,

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2020-12-11 20:49 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-12-11 20:49 [PATCH] PublicInbox::Feed owns `feedmax' default value 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).