Merge branch 'b-3.6.1' of ../kivitendo-erp_20220811
[kivitendo-erp.git] / SL / LxOfficeConf.pm
index 4e26c4e..f6ae49e 100644 (file)
@@ -7,18 +7,20 @@ use Encode;
 my $environment_initialized;
 
 sub safe_require {
-  my ($class, $may_fail);
+  my ($class, $may_fail) = @_;
 
-  my $failed = !eval { require Config::Std; };
-
-  if ($failed) {
+  eval {
+    require Config::Std;
+    require SL::System::Process;
+    1;
+  } or do {
     if ($may_fail) {
       warn $@;
       return 0;
     } else {
       die $@;
     }
-  }
+  };
 
   Config::Std->import;
 
@@ -32,11 +34,12 @@ sub read {
 
   # Backwards compatibility: read lx_office.conf.default if
   # kivitendo.conf.default does't exist.
-  my $default_config = -f "config/kivitendo.conf.default" ? 'kivitendo' : 'lx_office';
-  read_config("config/${default_config}.conf.default" => \%::lx_office_conf);
+  my $dir            = SL::System::Process->exe_dir;
+  my $default_config = -f "${dir}/config/kivitendo.conf.default" ? 'kivitendo' : 'lx_office';
+  read_config("${dir}/config/${default_config}.conf.default" => \%::lx_office_conf);
   _decode_recursively(\%::lx_office_conf);
 
-  $file_name ||= -f 'config/kivitendo.conf' ? 'config/kivitendo.conf' : 'config/lx_office.conf';
+  $file_name ||= -f "${dir}/config/kivitendo.conf" ? "${dir}/config/kivitendo.conf" : "${dir}/config/lx_office.conf";
 
   if (-f $file_name) {
     read_config($file_name => \ my %local_conf);