From c599fef2ec41c86b711406c9968772ef70b6cb3f Mon Sep 17 00:00:00 2001 From: Moritz Bunkus Date: Wed, 9 Feb 2011 17:43:59 +0100 Subject: [PATCH] Konfigurationsdatei config/lx_office.conf.default immer einlesen; Daten aus config/lx_office.conf reinmergen --- SL/LxOfficeConf.pm | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/SL/LxOfficeConf.pm b/SL/LxOfficeConf.pm index b0d801024..8f44016e6 100644 --- a/SL/LxOfficeConf.pm +++ b/SL/LxOfficeConf.pm @@ -6,9 +6,14 @@ use Config::Std; use Encode; sub read { - my $file = -f 'config/lx_office.conf' ? 'config/lx_office.conf' : 'config/lx_office.conf.default'; - read_config $file => %::lx_office_conf; + read_config 'config/lx_office.conf.default' => %::lx_office_conf; _decode_recursively(\%::lx_office_conf); + + if (-f 'config/lx_office.conf') { + read_config 'config/lx_office.conf' => my %local_conf; + _decode_recursively(\%local_conf); + _flat_merge(\%::lx_office_conf, \%local_conf); + } } sub _decode_recursively { @@ -23,4 +28,17 @@ sub _decode_recursively { } } +sub _flat_merge { + my ($dst, $src) = @_; + + while (my ($key, $value) = each %{ $src }) { + if (!exists $dst->{$key}) { + $dst->{$key} = $value; + + } else { + map { $dst->{$key}->{$_} = $value->{$_} } keys %{ $value }; + } + } +} + 1; -- 2.20.1