Standardize on clean "off/on" output when changing bucardo.db makedelta and server_si...
authorGreg Sabino Mullane <greg@endpoint.com>
Wed, 5 Aug 2015 02:49:00 +0000 (22:49 -0400)
committerGreg Sabino Mullane <greg@endpoint.com>
Wed, 5 Aug 2015 02:49:00 +0000 (22:49 -0400)
Basically, force everything from boolean to on/off when doing an 'bucardo update db '

bucardo

diff --git a/bucardo b/bucardo
index cb795ed499a562094e1d20d627e2b821c232d3a3..2a34838bf73baeb56c2d99d85adf84086bd3be7f 100755 (executable)
--- a/bucardo
+++ b/bucardo
@@ -2199,6 +2199,19 @@ sub update_database {
         ## Standardize the values as well
         my $value = $args->{$setting};
         my $newvalue = transform_value($value);
+        my $oldvalue = $DB->{$name}{$newname};
+
+        ## We want certain booleans to appear as "off/on"
+        if ($setting =~ /makedelta|server_side_prepares/) {
+            $oldvalue = $oldvalue ? 'on' : 'off';
+            ## Clean up, but lightly so invalid entries fall through for later
+            if ($newvalue =~ /^[1tT]/ or $newvalue =~ /^on/i) {
+                $newvalue = 'on';
+            }
+            elsif ($newvalue =~ /^[0fF]/ or $newvalue =~ /^off/i) {
+                $newvalue = 'off';
+            }
+        }
 
         ## Handle all the non-standard columns
         if ($newname =~ /^group/) {
@@ -2283,7 +2296,6 @@ sub update_database {
             print qq{Cannot change "$newname"\n};
             next;
         }
-        my $oldvalue = $DB->{$name}{$newname};
 
         ## Has this really changed?
         if ($oldvalue eq $newvalue) {