#!/bin/sh # # View selected news articles # .. ${NEWSCONFIG-/usr/local/etc/news/bin/config} trap 'rm -f $tmpfile; exit' 0 1 2 3 13 15 invalid() { echo "Invalid response"; sleep 1 } noexist() { echo "Article doesn't exist"; sleep 1 } tmpfile=$(mktemp ~/.vn.XXXXXX) || exit 1 sort ${NEWSCTL}/active | nawk ' /^(control|junk) / { next } { if ($2 >= $3) printf "%3d %s\n", ++n, $1 }' >$tmpfile n=0 while read line; do eval "group$n=\${line##* }" n=$(($n + 1)) done <$tmpfile while :; do if [ -z "$group" -o -z "$r" ]; then ${PAGER:-more} $tmpfile printf "Group: " read r || exit [ -z "$r" ] && exit case "$r" in [!0-9]*) invalid; continue;; esac [ $r -lt 1 -o $r -gt $n ] && { invalid; continue; } eval "group=\$group$(($r - 1))" dir="$(echo "$group" | tr . /)" fi readnews -i -l -n $group | ${PAGER:-more} printf "Article: " read r || exit [ -z "$r" ] && continue case "$r" in [!0-9]*) invalid; continue;; esac file=${NEWSARTS}/$dir/$r [ -f $file ] || { noexist; continue; } nawk -v n=$r 'BEGIN { print "Article " n; header = 1 } /^(From|Subject|Date):/ { tmp = ("unmime \"" $0 "\""); tmp | getline; print; close(tmp); next } /^$/ { header = 0; print; next } { if (! header) print }' $file | ${PAGER:-more} done .