diff options
author | Michael Larson <slioch@eng-140.vyatta.com> | 2008-04-24 17:33:30 -0700 |
---|---|---|
committer | Michael Larson <slioch@eng-140.vyatta.com> | 2008-04-24 17:33:30 -0700 |
commit | 7cb99a90634ed0685eac3a61b7c3cfcd274d8fe1 (patch) | |
tree | 0b6330693c1527130b1e10bdf19de8a2a6aa4cef /scripts | |
parent | 9ebc57f00be76b13c5c25776c43e4be0fb749ac1 (diff) | |
download | vyatta-cfg-7cb99a90634ed0685eac3a61b7c3cfcd274d8fe1.tar.gz vyatta-cfg-7cb99a90634ed0685eac3a61b7c3cfcd274d8fe1.zip |
fix for show -all. note there is a change in how config files are saved--only set values are now save as opposed to set
values plus all default values. set values will be saved now even if they match the default value.
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/VyattaConfigOutput.pm | 48 |
1 files changed, 36 insertions, 12 deletions
diff --git a/scripts/VyattaConfigOutput.pm b/scripts/VyattaConfigOutput.pm index e67e7f3..5358c21 100755 --- a/scripts/VyattaConfigOutput.pm +++ b/scripts/VyattaConfigOutput.pm @@ -133,8 +133,12 @@ sub displayValues { $nval = "\"$nval\""; } } + + my %cnodes = $config->listNodeStatus(); + my @cnames = sort keys %cnodes; + if (defined($simple_show)) { - if (!defined($default) || $default ne $oval || $show_all) { + if (!$cnodes{'def'} || $show_all) { if ($is_password && $hide_password) { $oval = $HIDE_PASSWORD; } @@ -155,8 +159,7 @@ sub displayValues { $diff = '>'; } } -# if (!defined($default) || !$config->exists('def') || $show_all) { - if (!defined($default) || $default ne $value || $show_all) { + if (!$cnodes{'def'} || $show_all) { if ($is_password && $hide_password) { $value = $HIDE_PASSWORD; } @@ -187,7 +190,8 @@ sub displayDeletedOrigChildren { my $is_tag = $config->isTagNode([ @cur_path, $child ]); $config->setLevel(join ' ', (@cur_path, $child)); my @cnames = sort $config->listOrigNodes(); - if ($#cnames == 0 && $cnames[0] eq 'node.val') { + + if ($cnames[0] eq 'node.val') { displayValues([ @cur_path, $child ], $prefix, $child, $dont_show_as_deleted); } elsif ($cnames[0] eq 'def') { @@ -245,10 +249,21 @@ sub displayChildren { $config->setLevel(join ' ', (@cur_path, $child)); my %cnodes = $config->listNodeStatus(); my @cnames = sort keys %cnodes; - if ($#cnames == 0 && $cnames[0] eq 'node.val') { + + #if node.val exists and ct == 0 w/o def or ct ==1 w/ def + my $leaf = 0; + if ($cnodes{'def'}) { + if ($#cnames == 1 && $cnodes{'node.val'}) { + $leaf = 1; + } + } else { + if ($#cnames == 0 && $cnodes{'node.val'}) { + $leaf = 1; + } + } + + if ($leaf == 1) { displayValues([ @cur_path, $child ], $prefix, $child); - } elsif ($cnames[0] eq 'def') { - #skip } elsif (scalar($#cnames) >= 0) { if ($is_tag) { @cnames = sort versioncmp @cnames; @@ -291,8 +306,6 @@ sub displayChildren { my @onodes = $config->listOrigNodes(join ' ', (@cur_path, $child)); if ($#onodes == 0 && $onodes[0] eq 'node.val') { displayValues([ @cur_path, $child ], $prefix, $child); - } elsif ($onodes[0] eq 'def') { - #skip this } else { print "$diff$prefix$child {\n"; displayDeletedOrigChildren([ @cur_path, $child ], "$prefix "); @@ -316,11 +329,22 @@ sub outputNewConfig { my %rnodes = $config->listNodeStatus(); if (scalar(keys %rnodes) > 0) { my @rn = keys %rnodes; - if ($#rn == 0 && $rn[0] eq 'node.val') { + + #if node.val exists and ct == 0 w/o def or ct ==1 w/ def + my $leaf = 0; + if ($rnodes{'def'}) { + if ($#rn == 1 && $rnodes{'node.val'}) { + $leaf = 1; + } + } else { + if ($#rn == 0 && $rnodes{'node.val'}) { + $leaf = 1; + } + } + + if ($leaf == 1) { # this is a leaf value-node displayValues([ @_ ], '', $_[$#_]); - } elsif ($rn[0] eq 'def') { - #skip } else { displayChildren(\%rnodes, [ @_ ], ''); } |