[patch] fhem.pl CommandAttr und Wildcard-Attribute

Begonnen von StefanStrobel, 25 Januar 2016, 20:29:21

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo,

wenn ein Modul Wildcard-Attribute verwendet und gleichzeitig Hinweise für fhemweb an die Attribute hängt, wie z.B. get[0-9]*RegOpt:s,i,g
dann kann das zu Fehlern führen, da CommandAttr versucht bei solchen Attributen den gesamten String als regex zu matchen und die Optionen passen dann evt. nicht.
Folgende kleine Änderung wäre eine Lösungsmöglichkeit:

# diff -u fhem.pl.orig fhem.pl
--- fhem.pl.orig        2016-01-25 20:21:29.485961535 +0100
+++ fhem.pl     2016-01-25 20:22:07.557480102 +0100
@@ -2448,7 +2448,9 @@
     if(" $list " !~ m/ ${attrName}[ :;]/) {
        my $found = 0;
        foreach my $atr (split("[ \t]", $list)) { # is it a regexp?
-         if(${attrName} =~ m/^$atr$/) {
+         $atr =~ /^([^ ;:]+)(:.*)?$/;
+         my $base = $1;
+         if(${attrName} =~ m/^$base$/) {
            $found++;
            last;
          }


Gruss
    Stefan

rudolfkoenig

Habs eingecheckt mit leichter Aenderung: im neuen Regexp das Leerzeichen entfernt, da es wg. split nicht mehr vorkommen duerfte.

Beim betrachten der Funktion habe ich festgestellt, dass ich nicht mehr weiss, wozu ; als Trenner zu verwenden ist, und ich vermute, das Feature funktioniert nicht. Ich meine es hatte irgendetwas mit Optional- vs. Pflichtfeld zu tun. Kann sich jemand besser erinnern?