X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fconsole.pl;h=97b6220df84dbdec0663dc3263c368bc19faee32;hb=2747e0fe4269e9a7e095c333598191eb9dca63fc;hp=ea46553f39acce2122c0f103f3a038e9c815f5cf;hpb=16c932699e360cd44811afc68894e55a1a128962;p=spider.git diff --git a/perl/console.pl b/perl/console.pl index ea46553f..97b6220d 100755 --- a/perl/console.pl +++ b/perl/console.pl @@ -1,4 +1,4 @@ -#!/usr/bin/perl -w +#!/usr/bin/env perl # # this is the operators console. # @@ -14,6 +14,7 @@ # require 5.004; +use warnings; # search local then perl directories BEGIN { @@ -26,11 +27,16 @@ BEGIN { $is_win = ($^O =~ /^MS/ || $^O =~ /^OS-2/) ? 1 : 0; # is it Windows? } +$clusteraddr = '127.0.0.1'; +$clusterport = 27754; + use Mojo::IOLoop; +use DXVars; +use SysVar; + use Msg; use IntMsg; -use DXVars; use DXDebug; use DXUtil; use DXDebug; @@ -174,13 +180,18 @@ sub measure sub show_screen { if ($spos == @shistory - 1) { - # if we really are scrolling thru at the end of the history my $line = $shistory[$spos]; - $top->addstr("\n") if $spos > 0; + my $y = $spos; + if ($spos >= $pagel) { + $top->scrl(1); + $y = $pagel-1; +# $top->addstr("\r"); + } + $top->move($y, 0); + $top->refresh; setattr($line); $top->addstr($line); -# $top->addstr("\n"); $top->attrset(COLOR_PAIR(0)) if $has_colors; $spos = @shistory; @@ -202,8 +213,7 @@ sub show_screen for ($i = 0; $i < $pagel && $p < @shistory; $p++) { my $line = $shistory[$p]; my $lines = measure($line); - last if $i + $lines > $pagel; - $top->addstr("\n") if $i; + $top->move($i, 0); setattr($line); $top->addstr($line); $top->attrset(COLOR_PAIR(0)) if $has_colors; @@ -236,7 +246,8 @@ sub addtotop if ($inbuf =~ s/\x07+$//) { beep(); } - if (length $inbuf >= $cols) { + $inbuf =~ s/\s+$//s; + if (length $inbuf > $cols) { $Text::Wrap::Columns = $cols; push @shistory, wrap('',"\t", $inbuf); } else { @@ -255,7 +266,10 @@ sub rec_socket cease(1); } if (defined $msg) { - my ($sort, $call, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; + my ($sort, $incall, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; + + # change my call if my node says "tonight Michael you are Jane" or something like that... + $call = $incall if $call ne $incall; $line =~ s/[\x00-\x06\x08\x0a-\x19\x1b-\x1f\x80-\x9f]/./g; # immutable CSI sequence + control characters if ($sort && $sort eq 'D') { @@ -526,7 +540,7 @@ $Text::Wrap::Columns = $cols; my $lastmin = 0; -$conn = IntMsg->connect($clusteraddr, $clusterport, \&rec_socket); +$conn = IntMsg->connect($clusteraddr, $clusterport, rproc => \&rec_socket); $conn->{on_connect} = \&on_connect; $conn->{on_disconnect} = \&on_disconnect;