]> Sergey Matveev's repositories - public-inbox.git/commitdiff
nntp: cmd_newnews: use named sub for long_response
authorEric Wong <e@80x24.org>
Sat, 21 Dec 2019 08:00:05 +0000 (08:00 +0000)
committerEric Wong <e@80x24.org>
Sun, 22 Dec 2019 03:56:15 +0000 (03:56 +0000)
Introduce newnews_i, which does the same thing as the anonymous
sub it replaces.

lib/PublicInbox/NNTP.pm

index 67f82339566daec6458a0ea8e0dae4720649b53c..1f31b4a5baae9685653d9a9d67cdf0ecc1f4ce90 100644 (file)
@@ -290,6 +290,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) };
@@ -298,34 +318,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 ($$) {