diff --git a/fhem/FHEM/01_FHEMWEB.pm b/fhem/FHEM/01_FHEMWEB.pm index 8475713b7..98c87962c 100755 --- a/fhem/FHEM/01_FHEMWEB.pm +++ b/fhem/FHEM/01_FHEMWEB.pm @@ -1642,7 +1642,7 @@ FW_style($$) } else { $fileName =~ s,.*/,,g; # Little bit of security my $filePath = FW_fileNameToPath($fileName); - my($err, @data) = FileRead($filePath); + my($err, @data) = FileRead({FileName=>$filePath, ForceType=>"file"} ); if($err) { FW_pO "
$err
"; return; @@ -1678,7 +1678,7 @@ FW_style($$) if($cfgDB ne 'configDB') { # save file to filesystem $FW_data =~ s/\r//g; - my $err = FileWrite($filePath, split("\n", $FW_data)); + my $err = FileWrite({FileName=>$filePath, ForceType=>"file"}, split("\n", $FW_data)); if($err) { FW_pO "
$filePath: $!
"; return; diff --git a/fhem/fhem.pl b/fhem/fhem.pl index c87f10b22..8c9ee397f 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -3804,19 +3804,27 @@ configDBUsed() sub FileRead($) { - my ($fname) = @_; - my ($err, @ret); + my ($param) = @_; + my ($err, @ret, $fileName, $forceType); - if(configDBUsed()) { - ($err, @ret) = cfgDB_FileRead($fname); + if(ref($param) eq "HASH") { + $fileName = $param->{FileName}; + $forceType = $param->{ForceType}; + } else { + $fileName = $param; + } + $forceType = "" if(!defined($forceType)); + + if(configDBUsed() && $forceType ne "file") { + ($err, @ret) = cfgDB_FileRead($fileName); } else { - if(open(FH, $fname)) { + if(open(FH, $fileName)) { @ret = ; close(FH); chomp(@ret); } else { - $err = "Can't open $fname: $!"; + $err = "Can't open $fileName: $!"; } } @@ -3826,14 +3834,22 @@ FileRead($) sub FileWrite($@) { - my ($fname, @rows) = @_; - my ($err, @ret); + my ($param, @rows) = @_; + my ($err, @ret, $fileName, $forceType); - if(configDBUsed()) { - return cfgDB_FileWrite($fname, @rows); + if(ref($param) eq "HASH") { + $fileName = $param->{FileName}; + $forceType = $param->{ForceType}; + } else { + $fileName = $param; + } + $forceType = "" if(!defined($forceType)); + + if(configDBUsed() && $forceType ne "file") { + return cfgDB_FileWrite($fileName, @rows); } else { - if(open(FH, ">$fname")) { + if(open(FH, ">$fileName")) { binmode (FH); foreach my $l (@rows) { print FH $l,"\n"; @@ -3842,7 +3858,7 @@ FileWrite($@) return undef; } else { - return "Can't open $fname: $!"; + return "Can't open $fileName: $!"; } }