]> dxcluster.org Git - spider.git/blobdiff - perl/DXCommandmode.pm
added chaining to databases
[spider.git] / perl / DXCommandmode.pm
index b7f8e8f4fc9e78a15f43b928c6aad5b900081c27..ca6c053e7d03cae21ba4376aff4b0eb102e5ef82 100644 (file)
@@ -168,8 +168,7 @@ sub normal
                        $self->send($self->msg('page', scalar @ans));
                } else {
                        for (@ans) {
-                               s/\s+$//o;              # why ?????????
-                               $self->send($_);
+                               $self->send($_) if $_;
                        }
                } 
        } 
@@ -206,7 +205,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 +217,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 +243,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");