From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: X-Spam-Status: No, score=-2.9 required=3.0 tests=ALL_TRUSTED,AWL,BAYES_00 shortcircuit=no autolearn=unavailable version=3.3.2 X-Original-To: meta@public-inbox.org Received: from localhost (dcvr.yhbt.net [127.0.0.1]) by dcvr.yhbt.net (Postfix) with ESMTP id E773063386B for ; Sat, 19 Sep 2015 02:03:46 +0000 (UTC) From: Eric Wong To: meta@public-inbox.org Subject: [PATCH 08/12] nntp: implement XPATH Date: Sat, 19 Sep 2015 02:03:36 +0000 Message-Id: <20150919020340.6484-9-e@80x24.org> In-Reply-To: <20150919020340.6484-1-e@80x24.org> References: <20150919020340.6484-1-e@80x24.org> List-Id: This may be helpful for sorting out duplicates. --- lib/PublicInbox/NNTP.pm | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/lib/PublicInbox/NNTP.pm b/lib/PublicInbox/NNTP.pm index 939fc3a..094d26d 100644 --- a/lib/PublicInbox/NNTP.pm +++ b/lib/PublicInbox/NNTP.pm @@ -653,6 +653,19 @@ sub cmd_xover ($;$) { }); } +sub cmd_xpath ($$) { + my ($self, $mid) = @_; + return r501 unless $mid =~ /\A<(.+)>\z/; + $mid = $1; + my @paths; + foreach my $ng (values %{$self->{nntpd}->{groups}}) { + my $n = $ng->mm->num_for($mid); + push @paths, "$ng->{name}/$n" if defined $n; + } + return '430 no such article on server' unless @paths; + '223 '.join(' ', @paths); +} + sub res ($$) { my ($self, $line) = @_; do_write($self, $line . "\r\n"); -- EW