*Improved* newsgroup peruser (!)
Oscar M. Nierstrasz
oscar at utcsrgv.UUCP
Sun May 13 04:18:15 AEST 1984
Okay, this really *does* have some advantages over `readnews -l',
namely in listing the number of lines & the author of each article.
Also, this runs faster than before (but not as fast as it could
if awk had a `skip to next file' command!). Changes were made by
an anonymous hacker.
------------------------------ cut here --------------------------------
#! /bin/sh
# png [-ar] newsgroups ...
# Peruse news group.
# List subject headings of articles in listed newsgroups
# starting at last-read article in $NEWSRC.
# With the -a flag all articles are listed.
# With the -r flag all articles are listed in reverse order.
# Author : Oscar Nierstrasz @ utcsrgv!oscar
# Modified by anonymous sprites ...
if test ! -r ${NEWSRC=$HOME/.newsrc}
then
echo "$0: Can't find $NEWSRC" 1>&2
exit
fi
n=/usr/spool/news
s='/^/ { if (FILENAME == fn) next }
/^From:/ { i=index ($0,"(")
if (i) fr=substr ($0,i)
else fr="(" $2 ")" }
/^Subject:/ { su=substr($0,index($0," ")+1) }
/^Lines:/ { li=$2 }
/^$/ { fn=FILENAME
printf "%4d: %-50s", fn, substr(su,1,50)
printf " %3d %s\n", li, substr(fr,1,20) }'
for i
do
case "$i" in
-a ) all=y ;;
-r ) all=y
rev=r ;;
* )
d=`echo $i | sed "s/\./\//g"`
if test ! -d $n/$d
then
echo "$i: no such newsgroup" 1>&2
else
cd $n/$d
echo
echo "-------- $i --------"
echo
case "$all" in
y ) f=all ;;
* ) f=`sed -n "/^$i[:!]/s/.*-//p" $NEWSRC`
case "$f" in
"" ) f=all ;;
* ) if test ! -r $f
then
f=all
fi ;;
esac ;;
esac
case "$f" in
all ) awk "$s" `ls [0-9]* | sort -n$rev`;;
* ) awk "$s" `ls [0-9]* |
awk "\\\$0+0 > $f" | sort -n$rev`;;
esac
fi
esac
done
More information about the Comp.sources.unix
mailing list