use DXVars;
use DXDebug;
use DXM;
+use DXLog;
use CmdAlias;
use FileHandle;
use Carp;
sub start
{
- my ($self, $line) = @_;
+ my ($self, $line, $sort) = @_;
my $user = $self->{user};
my $call = $self->{call};
my $name = $user->{name};
my $nchan = DXChannel->get($main::mycall);
my @pc16 = DXProt::pc16($nchan, $cuser);
DXProt::broadcast_ak1a(@pc16);
+ Log('DXCommand', "$call connected");
}
#
# 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};
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;
}
#
my $nchan = DXChannel->get($main::mycall);
my $pc17 = $nchan->pc17($self);
DXProt::broadcast_ak1a($pc17);
-
+
+ Log('DXCommand', "$call disconnected");
$ref->del() if $ref;
}