From bdb2057b06d14c2cdba899869ba7929f052b2b50 Mon Sep 17 00:00:00 2001 From: Dirk Koopman Date: Mon, 20 Apr 2020 14:39:39 +0100 Subject: [PATCH] fix sh/log users as well --- cmd/show/announce.pl | 6 +- cmd/show/chat.pl | 2 +- cmd/show/groups.pl | 181 ++++++++++++++++++++++--------------------- cmd/show/rcmd.pl | 2 +- cmd/show/talk.pl | 8 +- 5 files changed, 100 insertions(+), 99 deletions(-) diff --git a/cmd/show/announce.pl b/cmd/show/announce.pl index 77811449..2820c6c7 100644 --- a/cmd/show/announce.pl +++ b/cmd/show/announce.pl @@ -28,13 +28,13 @@ while ($f = shift @f) { # next field next if $to; } next if $who; - ($who) = $f =~ /^(\w+)/o; + #($who) = $f =~ /^(\w+)/o; } $to = 20 unless $to; $from = 0 unless $from; -@out = $self->spawn_cmd("show/announce $cmdline", \&DXLog::print, args => [$from, $to, $main::systime, 'ann', $who]); +return (1, DXLog::print($from, $to, $main::systime, 'ann', $who)) if $self->{_nospawn};; +return (1, $self->spawn_cmd("show/announce $cmdline", \&DXLog::print, args => [$from, $to, $main::systime, 'ann', $who])); -#@out = DXLog::print($from, $to, $main::systime, 'ann', $who); return (1, @out); diff --git a/cmd/show/chat.pl b/cmd/show/chat.pl index 9f543df5..cc251c10 100644 --- a/cmd/show/chat.pl +++ b/cmd/show/chat.pl @@ -28,7 +28,7 @@ while ($f = shift @f) { # next field next if $to; } next if $who; - ($who) = $f =~ /^(\w+)/o; +# ($who) = $f =~ /^(\w+)/o; } $to = 20 unless $to; diff --git a/cmd/show/groups.pl b/cmd/show/groups.pl index 8cbf54e6..85e3fe2b 100644 --- a/cmd/show/groups.pl +++ b/cmd/show/groups.pl @@ -8,104 +8,107 @@ use Time::Local; +my $to; + sub handle { my $self = shift; - my $to = shift; + $to = shift; if ($to =~ /\D/) { return (1, "try sh/chatgroups xxx where xxx is the number of chat messages to search."); } - - my @out; $to = 500 unless $to; - @out = $self->spawn_cmd("show/groups $to", \&DXLog::print, - args => [0, $to, $main::systime, 'chat', undef], - cb => sub { - my $self = shift; - my @chatlog = @_; + if ($self->{_nospawn}) { + return (1, doit($self, DXLog::print(undef, $to, $main::systime, 'chat', undef))); + } + return (1, $self->spawn_cmd("show/groups $to", \&DXLog::print, args => [0, $to, $main::systime, 'chat', undef], cb => \&doit)); +} + +sub doit { + my $self = shift; + + my @chatlog = @_; + + my $g= {}; + my @out; + my $row; + my ($time, $call, $group); + my $found; + my %month = ( + Jan => 0, + Feb => 1, + Mar => 2, + Apr => 3, + May => 4, + Jun => 5, + Jul => 6, + Aug => 7, + Sep => 8, + Oct => 9, + Nov => 10, + Dec => 11, + ); + + @chatlog = reverse @chatlog; + foreach $row(@chatlog) { + ($time, $call, $group) = ($row =~ m/^(\S+) (\S+) -> (\S+) /o); + if (!exists $g->{$group}) { + $time =~ m/^(\d\d)(\w{3})(\d{4})\@(\d\d):(\d\d):(\d\d)/o; + $g->{$group}->{sec} = timegm($6, $5, $4, $1, $month{$2}, $3-1900); + $time =~ s/\@/ at /; + $g->{$group}->{last} = $time; + push @{ $g->{$group}->{calls} }, $call; + } + else { + $found = 0; + foreach (@{ $g->{$group}->{calls} }) { + if (/$call/) { + $found = 1; + last; + } + } + push @{ $g->{$group}->{calls} }, $call unless $found; + } + $g->{$group}->{msgcount}++; + } - my $g= {}; - my @out; - my $row; - my ($time, $call, $group); - my $found; - my %month = ( - Jan => 0, - Feb => 1, - Mar => 2, - Apr => 3, - May => 4, - Jun => 5, - Jul => 6, - Aug => 7, - Sep => 8, - Oct => 9, - Nov => 10, - Dec => 11, - ); + push (@out, "Chat groups recently used:"); + push (@out, "($to messages searched)"); + push (@out, "--------------------------"); + my @calls; + my @l; + my $max = 6; + my $mtext; + foreach $group (sort { $g->{$b}->{sec} <=> $g->{$a}->{sec} } keys %$g) { + @calls = sort( @{ $g->{$group}->{calls} } ); + $mtext = " " . $g->{$group}->{msgcount} . " messages by:"; + push (@out, "$group: Last active " . $g->{$group}->{last}); + if (@calls <= $max) { + push (@out, "$mtext @calls"); + } + else { + foreach $call(@calls) { + push @l, $call; + if (@l >= $max) { + if ($max == 6) { + push (@out, "$mtext @l"); + } + else { + push (@out, " @l"); + } + @l = (); + $max = 8; + } + } + push (@out, " @l") if (@l); + $max = 6; + @l = (); + } + push (@out, "-"); + } + return @out; + } - @chatlog = reverse @chatlog; - foreach $row(@chatlog) { - ($time, $call, $group) = ($row =~ m/^(\S+) (\S+) -> (\S+) /o); - if (!exists $g->{$group}) { - $time =~ m/^(\d\d)(\w{3})(\d{4})\@(\d\d):(\d\d):(\d\d)/o; - $g->{$group}->{sec} = timegm($6, $5, $4, $1, $month{$2}, $3-1900); - $time =~ s/\@/ at /; - $g->{$group}->{last} = $time; - push @{ $g->{$group}->{calls} }, $call; - } - else { - $found = 0; - foreach (@{ $g->{$group}->{calls} }) { - if (/$call/) { - $found = 1; - last; - } - } - push @{ $g->{$group}->{calls} }, $call unless $found; - } - $g->{$group}->{msgcount}++; - } - push (@out, "Chat groups recently used:"); - push (@out, "($to messages searched)"); - push (@out, "--------------------------"); - my @calls; - my @l; - my $max = 6; - my $mtext; - foreach $group (sort { $g->{$b}->{sec} <=> $g->{$a}->{sec} } keys %$g) { - @calls = sort( @{ $g->{$group}->{calls} } ); - $mtext = " " . $g->{$group}->{msgcount} . " messages by:"; - push (@out, "$group: Last active " . $g->{$group}->{last}); - if (@calls <= $max) { - push (@out, "$mtext @calls"); - } - else { - foreach $call(@calls) { - push @l, $call; - if (@l >= $max) { - if ($max == 6) { - push (@out, "$mtext @l"); - } - else { - push (@out, " @l"); - } - @l = (); - $max = 8; - } - } - push (@out, " @l") if (@l); - $max = 6; - @l = (); - } - push (@out, "-"); - } - return @out; - }); - - # my @chatlog = DXLog::print(undef, $to, $main::systime, 'chat', undef); - return (1, @out); -} diff --git a/cmd/show/rcmd.pl b/cmd/show/rcmd.pl index d7cbd332..7cd02d5d 100644 --- a/cmd/show/rcmd.pl +++ b/cmd/show/rcmd.pl @@ -27,7 +27,7 @@ while ($f = shift @f) { # next field next if $to; } next if $who; - ($who) = $f =~ /^(\w+)/o; + #($who) = $f =~ /^(\w+)/o; } $to = 20 unless $to; diff --git a/cmd/show/talk.pl b/cmd/show/talk.pl index 942dac72..811719d7 100644 --- a/cmd/show/talk.pl +++ b/cmd/show/talk.pl @@ -25,7 +25,7 @@ while ($f = shift @f) { # next field next if $to; } next if $who; - ($who) = $f =~ /^(\w+)/o; +# ($who) = $f =~ /^(\w+)/o; } $to = 20 unless $to; @@ -35,7 +35,5 @@ if ($self->priv < 6) { return (1, $self->msg('e5')) if $who ne $self->call; } -@out = $self->spawn_cmd("show/talk $cmdline", \&DXLog::print, args => [$from, $to, $main::systime, 'talk', $who]); - -#@out = DXLog::print($from, $to, $main::systime, 'talk', $who); -return (1, @out); +return (1, DXLog::print($from, $to, $main::systime, 'talk', $who)) if $self->{_nospawn}; +return (1, $self->spawn_cmd("show/talk $cmdline", \&DXLog::print, args => [$from, $to, $main::systime, 'talk', $who])); -- 2.34.1