tchrist@convexe.uucp (Tom Christiansen) (11/08/89)
Have you ever seen a reference to a news article by message id that didn't have a (newsgroup,article) pair associated with it? Here's a C program that binds an associative array to the DBM version of the news history database to retrieve the right text line. It should be easy to use this or a derivative in an rn macro. Requires perl v3.0 to run. --tom #!/usr/local/bin/perl # # xpost # written by Tom Christiansen <tchrist@convex.com> # # script that takes message ids as args (like 1842@somehost.uucp) # and retrieves the line from the text file. this is # much faster than a grep. $HIST = '/usr/local/lib/news/history'; dbmopen(HIST,$HIST,0666) || die "$0: couldn't dbmopen $HIST: $!\n"; open HIST || die "$0: couldn't open $HIST: $!\n"; foreach $key ( @ARGV ) { $key =~ tr/A-Z/a-z/; $key = "<$key>" if $key !~ /^<.*>$/; $key .= "\000"; if (!defined $HIST{$key}) { print stderr "no article $key\n"; next; } ($pos) = unpack('L',$HIST{$key}); seek(HIST,$pos,0); $line = <HIST>; print $line; } Tom Christiansen {uunet,uiucdcs,sun}!convex!tchrist Convex Computer Corporation tchrist@convex.COM "EMACS belongs in <sys/errno.h>: Editor too big!"