# -*- perl -*- use strict; package CHIRP::WriteConfig; sub WriteConfig { my($config) = @_; print "# This configuration file brought to you by CHIRP!\n"; print "# Please see http://honermann.net/software/CHIRP\n"; print "\n"; WriteConfigTagValue($config, "target", "--default--"); WriteConfigSimple($config, "rra"); WriteConfigSimple($config, "oid"); WriteConfigSimple($config, "range"); WriteConfigSimple($config, "color"); WriteConfigText($config, "html"); WriteConfigTagValue($config, "datasource", "--default--"); WriteConfigTagValueNoDefault($config, "datasource"); WriteConfigTagValue($config, "graph", "--default--"); WriteConfigTagValueNoDefault($config, "graph"); WriteConfigTagValue($config, "targettype", "--default--"); WriteConfigTagValueNoDefault($config, "targettype"); WriteConfigTagValueNoDefault($config, "target"); WriteConfigTagValue($config, "map", "--default--"); WriteConfigTagValueNoDefault($config, "map"); WriteConfigTagValue($config, "event", "--default--"); WriteConfigTagValueNoDefault($config, "event"); return 0; } sub WriteConfigSimple { my($config, $dict) = @_; if (defined($config->{$dict})) { foreach my $item (sort keys % {$config->{$dict}}) { next if ($item =~ /^--order--$/); print $dict . "\t" . lc($item) . "\t" . $config->{$dict}->{$item} . "\n"; } print "\n"; } return 0; } sub WriteConfigText { my($config, $dict) = @_; if (defined($config->{$dict})) { foreach my $item (sort keys % {$config->{$dict}}) { next if ($item =~ /^--order--$/); print $dict . "\t" . lc($item) . "\n"; foreach my $line (split(/\n/, $config->{$dict}->{$item})) { if($line =~ /^\s/) { print $line . "\n"; } else { print "\t" . $line . "\n"; } } } print "\n"; } return 0; } sub WriteConfigTagValue { my($config, $dict, $item) = @_; if (defined($config->{$dict})) { if (defined($config->{$dict}->{$item})) { print $dict . "\t" . lc($item) . "\n"; foreach my $tag (sort keys % {$config->{$dict}->{$item}}) { # HACK HACK HACK - To deal with Cricket not correctly lowercasing in some circumstances if ($dict =~ /^target$/ && lc($tag) =~ /^targets$/) { print "\t" . lc($tag) . "\t= " . lc($config->{$dict}->{$item}->{$tag}) . "\n"; } else { print "\t" . lc($tag) . "\t= " . $config->{$dict}->{$item}->{$tag} . "\n"; } } print "\n"; } } return 0; } sub WriteConfigTagValueNoDefault { my($config, $dict) = @_; if (defined($config->{$dict})) { foreach my $item (sort keys % {$config->{$dict}}) { next if ($item =~ /^--order--$/); if ($item !~ /^--default--$/) { WriteConfigTagValue($config, $dict, $item); } } } return 0; } 1;