From 41a555ebab603d492440e97c8ddd889617cc51f0 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 18 Sep 2019 19:50:50 +0000 Subject: config: boolean handling matches git-config(1) We need to handle arbitrary integers and case-insensitive variations of human words to match git-config(1) behavior, since that's what users would expect given we use config files parseable by git-config(1). --- lib/PublicInbox/Config.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'lib/PublicInbox/Config.pm') diff --git a/lib/PublicInbox/Config.pm b/lib/PublicInbox/Config.pm index 01a01c62..ef277c40 100644 --- a/lib/PublicInbox/Config.pm +++ b/lib/PublicInbox/Config.pm @@ -366,6 +366,17 @@ sub _fill_code_repo { $git; } +sub _git_config_bool ($) { + my ($val) = @_; + if ($val =~ /\A(?:false|no|off|[\-\+]?(?:0x)?0+)\z/i) { + 0; + } elsif ($val =~ /\A(?:true|yes|on|[\-\+]?(?:0x)?[0-9]+)\z/i) { + 1; + } else { + undef; + } +} + sub _fill { my ($self, $pfx) = @_; my $ibx = {}; @@ -379,10 +390,8 @@ sub _fill { foreach my $k (qw(obfuscate)) { my $v = $self->{"$pfx.$k"}; defined $v or next; - if ($v =~ /\A(?:false|no|off|0)\z/) { - $ibx->{$k} = 0; - } elsif ($v =~ /\A(?:true|yes|on|1)\z/) { - $ibx->{$k} = 1; + if (defined(my $bval = _git_config_bool($v))) { + $ibx->{$k} = $bval; } else { warn "Ignoring $pfx.$k=$v in config, not boolean\n"; } -- cgit v1.2.3-24-ge0c7