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 EBB321F5A1 for ; Sat, 21 Dec 2019 08:00:08 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 5/8] nntp: cmd_listgroup: use named subs for long_response Date: Sat, 21 Dec 2019 08:00:04 +0000 Message-Id: <20191221080007.27810-6-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 listgroup_range_i and listgroup_all_i subs which do the same things as the anonymous subs they replace. --- lib/PublicInbox/NNTP.pm | 35 +++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index dff1bcd2..c288d06b 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -190,6 +190,22 @@ sub cmd_list ($;$$) { '.' } +sub listgroup_range_i { + my ($self, $beg, $end) = @_; + my $r = $self->{ng}->mm->msg_range($beg, $end, 'num'); + scalar(@$r) or return; + more($self, join("\r\n", map { $_->[0] } @$r)); + 1; +} + +sub listgroup_all_i { + my ($self, $num) = @_; + my $ary = $self->{ng}->mm->ids_after($num); + scalar(@$ary) or return; + more($self, join("\r\n", @$ary)); + 1; +} + sub cmd_listgroup ($;$$) { my ($self, $group, $range) = @_; if (defined $group) { @@ -197,26 +213,13 @@ sub cmd_listgroup ($;$$) { return $res if ($res !~ /\A211 /); more($self, $res); } - my $ng = $self->{ng} or return '412 no newsgroup selected'; - my $mm = $ng->mm; + $self->{ng} or return '412 no newsgroup selected'; if (defined $range) { my $r = get_range($self, $range); return $r unless ref $r; - my ($beg, $end) = @$r; - long_response($self, sub { - $r = $mm->msg_range($beg, $end, 'num'); - scalar(@$r) or return; - more($self, join("\r\n", map { $_->[0] } @$r)); - 1; - }); + long_response($self, \&listgroup_range_i, @$r); } else { # grab every article number - my $n = 0; - long_response($self, sub { - my $ary = $mm->ids_after(\$n); - scalar(@$ary) or return; - more($self, join("\r\n", @$ary)); - 1; - }); + long_response($self, \&listgroup_all_i, \(my $num = 0)); } }