fix registration checking on call+ssid
[spider.git] / perl / console.pl
index f7b0d5f4690e7b7edbefb6d3335bc540cd24d9c0..c175122b2ee774ff307e304678c656ec508c1112 100755 (executable)
@@ -13,7 +13,7 @@
 #
 # 
 
-require 5.004;
+require 5.16.1;
 use warnings;
 
 # search local then perl directories
@@ -134,6 +134,7 @@ sub doresize
        $inscroll = 0;
        $spos = @sh < $pagel ? 0 :  @sh - $pagel;
        show_screen();
+       $conn->send_later("C$call|$cols") if $conn;
 }
 
 # cease communications
@@ -166,17 +167,6 @@ sub setattr
        }
 }
 
-# measure the no of screen lines a line will take
-sub measure
-{
-       my $line = shift;
-       return 0 unless $line;
-
-       my $l = length $line;
-       my $lines = int ($l / $cols);
-       $lines++ if $l / $cols > $lines;
-       return $lines;
-}
 
 # display the top screen
 sub show_screen
@@ -185,11 +175,6 @@ sub show_screen
                
                dbg("B: s:$spos h:" . scalar @sh) if isdbg('console');
                my ($i, $l);
-#              for ($i = 0; $i < $pagel && $p >= 0; ) {
-#                      $l = measure($sh[$p]);
-#                      $i += $l;
-#                      $p-- if $i < $pagel;
-               #               }
 
                $spos = 0 if $spos < 0;
                my $y = $spos;
@@ -198,7 +183,6 @@ sub show_screen
                $top->clrtobot();
                for ($i = 0; $i < $pagel && $y < @sh; ++$y) {
                        my $line = $sh[$y];
-#                      my $lines = measure($line);
                        my $lines = 1;
                        $top->move($i, 0);
                        dbg("C: s:$spos y:$i sh:" . scalar @sh . " l:" . length($line) . " '$line'") if isdbg('console');
@@ -295,11 +279,6 @@ sub rec_stdin
                        $bot->clrtoeol();
                        $bot->addstr(substr($inbuf, 0, $cols));
 
-                       # add it to the monitor window
-#                      unless ($spos == @sh) {
-#                              $spos = @sh;
-#                              show_screen();
-#                      }
                        if ($inscroll && $spos < @sh) {
                                $spos = @sh - $pagel;
                                $inscroll = 0;
@@ -330,12 +309,6 @@ sub rec_stdin
                        }
                } elsif ($r eq KEY_PPAGE || $r eq "\032") {
                        if ($spos > 0 && @sh > $pagel) {
-#                              my ($i, $l);
-#                              for ($i = 0; $i < $pagel-1 && $spos >= 0; ) {
-#                                      $l = measure($sh[$spos]);
-#                                      $i += $l;
-#                                      --$spos if $i <= $pagel;
-#                              }
                                $spos -= $pagel+int($pagel/2); 
                                $spos = 0 if $spos < 0;
                                $inscroll = 1;
@@ -345,12 +318,6 @@ sub rec_stdin
                        }
                } elsif ($r eq KEY_NPAGE || $r eq "\026") {
                        if ($inscroll && $spos < @sh) {
-#                              my ($i, $l);
-#                              for ($i = 0; $i <= $pagel && $spos < @sh; ) {
-#                                      $l = measure($sh[$spos]);
-#                                      $i += $l;
-#                                      ++$spos if $i <= $pagel && $spos < @sh;
-#                              }
 
                                dbg("NPAGE sp:$spos $sh:". scalar @sh . " pl: $pagel") if isdbg('console');
                                $spos += int($pagel/2);
@@ -454,10 +421,15 @@ sub addtotop
        while (@_) {
                my $inbuf = shift;
                my $l = length $inbuf;
+               dbg("addtotop: $l $inbuf");
                if ($l > $cols) {
-#                      $Text::Wrap::Columns = $cols;
-#                      push @sh, wrap('',"\t", $inbuf);
-                       push @sh, $inbuf;
+                       $inbuf =~ s/\s+/ /g;
+                       if (length $inbuf > $cols) {
+                               $Text::Wrap::columns = $cols;
+                               push @sh, split /\n/, wrap('',' ' x 19, $inbuf);
+                       } else {
+                               push @sh, $inbuf;
+                       }
                } else {
                        push @sh, $inbuf;
                }
@@ -518,10 +490,10 @@ sub idle_loop
        }
        my $ch = $bot->getch();         # this is here just to catch RESIZE events
        if (defined $ch) {
-               if ($ch == KEY_RESIZE) {
+               if ($ch eq KEY_RESIZE) {
                        doresize();
                } else {
-                       rec_stdin($ch) unless $ch == '-1';
+                       rec_stdin($ch) unless $ch eq '-1';
                }
        }
        $top->refresh() if $top->is_wintouched;
@@ -551,7 +523,7 @@ sub on_disconnect
 while (@ARGV && $ARGV[0] =~ /^-/) {
        my $arg = shift;
        if ($arg eq '-x') {
-               dbginit();
+               dbginit('console');
                dbgadd('console');
                $maxshist = 200;
        }
@@ -580,13 +552,13 @@ unless ($DB::VERSION) {
 
 $SIG{'HUP'} = \&sig_term;
 
-# start up
+
+# start upb
+$Text::Wrap::columns = $cols;
 doresize();
 
 $SIG{__DIE__} = \&sig_term;
 
-#$Text::Wrap::Columns = $cols;
-
 my $lastmin = 0;