X-Git-Url: http://www.dxcluster.org/gitweb/gitweb.cgi?p=spider.git;a=blobdiff_plain;f=perl%2FDXCommandmode.pm;h=4ad01392dede6d82b09df9775084a0bf197247cd;hp=4f0566f9ebc2f5f4f322d5db6d4d9b8e566cd1b6;hb=fa57f72c26032aae4c1a20358e829ba9afbf460c;hpb=84d5fec90a21118c556d22b8b36b02c93bc829f1 diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 4f0566f9..4ad01392 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -97,33 +97,7 @@ sub normal # remove leading and trailing spaces $cmdline =~ s/^\s*(.*)\s*$/$1/; - if ($self->{func}) { - my $c = qq{ \@ans = $self->{func}(\$self, \$cmdline) }; - dbg('eval', "stored func cmd = $c\n"); - eval $c; - if ($@) { - return (1, "Syserr: Eval err $errstr on stored func $self->{func}"); - } - } elsif ($self->{state} eq 'prompt') { - @ans = run_cmd($self, $cmdline) if length $cmdline; - - if ($self->{pagelth} && @ans > $self->{pagelth}) { - my $i; - for ($i = $self->{pagelth}; $i-- > 0; ) { - my $line = shift @ans; - $line =~ s/\s+$//o; # why am having to do this? - $self->send($line); - } - $self->{pagedata} = \@ans; - $self->state('page'); - $self->send($self->msg('page', scalar @ans)); - } else { - for (@ans) { - s/\s+$//o; # why ????????? - $self->send($_); - } - } - } elsif ($self->{state} eq 'page') { + if ($self->{state} eq 'page') { my $i = $self->{pagelth}; my $ref = $self->{pagedata}; my $tot = @$ref; @@ -148,6 +122,25 @@ sub normal } else { $self->state('prompt'); } + } else { + @ans = run_cmd($self, $cmdline) if length $cmdline; + + if ($self->{pagelth} && @ans > $self->{pagelth}) { + my $i; + for ($i = $self->{pagelth}; $i-- > 0; ) { + my $line = shift @ans; + $line =~ s/\s+$//o; # why am having to do this? + $self->send($line); + } + $self->{pagedata} = \@ans; + $self->state('page'); + $self->send($self->msg('page', scalar @ans)); + } else { + for (@ans) { + s/\s+$//o; # why ????????? + $self->send($_); + } + } } # send a prompt only if we are in a prompt state @@ -167,36 +160,45 @@ sub run_cmd my $cmdline = shift; my @ans; - - # strip out // - $cmdline =~ s|//|/|og; - - # split the command line up into parts, the first part is the command - my ($cmd, $args) = $cmdline =~ /^([\w\/]+)\s*(.*)/o; - - if ($cmd) { - - my ($path, $fcmd); - - # alias it if possible - my $acmd = CmdAlias::get_cmd($cmd); - if ($acmd) { - ($cmd, $args) = "$acmd $args" =~ /^([\w\/]+)\s*(.*)/o; + if ($self->{func}) { + my $c = qq{ \@ans = $self->{func}(\$self, \$cmdline) }; + dbg('eval', "stored func cmd = $c\n"); + eval $c; + if ($@) { + return (1, "Syserr: Eval err $errstr on stored func $self->{func}"); } + } else { - # first expand out the entry to a command - ($path, $fcmd) = search($main::localcmd, $cmd, "pl"); - ($path, $fcmd) = search($main::cmd, $cmd, "pl") if !$path || !$fcmd; + # strip out // + $cmdline =~ s|//|/|og; - my $package = find_cmd_name($path, $fcmd); - @ans = (0) if !$package ; + # split the command line up into parts, the first part is the command + my ($cmd, $args) = $cmdline =~ /^([\w\/]+)\s*(.*)/o; - if ($package) { - my $c = qq{ \@ans = $package(\$self, \$args) }; - dbg('eval', "cluster cmd = $c\n"); - eval $c; - if ($@) { - @ans = (0, "Syserr: Eval err cached $package\n$@"); + if ($cmd) { + + my ($path, $fcmd); + + # alias it if possible + my $acmd = CmdAlias::get_cmd($cmd); + if ($acmd) { + ($cmd, $args) = "$acmd $args" =~ /^([\w\/]+)\s*(.*)/o; + } + + # first expand out the entry to a command + ($path, $fcmd) = search($main::localcmd, $cmd, "pl"); + ($path, $fcmd) = search($main::cmd, $cmd, "pl") if !$path || !$fcmd; + + my $package = find_cmd_name($path, $fcmd); + @ans = (0) if !$package ; + + if ($package) { + my $c = qq{ \@ans = $package(\$self, \$args) }; + dbg('eval', "cluster cmd = $c\n"); + eval $c; + if ($@) { + @ans = (0, "Syserr: Eval err cached $package\n$@"); + } } } }