added spoofing
[spider.git] / perl / DXCommandmode.pm
index b7f8e8f4fc9e78a15f43b928c6aad5b900081c27..5439fc4d21bcc8cfee490cb541ba19551e83f660 100644 (file)
@@ -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");