about summary refs log tree commit homepage
path: root/lib/PublicInbox/Config.pm
diff options
context:
space:
mode:
Diffstat (limited to 'lib/PublicInbox/Config.pm')
-rw-r--r--lib/PublicInbox/Config.pm17
1 files changed, 13 insertions, 4 deletions
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";
                 }