about summary refs log tree commit homepage
diff options
context:
space:
mode:
authorEric Wong <e@80x24.org>2020-09-20 01:43:15 +0000
committerEric Wong <e@80x24.org>2020-12-26 19:29:59 +0000
commitd6d442866106248eca072d2e19ffd1ae05883c14 (patch)
tree90bdf0cbfdab69e79b91e4c061583d03db9c2666
parent64f7ab3a571b9db08d27d258f3066822fd2667bb (diff)
downloadpublic-inbox-d6d442866106248eca072d2e19ffd1ae05883c14.tar.gz
Our code doesn't support multi-values for these, and having
unexpected arrays leads to unexpected results (e.g. showing
stuff like "ARRAY(0xDEADBEEFADD12E55)" in user interfaces).  So
warn and only use the last value (matching git-config(1)
behavior without `--get-all').

(cherry picked from commit c8fe4673056571ed251c3a20cb0bbec586c60bd6)
-rw-r--r--lib/PublicInbox/Config.pm18
1 files changed, 14 insertions, 4 deletions
diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm
index 8ccf337d..abc525db 100644
--- a/lib/PublicInbox/Config.pm
+++ b/lib/PublicInbox/Config.pm
@@ -364,13 +364,23 @@ sub _fill {
         my ($self, $pfx) = @_;
         my $ibx = {};
 
-        foreach my $k (qw(inboxdir filter newsgroup
-                        watch httpbackendmax
-                        replyto feedmax nntpserver
-                        indexlevel indexsequentialshard)) {
+        for my $k (qw(watch nntpserver)) {
                 my $v = $self->{"$pfx.$k"};
                 $ibx->{$k} = $v if defined $v;
         }
+        for my $k (qw(filter inboxdir newsgroup replyto httpbackendmax feedmax
+                        indexlevel indexsequentialshard)) {
+                if (defined(my $v = $self->{"$pfx.$k"})) {
+                        if (ref($v) eq 'ARRAY') {
+                                warn <<EOF;
+W: $pfx.$k has multiple values, only using `$v->[-1]'
+EOF
+                                $ibx->{$k} = $v->[-1];
+                        } else {
+                                $ibx->{$k} = $v;
+                        }
+                }
+        }
 
         # backwards compatibility:
         $ibx->{inboxdir} //= $self->{"$pfx.mainrepo"};