From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-4.0 required=3.0 tests=ALL_TRUSTED,BAYES_00 shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id 330EE1F5A2 for ; Sat, 21 Dec 2019 08:00:09 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 6/8] nntp: cmd_newnews: use named sub for long_response Date: Sat, 21 Dec 2019 08:00:05 +0000 Message-Id: <20191221080007.27810-7-e@80x24.org> In-Reply-To: <20191221080007.27810-1-e@80x24.org> References: <20191221080007.27810-1-e@80x24.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: Introduce newnews_i, which does the same thing as the anonymous sub it replaces. --- lib/PublicInbox/NNTP.pm | 45 ++++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index c288d06b..ec9ac287 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -300,6 +300,26 @@ sub ngpat2re (;$) { $_[0] = qr/\A(?:$_[0])\z/; } +sub newnews_i { + my ($self, $overs, $ts, $prev) = @_; + my $over = $overs->[0]; + my $msgs = $over->query_ts($ts, $$prev); + if (scalar @$msgs) { + more($self, '<' . + join(">\r\n<", map { $_->mid } @$msgs ). + '>'); + $$prev = $msgs->[-1]->{num}; + } else { + shift @$overs; + if (@$overs) { # continue onto next newsgroup + $$prev = 0; + return 1; + } else { # break out of the long response. + return; + } + } +} + sub cmd_newnews ($$$$;$$) { my ($self, $newsgroups, $date, $time, $gmt, $dists) = @_; my $ts = eval { parse_time($date, $time, $gmt) }; @@ -308,34 +328,17 @@ sub cmd_newnews ($$$$;$$) { my ($keep, $skip) = split('!', $newsgroups, 2); ngpat2re($keep); ngpat2re($skip); - my @over; + my @overs; foreach my $ng (@{$self->{nntpd}->{grouplist}}) { $ng->{newsgroup} =~ $keep or next; $ng->{newsgroup} =~ $skip and next; my $over = $ng->over or next; - push @over, $over; + push @overs, $over; }; - return '.' unless @over; + return '.' unless @overs; my $prev = 0; - long_response($self, sub { - my $over = $over[0]; - my $msgs = $over->query_ts($ts, $prev); - if (scalar @$msgs) { - more($self, '<' . - join(">\r\n<", map { $_->mid } @$msgs ). - '>'); - $prev = $msgs->[-1]->{num}; - } else { - shift @over; - if (@over) { # continue onto next newsgroup - $prev = 0; - return 1; - } else { # break out of the long response. - return; - } - } - }); + long_response($self, \&newnews_i, \@overs, $ts, \$prev); } sub cmd_group ($$) {