X-Git-Url: http://dxcluster.net/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2Fconsole.pl;h=7e725029b0fb79919dcf7dfda141aef98b2f3602;hb=ad222bb929a17f8ad54c567d4f59f68c5d1a8bbd;hp=c175122b2ee774ff307e304678c656ec508c1112;hpb=1a9286080b21d5b65f97cab08d8a493abafad8f1;p=spider.git diff --git a/perl/console.pl b/perl/console.pl index c175122b..7e725029 100755 --- a/perl/console.pl +++ b/perl/console.pl @@ -285,7 +285,7 @@ sub rec_stdin show_screen(); } - addtotop($inbuf); + addtotop(' ', $inbuf); # send it to the cluster $conn->send_later("I$call|$inbuf"); @@ -418,15 +418,18 @@ sub rec_stdin # add a line to the end of the top screen sub addtotop { + my $sort = shift; while (@_) { my $inbuf = shift; my $l = length $inbuf; - dbg("addtotop: $l $inbuf"); if ($l > $cols) { $inbuf =~ s/\s+/ /g; if (length $inbuf > $cols) { $Text::Wrap::columns = $cols; - push @sh, split /\n/, wrap('',' ' x 19, $inbuf); + my $token; + ($token) = $inbuf =~ m!^(.* de [-\w\d/\#]+:?\s+|\w{9}\@\d\d:\d\d:\d\d )!; + $token ||= ' ' x 19; + push @sh, split /\n/, wrap('', ' ' x length($token), $inbuf); } else { push @sh, $inbuf; } @@ -434,6 +437,7 @@ sub addtotop push @sh, $inbuf; } } + show_screen() unless $inscroll; } @@ -445,8 +449,8 @@ sub rec_socket cease(1); } if (defined $msg) { - dbg("msg: " . length($msg) . " '$msg'") if isdbg('console'); my ($sort, $incall, $line) = $msg =~ /^(\w)([^\|]+)\|(.*)$/; + dbg("msg: " . length($msg) . " '$msg'") if isdbg('console'); if ($line =~ s/\x07+$//) { beep(); } @@ -456,17 +460,13 @@ sub rec_socket $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') { - $line = " " unless length($line); - addtotop($line); - } elsif ($sort && $sort eq 'Z') { # end, disconnect, go, away ..... + if ($sort && $sort eq 'Z') { # end, disconnect, go, away ..... cease(0); - } - # ****************************************************** - # ****************************************************** - # any other sorts that might happen are silently ignored. - # ****************************************************** - # ****************************************************** + } else { + $line = " " unless length($line); + addtotop($sort, $line); + } + } else { cease(0); } @@ -503,7 +503,7 @@ sub idle_loop sub on_connect { my $conn = shift; - $conn->send_later("A$call|$connsort width=$cols"); + $conn->send_later("A$call|$connsort width=$cols enhanced"); $conn->send_later("I$call|set/page $maxshist"); #$conn->send_later("I$call|set/nobeep"); }