HMInfo: critical error. write protected config files could cause problems

git-svn-id: https://svn.fhem.de/fhem/trunk@12916 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
martinp876 2016-12-31 07:28:06 +00:00
parent efe618144c
commit af5284eb35

View File

@ -1601,6 +1601,7 @@ sub HMinfo_SetFn($@) {#########################################################
my $fn = $a[0]?$a[0]:AttrVal($name,"configFilename","regSave.cfg"); my $fn = $a[0]?$a[0]:AttrVal($name,"configFilename","regSave.cfg");
$fn = "$attr{global}{modpath}/".AttrVal($name,"configDir",".")."\/".$fn $fn = "$attr{global}{modpath}/".AttrVal($name,"configDir",".")."\/".$fn
if ($fn !~ m/\//); if ($fn !~ m/\//);
my $bl = BlockingCall("HMinfo_purgeConfig", join(",",("$name;$id;none",$fn)), my $bl = BlockingCall("HMinfo_purgeConfig", join(",",("$name;$id;none",$fn)),
"HMinfo_bpPost", 30, "HMinfo_bpPost", 30,
"HMinfo_bpAbort", "$name:$id"); "HMinfo_bpAbort", "$name:$id");
@ -1729,7 +1730,7 @@ sub HMinfo_verifyConfig($) {###################################################
my ($param) = @_; my ($param) = @_;
my ($id,$fName) = split ",",$param; my ($id,$fName) = split ",",$param;
HMinfo_purgeConfig($param); HMinfo_purgeConfig($param);
open(aSave, "$fName") || return("Can't open $fName: $!"); open(aSave, "$fName") || return("$id;Can't open $fName: $!");
my @elPeer = (); my @elPeer = ();
my @elReg = (); my @elReg = ();
my @entryNF = (); my @entryNF = ();
@ -1956,7 +1957,7 @@ sub HMinfo_purgeConfig($) {####################################################
my ($id,$fName) = split ",",$param; my ($id,$fName) = split ",",$param;
$fName = "regSave.cfg" if (!$fName); $fName = "regSave.cfg" if (!$fName);
open(aSave, "$fName") || return("Can't open $fName: $!"); open(aSave, "$fName") || return("$id;Can't open $fName: $!");
my %purgeH; my %purgeH;
while(<aSave>){ while(<aSave>){
chomp; chomp;
@ -1984,7 +1985,7 @@ sub HMinfo_purgeConfig($) {####################################################
$purgeH{$eN}{$cmd}{$typ} = $p1.($timeStamp?"#$timeStamp":""); $purgeH{$eN}{$cmd}{$typ} = $p1.($timeStamp?"#$timeStamp":"");
} }
close(aSave); close(aSave);
open(aSave, ">$fName") || return("Can't open $fName: $!"); open(aSave, ">$fName") || return("$id;Can't open $fName: $!");
print aSave "\n\n#============data purged: ".TimeNow(); print aSave "\n\n#============data purged: ".TimeNow();
foreach my $eN(sort keys %purgeH){ foreach my $eN(sort keys %purgeH){
next if (!defined $defs{$eN}); # remove deleted devices next if (!defined $defs{$eN}); # remove deleted devices
@ -2185,10 +2186,15 @@ sub HMinfo_register ($){ ######################################################
sub HMinfo_bpPost($) {#bp finished ############################################ sub HMinfo_bpPost($) {#bp finished ############################################
my ($rep) = @_; my ($rep) = @_;
my ($name,$id,$cl,$ret) = split(";",$rep,4); my ($name,$id,$cl,$ret) = split(";",$rep,4);
if ($rep =~ m/Can't open/){
asyncOutput($defs{$cl},$ret);
}
else{
if ($ret && defined $defs{$cl}){ if ($ret && defined $defs{$cl}){
$ret =~s/-ret-/\n/g; # re-insert new-line $ret =~s/-ret-/\n/g; # re-insert new-line
asyncOutput($defs{$cl},$ret); asyncOutput($defs{$cl},$ret);
} }
}
delete $defs{$name}{nb}{$id}; delete $defs{$name}{nb}{$id};
return; return;
} }