X-Git-Url: http://scm.dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=5439fc4d21bcc8cfee490cb541ba19551e83f660;hb=1fcf24aae37e929a6b9c2dab9ca5afff00d8db57;hp=b7f8e8f4fc9e78a15f43b928c6aad5b900081c27;hpb=adf3cc7462a4544d2bca7f380593631edcff120b;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index b7f8e8f4..5439fc4d 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -206,7 +206,8 @@ sub run_cmd $cmdline =~ s|//|/|og; # split the command line up into parts, the first part is the command - my ($cmd, $args) = $cmdline =~ /^([\S\/]+)\s*(.*)/o; + my ($cmd, $args) = split /\s+/, $cmdline, 2; + $args = "" unless $args; if ($cmd) { @@ -217,7 +218,8 @@ sub run_cmd # alias it if possible my $acmd = CmdAlias::get_cmd($cmd); if ($acmd) { - ($cmd, $args) = "$acmd $args" =~ /^([\w\/]+)\s*(.*)/o; + ($cmd, $args) = split /\s+/, "$acmd $args", 2; + $args = "" unless $args; dbg('command', "aliased cmd: $cmd $args"); } @@ -242,7 +244,11 @@ sub run_cmd $Cache{$package}->{sub} = $c; } $c = $Cache{$package}->{sub}; - @ans = &{$c}($self, $args); + eval { + @ans = &{$c}($self, $args); + }; + + return ($@) if $@; } } else { dbg('command', "cmd: $cmd not found");