#!/usr/bin/perl # Originally by Simon Tatham # Modified by Richard Kettlewell, Colin Watson, Ian Jackson use ChiarkNNTP; our $verbose; ($verbose='STDERR', shift @ARGV) if $ARGV[0] eq "-v"; my $c = cnntp_connect($verbose); $c->banner_reader(); our $code; # some servers require a GROUP before an ARTICLE command $c->docmd("GROUP misc.misc"); if(@ARGV == 0) { while(<>) { s/(^\s+|\s+$)//gs; lookup($_); } } else { while (@ARGV) { my $item = shift @ARGV; if($item !~ /[\@:]/ and not defined $group) { # maybe a bare group followed by an article number die unless @ARGV; my $number = shift @ARGV; $item = "$item $number"; } lookup($item); } } $c->docmd("QUIT"); close S; sub lookup { my $mid = shift; if($mid !~ /\@/ and $mid =~ /^(.*)[: ](\d+)$/) { my ($g, $n) = ($1, $2); $c->docmd("GROUP $g"); $c->docmd("ARTICLE $n"); } else { $mid =~ s/.*\.*//; $c->docmd("ARTICLE <$mid>"); } my $fh= 'STDOUT'; if (-t $fh) { my $lesscmd= $ENV{'NNTPID_PAGER'}; $lesscmd= 'less' unless defined $lesscmd; open LESS, "|-", 'sh','-c',$lesscmd or die $!; $fh= 'LESS'; } while (1) { ($code,$_) = $c->getline(); s/[\r\n]//g; last if /^\.$/; s/^\.//; print $fh "$_\n"; } if ($fh ne 'STDOUT') { close $fh or die "$? $!"; } }