1 # Perl module for parsing Sherlock configuration files (using the config utility)
2 # (c) 2002 Martin Mares <mj@ucw.cz>
4 package Sherlock::Config;
12 our $DefaultConfigFile = "";
17 my $override_config = 0;
18 push @options, "config|C=s" => sub { my ($o,$a)=@_; $defargs .= " -C'$a'"; $override_config=1; };
19 push @options, "set|S=s" => sub { my ($o,$a)=@_; $defargs .= " -S'$a'"; };
20 Getopt::Long::GetOptions(@options) or return 0;
21 if (!$override_config && $DefaultConfigFile) {
22 $defargs = "-C'$DefaultConfigFile' $defargs";
24 foreach my $section (keys %Sections) {
25 my $opts = $Sections{$section};
26 my $optlist = join(" ", keys %$opts);
27 my @l = `bin/config $defargs $section $optlist`;
30 $o =~ /^CF_([^=]+)="(.*)"\n$/ or die "Cannot parse bin/config output: $_";
33 if (ref $var eq "SCALAR") {
35 } elsif (ref $var eq "ARRAY") {
38 die ("Sherlock::Config::Parse: don't know how to set $o");