From fe3d17703406a186c682d4ba8dbcdaa36b7b4113 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sun, 1 Mar 2015 12:53:35 +0000 Subject: [PATCH] fhem.pl: $cmds->ModuleName: autoload commands even if they are defined in a "foreign" file (Forum #33916) git-svn-id: https://svn.fhem.de/fhem/trunk@8115 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/fhem.pl | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/fhem/fhem.pl b/fhem/fhem.pl index 822b3486f..290847cb0 100755 --- a/fhem/fhem.pl +++ b/fhem/fhem.pl @@ -265,6 +265,7 @@ $readingFnAttributes = "event-on-change-reading event-on-update-reading ". "?" => { ReplacedBy => "help" }, "attr" => { Fn=>"CommandAttr", Hlp=>" [],set attribute for "}, + "createlog"=> { ModuleName => "autocreate" }, "define" => { Fn=>"CommandDefine", Hlp=>" ,define a device/at/notify entity" }, "deleteattr" => { Fn=>"CommandDeleteAttr", @@ -323,6 +324,7 @@ $readingFnAttributes = "event-on-change-reading event-on-update-reading ". Hlp => "[|all|check|force] ". "[http://.../controlfile],update FHEM" }, "updatefhem" => { ReplacedBy => "update" }, + "usb" => { ModuleName => "autocreate" }, "version" => { Fn => "CommandVersion", Hlp=>"[filter],print SVN version of loaded modules" }, ); @@ -968,11 +970,16 @@ AnalyzeCommand($$;$) ############# # autoload commands. + my $lcfn = lc($fn); + $fn = $lcfn if(defined($cmds{$lcfn})); if(!defined($cmds{$fn}) || !defined($cmds{$fn}{Fn})) { - map { $fn = $_ if(lc($fn) eq lc($_)); } keys %modules; - $fn = LoadModule($fn); - $fn = lc($fn) if(defined($cmds{lc($fn)})); - return "Unknown command $fn, try help." if(!defined($cmds{$fn})); + my $modName; + map { $modName = $_ if($lcfn eq lc($_)); } keys %modules; + $modName = $cmds{$lcfn}{ModuleName} + if($cmds{$lcfn} && $cmds{$lcfn}{ModuleName}); + LoadModule($modName) if($modName); + $fn = $lcfn if($cmds{$lcfn}); + return "Unknown command $fn, try help." if(!$cmds{$fn} || !$cmds{$fn}{Fn}); } if($cl && $cmds{$fn}{ClientFilter} && @@ -1539,7 +1546,9 @@ CommandDefine($$) my ($cl, $def) = @_; my @a = split("[ \t][ \t]*", $def, 3); my $ignoreErr; - if($a[0] eq "-ignoreErr") { # RSS in fhem.cfg.demo, with no GD installed + + # used by RSS in fhem.cfg.demo, with no GD installed + if($a[0] && $a[0] eq "-ignoreErr") { $def =~ s/\s*-ignoreErr\s*//; @a = split("[ \t][ \t]*", $def, 3); $ignoreErr = 1;