X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?p=spider.git;a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=8af394b8898d4852b6e9ca0656a3a1c5014e3313;hp=aa4cb1a37a4fb287f9245612ec0b9d88e1c8c346;hb=b060a0a3ee72530aa3f10d453186a662b66d7efe;hpb=3d29b1a4d4aab997da2deff10470068601744530 diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index aa4cb1a3..8af394b8 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -47,7 +47,7 @@ sub new sub start { - my ($self, $line) = @_; + my ($self, $line, $sort) = @_; my $user = $self->{user}; my $call = $self->{call}; my $name = $user->{name}; @@ -81,7 +81,25 @@ sub start # # This is the normal command prompt driver # + sub normal +{ + my $self = shift; + my $cmdline = shift; + + my @ans = run_cmd($self, $cmdline); + $self->send(@ans) if @ans > 0; + + # send a prompt only if we are in a prompt state + $self->prompt() if $self->{state} =~ /^prompt/o; +} + +# +# this is the thing that runs the command, it is done like this for the +# benefit of remote command execution +# + +sub run_cmd { my $self = shift; my $user = $self->{user}; @@ -141,18 +159,15 @@ sub normal if ($ans[0]) { shift @ans; - $self->send(@ans) if @ans > 0; } else { shift @ans; if (@ans > 0) { - $self->send($self->msg('e2'), @ans); + unshift @ans, $self->msg('e2'); } else { - $self->send($self->msg('e1')); + @ans = $self->msg('e1'); } } - - # send a prompt only if we are in a prompt state - $self->prompt() if $self->{state} =~ /^prompt/o; + return @ans; } #