From 3255dd23e14d33d5528cfe445bda4c18a8e989b4 Mon Sep 17 00:00:00 2001 From: markusbloch Date: Fri, 29 Jan 2016 19:43:10 +0000 Subject: [PATCH] 98_version.pm: fixing race condition when execution "version noheader" git-svn-id: svn://svn.code.sf.net/p/fhem/code/trunk@10658 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_version.pm | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/fhem/FHEM/98_version.pm b/fhem/FHEM/98_version.pm index 0b0d55a7e..ade687d7c 100755 --- a/fhem/FHEM/98_version.pm +++ b/fhem/FHEM/98_version.pm @@ -15,9 +15,9 @@ sub CommandVersion($$) { my ($cl, $param) = @_; - - my $noheader = ($param =~ s/\s+noheader\s*$//); + my $noheader = ($param =~ s/(?:^\s*|\s+)noheader\s*$//); + eval { "test" =~ /$param/ }; return "invalid filter regexp" if($@); @@ -30,7 +30,7 @@ CommandVersion($$) foreach my $fn (@files) { next unless($fn =~ /^(?:$modpath.?)?FHEM/ or $fn =~ /fhem.pl$/); # configDB my $mod_name = ($fn=~ /[\/\\]([^\/\\]+)$/ ? $1 : $fn); - next if($param && $mod_name !~ /$param/); + next if($param ne "" && $mod_name !~ /$param/); next if(grep(/$mod_name/, @ret)); Log 4, "Looking for SVN Id in module $mod_name"; @@ -58,8 +58,8 @@ CommandVersion($$) } @ret = map {/\$Id\: (\S+) (\S+) (.+?) \$/ ? sprintf("%-".$max."s %5d %s",$1,$2,$3) : $_} @ret; - @ret = sort {version_sortModules($a, $b)} grep {(defined($param) ? $_ =~ /$param/ : 1)} @ret; - return "no loaded modules found that match: $param" if($param && !@ret); + @ret = sort {version_sortModules($a, $b)} grep {($param ne "" ? $_ =~ /$param/ : 1)} @ret; + return "no loaded modules found that match: $param" if($param ne "" && !@ret); return ($noheader ? "" : sprintf("%-".$max."s %s","File","Rev Last Change\n\n")). trim(join("\n", grep (($_ =~ /^fhem.pl|\d\d_/), @ret))."\n\n". join("\n", grep (($_ !~ /^fhem.pl|\d\d_/), @ret))