X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=SL%2FLxOfficeConf.pm;h=8f44016e6b43175493b2e32c0e7c12b000ed4e6e;hb=5c5cbb9f90449da8064d749183586a78b4216742;hp=b0d801024c0056df8e9fd07ff0dffcd6cb2e19c1;hpb=d18df453f55190d4807af324725ea82a8835d7fc;p=kivitendo-erp.git 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;