#!/usr/bin/perl use strict; use Net::NNTP; my ($mid, $server, $pager, $metamail, $nntp, $article, $demime, $i); $mid = shift; if (! defined $mid) { $mid = <>; chomp $mid; } $server = $ENV{"NNTPSERVER"} or "localhost"; $pager = $ENV{"PAGER"} or "less"; print STDERR "looking up $mid on $server\n"; # open connection to server $nntp = Net::NNTP->new($server) or die "NNTP->new: $!"; # get article $article = $nntp->article($mid); if (!$article) { print STDERR "not found\n"; exit; } # start pager open PAGER, "| $pager" or die "can't start pager: $!"; # check for unreadable encoding $demime = 0; for ($i = 0; $$article[$i] !~ /^$/; $i++) { if ($$article[$i] =~ /^Content-Transfer-Encoding: (base64|quoted-printable)/i) { $demime = 1; } print PAGER "$$article[$i]"; } if ($demime) { open TMP, ">/tmp/getmsgn.$$" or die "can't write article to temp"; print TMP @$article; close TMP; open METAMAIL, "metamail -q /tmp/getmsgn.$$ |" or die "can't start metamail: $!"; while () { print PAGER; } close METAMAIL; unlink "/tmp/getmsgn.$$"; } else { for (; defined($$article[$i]); $i++) { print PAGER "$$article[$i]"; } } # close pipe to pager close PAGER; # close connection to server $nntp->quit; # end of file