X-Git-Url: http://wagnertech.de/gitweb/gitweb.cgi/mfinanz.git/blobdiff_plain/d92c7b01b530a7e3fc3aa8fb41168165ac181a79..46bc75c8:/SL/LxOfficeConf.pm diff --git a/SL/LxOfficeConf.pm b/SL/LxOfficeConf.pm index 51ad991d9..3cd462cff 100644 --- a/SL/LxOfficeConf.pm +++ b/SL/LxOfficeConf.pm @@ -2,27 +2,51 @@ package SL::LxOfficeConf; use strict; -use Config::Std; -use Encode; - my $environment_initialized; +sub safe_require { + my ($class, $may_fail); + my $failed; + $failed = !eval { + require Config::Std; + require Encode; + }; + + if ($failed) { + if ($may_fail) { + warn $@; + return 0; + } else { + die $@; + } + } + + Config::Std->import; + Encode->import; + + return 1; +} + sub read { - my ($class, $file_name) = @_; + my ($class, $file_name, $may_fail) = @_; - read_config 'config/lx_office.conf.default' => %::lx_office_conf; + return unless $class->safe_require($may_fail); + + read_config('config/lx_office.conf.default' => \%::lx_office_conf); _decode_recursively(\%::lx_office_conf); $file_name ||= 'config/lx_office.conf'; if (-f $file_name) { - read_config $file_name => my %local_conf; + read_config($file_name => \ my %local_conf); _decode_recursively(\%local_conf); _flat_merge(\%::lx_office_conf, \%local_conf); } _init_environment(); _determine_application_paths(); + + return 1; } sub _decode_recursively {