X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=d17f47e61b017f8dfa40f1a825249bb29edce6e4;hb=0e84728de35d2dadbb9d624614a471b68ae9eef6;hp=b7f8e8f4fc9e78a15f43b928c6aad5b900081c27;hpb=adf3cc7462a4544d2bca7f380593631edcff120b;p=spider.git diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index b7f8e8f4..d17f47e6 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -27,6 +27,7 @@ use Filter; use Carp; use Minimuf; use DXDb; +use Sun; use strict; use vars qw(%Cache %cmd_cache $errstr %aliases $scriptbase); @@ -70,8 +71,13 @@ sub start $self->{consort} = $line; # save the connection type # set some necessary flags on the user if they are connecting - $self->{beep} = $self->{wwv} = $self->{wx} = $self->{talk} = $self->{ann} = $self->{here} = $self->{dx} = 1; - # $self->prompt() if $self->{state} =~ /^prompt/o; + $self->{beep} = $user->wantbeep; + $self->{ann} = $user->wantann; + $self->{wwv} = $user->wantwwv; + $self->{talk} = $user->wanttalk; + $self->{wx} = $user->wantwx; + $self->{dx} = $user->wantdx; + $self->{here} = 1; # add yourself to the database my $node = DXNode->get($main::mycall) or die "$main::mycall not allocated in DXNode database"; @@ -168,8 +174,7 @@ sub normal $self->send($self->msg('page', scalar @ans)); } else { for (@ans) { - s/\s+$//o; # why ????????? - $self->send($_); + $self->send($_) if $_; } } } @@ -206,7 +211,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 +223,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 +249,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");