From ad222bb929a17f8ad54c567d4f59f68c5d1a8bbd Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Fri, 10 Dec 2021 23:55:34 +0000 Subject: [PATCH] get enhanced mode "work" in basic console.pl --- perl/DXCommandmode.pm | 6 +++--- perl/console.pl | 26 ++++++++++++-------------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/perl/DXCommandmode.pm b/perl/DXCommandmode.pm index 71a888bf..00c82125 100644 --- a/perl/DXCommandmode.pm +++ b/perl/DXCommandmode.pm @@ -111,8 +111,8 @@ sub start my $pagelth = $user->pagelth; $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*//; + ($self->{width}) = $line =~ /\s*width=(\d+)/; $line =~ s/\s*width=\d+//; + $self->{enhanced} = $line =~ /\s+enhanced/; $line =~ s/\s*enhanced//; if ($line =~ /host=/) { my ($h) = $line =~ /host=(\d+\.\d+\.\d+\.\d+)/; $line =~ s/\s*host=\d+\.\d+\.\d+\.\d+// if $h; @@ -125,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} cols $self->width" . $self->{enhanced}?"enhanced":''); + 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; diff --git a/perl/console.pl b/perl/console.pl index f8d95515..7e725029 100755 --- a/perl/console.pl +++ b/perl/console.pl @@ -419,16 +419,17 @@ sub rec_stdin sub addtotop { my $sort = shift; - while (@_) { my $inbuf = shift; my $l = length $inbuf; - dbg("addtotop: $sort $l $inbuf") if isdbg('console'); - if ($l > $cols && grep $sort eq $_, qw(T A C)) { + 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; } @@ -436,6 +437,7 @@ sub addtotop push @sh, $inbuf; } } + show_screen() unless $inscroll; } @@ -447,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(); } @@ -458,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') { + if ($sort && $sort eq 'Z') { # end, disconnect, go, away ..... + cease(0); + } else { $line = " " unless length($line); addtotop($sort, $line); - } elsif ($sort && $sort eq 'Z') { # end, disconnect, go, away ..... - cease(0); - } - # ****************************************************** - # ****************************************************** - # any other sorts that might happen are silently ignored. - # ****************************************************** - # ****************************************************** + } + } else { cease(0); } -- 2.43.0