From a5f4f3d2d66ef1e7cd1990a2da72d44ee7a4ffef Mon Sep 17 00:00:00 2001 From: rudolfkoenig <> Date: Sat, 19 Aug 2017 11:19:54 +0000 Subject: [PATCH] fhem.pl: add good{Device|Reading}Name/make{Device|Reading}Name (Forum #75588) git-svn-id: https://svn.fhem.de/fhem/trunk@14924 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/fhem.pl | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/fhem/fhem.pl b/fhem/fhem.pl index ca98bcb99..2049e46cc 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -1883,7 +1883,7 @@ CommandDefine($$) if(int(@a) < 2); return "$name already defined, delete it first" if(defined($defs{$name})); return "Invalid characters in name (not A-Za-z0-9._): $name" - if($name !~ m/^[a-z0-9._]*$/i); + if(!goodDeviceName($name)); my $m = $a[1]; if(!$modules{$m}) { # Perhaps just wrong case? @@ -2857,7 +2857,7 @@ CommandSetstate($$) Log3 $d, 3, "WARNING: unsupported character in reading $sname ". "(not A-Za-z/\\d_\\.-), notify the $d->{TYPE} module maintainer." - if($sname !~ m/^[A-Za-z\d_\.\-\/]+$/ && $sname !~ m/^\./); + if(!goodReadingName($sname)); if(!defined($d->{READINGS}{$sname}) || !defined($d->{READINGS}{$sname}{TIME}) || @@ -5110,5 +5110,38 @@ getPawList($) return @dob; } +sub +goodDeviceName($) +{ + my ($name) = @_; + return ($name && $name =~ m/^[a-z0-9._]*$/i); +} + +sub +makeDeviceName($) # Convert non-valid characters to _ +{ + my ($name) = @_; + $name = "UNDEFINED" if(!defined($name)); + $name =~ s/[^a-z0-9._]/_/gi; + return $name; +} + +sub +goodReadingName($) +{ + my ($name) = @_; + return ($name && ($name =~ m/^[a-z0-9._\-\/]+$/i || $name =~ m/^\./)); +} + +sub +makeReadingName($) # Convert non-valid characters to _ +{ + my ($name) = @_; + $name = "UNDEFINED" if(!defined($name)); + return $name if($name =~ m/^\./); + $name =~ s/[^a-z0-9._\-\/]/_/gi; + return $name; +} + 1;