Fixes for bugs reported by Martin

git-svn-id: https://fhem.svn.sourceforge.net/svnroot/fhem/trunk/fhem@553 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
rudolfkoenig
2010-01-20 08:47:08 +00:00
parent aad2abb596
commit 39ca7054ff
2 changed files with 13 additions and 12 deletions

View File

@@ -48,7 +48,9 @@ structure_Define($$)
my %list; my %list;
foreach my $a (@a) { foreach my $a (@a) {
$list{$a} = 1; foreach my $d (devspec2array($a)) {
$list{$d} = 1;
}
} }
$hash->{CONTENT} = \%list; $hash->{CONTENT} = \%list;
$hash->{STATE} = join(" ", sort(keys %{$hash->{CONTENT}})); $hash->{STATE} = join(" ", sort(keys %{$hash->{CONTENT}}));

View File

@@ -22,7 +22,7 @@ sub
XmlEscape($) XmlEscape($)
{ {
my $a = shift; my $a = shift;
return "" if(!$a); return "" if(!defined($a));
$a =~ s/\\\n/<br>/g; # Multi-line $a =~ s/\\\n/<br>/g; # Multi-line
$a =~ s/&/&amp;/g; $a =~ s/&/&amp;/g;
$a =~ s/"/&quot;/g; $a =~ s/"/&quot;/g;
@@ -41,14 +41,13 @@ CommandXmlList($$)
my $lt = ""; my $lt = "";
delete($modules{""}) if(defined($modules{""})); delete($modules{""}) if(defined($modules{""}));
for my $d (sort { my $x = $modules{$defs{$a}{TYPE}}{ORDER} cmp for my $d (sort { my $x = $defs{$a}{TYPE}.$modules{$defs{$a}{TYPE}}{ORDER} cmp
$modules{$defs{$b}{TYPE}}{ORDER}; $defs{$b}{TYPE}.$modules{$defs{$b}{TYPE}}{ORDER};
$x = ($a cmp $b) if($x == 0); $x; } keys %defs) { $x = ($a cmp $b) if($x == 0); $x; } keys %defs) {
next if(IsIgnored($d)); next if(IsIgnored($d));
my $p = $defs{$d}; my $p = $defs{$d};
my $t = $p->{TYPE}; my $t = $p->{TYPE};
if($t ne $lt) { if($t ne $lt) {
$str .= "\t</${lt}_LIST>\n" if($lt); $str .= "\t</${lt}_LIST>\n" if($lt);
$str .= "\t<${t}_LIST>\n"; $str .= "\t<${t}_LIST>\n";
@@ -78,8 +77,8 @@ CommandXmlList($$)
if($r) { if($r) {
foreach my $c (sort keys %{$r}) { foreach my $c (sort keys %{$r}) {
my $h = $r->{$c}; my $h = $r->{$c};
next if(!$h->{VAL} || !$h->{TIME}); next if(!defined($h->{VAL}) || !defined($h->{TIME}));
$str .= $str .=
sprintf("\t\t\t<STATE key=\"%s\" value=\"%s\" measured=\"%s\"/>\n", sprintf("\t\t\t<STATE key=\"%s\" value=\"%s\" measured=\"%s\"/>\n",
XmlEscape($c), XmlEscape($h->{VAL}), $h->{TIME}); XmlEscape($c), XmlEscape($h->{VAL}), $h->{TIME});
} }