From c5d261a52b2086c4acb843da7dbcf00746894347 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Sun, 14 Aug 2005 14:57:31 +0000 Subject: [PATCH] The Sherlock::Config module now supports typed configuration items. Also, we enable option bundling now, so "-SX.Y=Z" works. --- lib/perl/Config.pm | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/perl/Config.pm b/lib/perl/Config.pm index ff28f5df..8d98c561 100644 --- a/lib/perl/Config.pm +++ b/lib/perl/Config.pm @@ -1,6 +1,6 @@ # Perl module for parsing Sherlock configuration files (using the config utility) # -# (c) 2002 Martin Mares +# (c) 2002--2005 Martin Mares # # This software may be freely distributed and used according to the terms # of the GNU Lesser General Public License. @@ -21,6 +21,7 @@ sub Parse(@) { my $override_config = 0; push @options, "config|C=s" => sub { my ($o,$a)=@_; $defargs .= " -C'$a'"; $override_config=1; }; push @options, "set|S=s" => sub { my ($o,$a)=@_; $defargs .= " -S'$a'"; }; + Getopt::Long::Configure("bundling"); Getopt::Long::GetOptions(@options) or return 0; if (!$override_config && $DefaultConfigFile) { $defargs = "-C'$DefaultConfigFile' $defargs"; @@ -28,11 +29,12 @@ sub Parse(@) { foreach my $section (keys %Sections) { my $opts = $Sections{$section}; my $optlist = join(" ", keys %$opts); + my %filtered_opts = map { my $t=$_; $t=~s/[#\$]+$//; $t => $$opts{$_} } keys %$opts; my @l = `bin/config $defargs $section $optlist`; $? && exit 1; foreach my $o (@l) { $o =~ /^CF_([^=]+)='(.*)'\n$/ or die "Cannot parse bin/config output: $_"; - my $var = $$opts{$1}; + my $var = $filtered_opts{$1}; my $val = $2; if (ref $var eq "SCALAR") { $$var = $val; -- 2.39.5