Fix slots around the time
authorDirk Koopman <djk@tobit.co.uk>
Fri, 10 Dec 2021 15:38:42 +0000 (15:38 +0000)
committerDirk Koopman <djk@tobit.co.uk>
Fri, 10 Dec 2021 15:38:42 +0000 (15:38 +0000)
Fill the slots around the time in the order set/dxgid, set/usstate, set/dxcq or set/dxicq

Changes
cmd/set/dxcq.pl
cmd/set/dxitu.pl
cmd/set/usstate.pl
cmd/show/log.pl
perl/DXChannel.pm
perl/DXCommandmode.pm
perl/DXLogPrint.pm
perl/Timer.pm
perl/console.pl
scripts/user_default.issue

diff --git a/Changes b/Changes
index 85ec11cf12d021e96da763220679ebf1840d47a8..bbd8c452b3c6c0fc227164b6d623e5a2c9d52161 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,3 +1,6 @@
+10Dec21=======================================================================
+1. Fix the output of set/dxgrid, set/usstate and set/dxcq or set/dxitu to how
+   it was always supposed to be since 2003.
 09Dec21=======================================================================
 1. Moved isregistered to DXChannel for safety...
 08Dec21=======================================================================
index bfe40760692a565c442a16b52e737fea73266339..f3de3303f6c29e34974755096ea0d5ace40e913a 100644 (file)
@@ -22,10 +22,10 @@ foreach $call (@args) {
                        push @out, $self->msg('dxituu', $call);
                        $user->wantdxitu(0);
                }
-               if ($user->wantusstate) {
-                       push @out, $self->msg('usstateu', $call);
-                       $user->wantusstate(0);
-               }
+#              if ($user->wantusstate) {
+#                      push @out, $self->msg('usstateu', $call);
+#                      $user->wantusstate(0);
+#              }
                $user->put;
                push @out, $self->msg('dxcqs', $call);
        } else {
index 0e002ba748fe99a70980deef98a3d1b87f76ef4c..a8fd500e179bd795f633f9d49f0cc274f533d0ae 100644 (file)
@@ -18,10 +18,10 @@ foreach $call (@args) {
        my $user = DXUser::get_current($call);
        if ($user) {
                $user->wantdxitu(1);
-               if ($user->wantdxcq) {
-                       push @out, $self->msg('dxcqu', $call);
-                       $user->wantdxcq(0);
-               }
+#              if ($user->wantdxcq) {
+#                      push @out, $self->msg('dxcqu', $call);
+#                      $user->wantdxcq(0);
+#              }
                if ($user->wantusstate) {
                        push @out, $self->msg('usstateu', $call);
                        $user->wantusstate(0);
index 3babc8808c4f288d232fd18ff6f67b6813e7547f..af3072406eab11634f2ee7e79007fb6d00cb7e68 100644 (file)
@@ -20,14 +20,14 @@ foreach $call (@args) {
        my $user = DXUser::get_current($call);
        if ($user) {
                $user->wantusstate(1);
-               if ($user->wantdxitu) {
-                       push @out, $self->msg('dxituu', $call);
-                       $user->wantdxitu(0);
-               }
-               if ($user->wantdxcq) {
-                       push @out, $self->msg('dxcqu', $call);
-                       $user->wantdxcq(0);
-               }
+#              if ($user->wantdxitu) {
+#                      push @out, $self->msg('dxituu', $call);
+#                      $user->wantdxitu(0);
+#              }
+#              if ($user->wantdxcq) {
+#                      push @out, $self->msg('dxcqu', $call);
+#                      $user->wantdxcq(0);
+#              }
                $user->put;
                push @out, $self->msg('usstates', $call);
        } else {
index b1023f29bea726cdf5182c58e0a4af6bf82f91ba..ec84daa0af781343767cd915409388642756a553 100644 (file)
@@ -24,7 +24,7 @@ sub handle
                        next if $from && $to > $from;
                }
                unless ($to) {
-                       ($to) = $f =~ /^(\d+)$/o if !$to;              # is it a to count?
+                       ($to) = $f =~ /^(\d+)$/ if !$to;              # is it a to count?
                        next if $to;
                }
                unless ($f =~ /^\d+/) {
index 9d6b33a16743a213d26d7e4e503af48b3263aaa9..a0bc6ab9d9e7c3e1400709e9473037e745fd890e 100644 (file)
@@ -770,7 +770,7 @@ sub isregistered
        my $self = shift;
 
        # the sysop is registered!
-       return 1 if $self->call eq $main::myalias || $self->call eq $main::mycall;
+       return 1 if $self->{call} eq $main::myalias || $self->{call} eq $main::mycall;
        
        if ($main::reqreg) {
                return $self->{registered};
index 13943472ca462ec70c2f7f23448ae560a5295730..71a888bfcf5a352de99b84965d296079c23742e6 100644 (file)
@@ -112,6 +112,7 @@ sub start
        $pagelth = $default_pagelth unless defined $pagelth;
        $self->{pagelth} = $pagelth;
        ($self->{width}) = $line =~ /width=(\d+)/; $line =~ s/\s*width=\d+\s*//;
+       $self->{enhanced} = $line =~ /\benhanced\b/; $line =~ s/\s*enhanced\s*//;
        if ($line =~ /host=/) {
                my ($h) = $line =~ /host=(\d+\.\d+\.\d+\.\d+)/;
                $line =~ s/\s*host=\d+\.\d+\.\d+\.\d+// if $h;
@@ -124,7 +125,7 @@ sub start
        $self->{width} = 80 unless $self->{width} && $self->{width} > 80;
        $self->{consort} = $line;       # save the connection type
 
-       LogDbg('DXCommand', "$call connected from $self->{hostname}");
+       LogDbg('DXCommand', "$call connected from $self->{hostname} cols $self->width" . $self->{enhanced}?"enhanced":'');
 
        # set some necessary flags on the user if they are connecting
        $self->{beep} = $user->wantbeep;
@@ -1004,40 +1005,51 @@ sub format_dx_spot
        my $self = shift;
 
        my $t = ztime($_[2]);
-       my $loc = '';
-       my $clth = 30 + $self->{width} - 80;    # allow comment to grow according the screen width 
-       #       --$clth if $self->{consort} eq 'local';
+       my ($slot1, $slot2) = ('', '');
        
+       my $clth = 30 + $self->{width} - 80;    # allow comment to grow according the screen width 
        my $comment = substr (($_[3] || ''), 0, $clth);
        $comment =~ s/\t/ /g;
-       
        $comment .= ' ' x ($clth - (length($comment)));
        
-    if ($self->{user}->wantgrid) {
+    if (!$slot1 && $self->{user}->wantgrid) {
                my $ref = DXUser::get_current($_[1]);
                if ($ref && $ref->qra) {
-                       my $cloc = ' ' . substr($ref->qra, 0, 4);
-                       $comment = substr $comment, 0,  ($clth - (length($comment)+length($cloc)));
-                       $comment .= $cloc;
+                       $slot1 = ' ' . substr($ref->qra, 0, 4);
+               }
+       }
+       if (!$slot1 && $self->{user}->wantusstate) {
+               $slot1 = " $_[12]" if $_[12];
+       }
+       unless ($slot1) {
+               if ($self->{user}->wantdxitu) {
+                       $slot1 = sprintf(" %2d", $_[8]) if defined $_[8]; 
+               } elsif ($self->{user}->wantdxcq) {
+                       $slot1 = sprintf(" %2d", $_[9]) if defined $_[9];
                }
+       }
+       $comment = substr($comment, 0,  $clth-length($slot1)) . $slot1 if $slot1;
+       
+    if (!$slot2 && $self->{user}->wantgrid) {
                my $origin = $_[4];
                $origin =~ s/-#$//;                     # sigh......
-               $ref = DXUser::get_current($origin);
+               my $ref = DXUser::get_current($origin);
                if ($ref && $ref->qra) {
-                       $loc = ' ' . substr($ref->qra, 0, 4);
+                       $slot2 = ' ' . substr($ref->qra, 0, 4);
+               }
+       }
+       if (!$slot2 && $self->{user}->wantusstate) {
+               $slot2 = " $_[13]" if $_[13];
+       }
+       unless ($slot2) {
+               if ($self->{user}->wantdxitu) {
+                       $slot2 = sprintf(" %2d", $_[10]) if defined $_[10]; 
+               } elsif ($self->{user}->wantdxcq) {
+                       $slot2 = sprintf(" %2d", $_[11]) if defined $_[11]; 
                }
-       } elsif ($self->{user}->wantdxitu) {
-               $loc = ' ' . sprintf("%2d", $_[10]) if defined $_[10];
-               $comment = substr($comment, 0,  $clth-3) . ' ' . sprintf("%2d", $_[8]) if defined $_[8]; 
-       } elsif ($self->{user}->wantdxcq) {
-               $loc = ' ' . sprintf("%2d", $_[11]) if defined $_[11];
-               $comment = substr($comment, 0, $clth-3) . ' ' . sprintf("%2d", $_[9]) if defined $_[9]; 
-       } elsif ($self->{user}->wantusstate) {
-               $loc = ' ' . $_[13] if $_[13];
-               $comment = substr($comment, 0,  $clth-3) . ' ' . $_[12] if $_[12]; 
        }
 
-       return sprintf "DX de %-8.8s%10.1f  %-12.12s %-s $t$loc", "$_[4]:", $_[0], $_[1], $comment;
+       return sprintf "DX de %-8.8s%10.1f  %-12.12s %-s $t$slot2", "$_[4]:", $_[0], $_[1], $comment;
 }
 
 
@@ -1397,19 +1409,5 @@ sub user_count
        return ($users, $maxusers);
 }
 
-sub isregistered
-{
-       my $self = shift;
-
-       # the sysop is registered!
-       return 1 if $self->call eq $main::myalias || $self->call eq $main::mycall;
-       
-       if ($main::reqreg) {
-               return $self->{registered};
-       } else {
-               return 1;
-       }
-}
-
 1;
 __END__
index 0d99eb41804a740a9d0e95a18c13cabdf2a93b36..244402d6962493e685edb147cd734e83427284f3 100644 (file)
@@ -60,7 +60,7 @@ sub print
        }
        if ($who) {
                $hint .= ' && ' if $hint;
-               $hint .= q{m{\Q$who\E}oi};
+               $hint .= q{m{\Q$who\E}i};
        } 
        $hint = "next unless $hint" if $hint;
        $hint .= "; next unless m{^\\d+\\^$pattern\\^}" if $pattern;
index e0f760b857a576708c60a01d9fe74a6a58b0a73f..e5ffa52424a1941e6d30979ee42b1b42eb1c51a1 100644 (file)
@@ -10,6 +10,8 @@
 
 package Timer;
 
+use Mojo::IOLoop;
+
 use vars qw(@timerchain $notimers $lasttime);
 use DXDebug;
 
index c175122b2ee774ff307e304678c656ec508c1112..f8d955154e95238796aa3c28d2b7bf92d2d90c52 100755 (executable)
@@ -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,11 +418,13 @@ 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) {
+               dbg("addtotop: $sort $l $inbuf") if isdbg('console');
+               if ($l > $cols && grep $sort eq $_, qw(T A C)) {
                        $inbuf =~ s/\s+/ /g;
                        if (length $inbuf > $cols) {
                                $Text::Wrap::columns = $cols;
@@ -458,7 +460,7 @@ sub rec_socket
                $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);
+                       addtotop($sort, $line);
                } elsif ($sort && $sort eq 'Z') { # end, disconnect, go, away .....
                        cease(0);
                }         
@@ -503,7 +505,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");
 }
index 0b4aaec174175bc9a537c267cd46f40fff584a85..9a8bde4a6c3d83064101c29df7055480f066507d 100644 (file)
@@ -4,5 +4,9 @@
 blank +
 sh/dx 5
 blank -
+sh/u
+blank -
 sh/wwv 1
+blank -
+sh/wcy 1
 blank +