fix DXVars.pm overrides line $clusterport
[spider.git] / perl / console.pl
index c175122b2ee774ff307e304678c656ec508c1112..32c6cf5f109d9e2cd6911d5ece1ebe6634640b27 100755 (executable)
@@ -27,8 +27,6 @@ BEGIN {
        $is_win = ($^O =~ /^MS/ || $^O =~ /^OS-2/) ? 1 : 0; # is it Windows?
 }
 
-$clusteraddr = '127.0.0.1';
-$clusterport = 27754;
 
 use Mojo::IOLoop;
 
@@ -51,6 +49,9 @@ use Console;
 # initialisation
 #
 
+$clusteraddr //= '127.0.0.1';
+$clusterport //= 27754;
+
 $call = "";                     # the callsign being used
 $node = "";                     # the node callsign being used
 $conn = 0;                      # the connection object for the cluster
@@ -285,7 +286,7 @@ sub rec_stdin
                                show_screen();
                        }
 
-                       addtotop($inbuf);
+                       addtotop(' ', $inbuf);
                
                        # send it to the cluster
                        $conn->send_later("I$call|$inbuf");
@@ -418,15 +419,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 +438,7 @@ sub addtotop
                        push @sh, $inbuf;
                }
        }
+       
        show_screen() unless $inscroll;
 }
 
@@ -445,8 +450,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 +461,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 +504,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");
 }