#!/bin/sh # Generated by nn release 6.4.18 VERSION="6.4.18" INEWS="/usr/bin/inews" INEWS_DIR="/usr/bin" AWK="awk" NNTP=true ACTIVE=/var/spool/nn/ACTIVE NNTPCACHE= LOG=/usr/lib/nn/Log TMP=${TMPDIR-/usr/tmp} DB=/var/spool/nn BIN=/usr/bin LIB=/usr/lib/nn AUTH=false # ---- end of prefix # PREFIX is inserted above this line during Make trap : 2 3 PATH=/bin:$PATH # Paramaters transferred from nn via .param file: # ART_ID Article id to cancel # GROUP Group of article to cancel # WORK Temporary file for response (w initial contents) # FIRST_ACTION First action to perform # EMPTY_CHECK [empty-response-check] # EDITOR [editor] # ED_LINE First line of body in WORK file # SPELL_CHECKER [spell-checker] # PAGER [pager] # APPEND_SIG [append-signature] # QUERY_SIG [query-signature] # NOVICE [expert] # WAIT_PERIOD [response-check-pause] # RECORD [mail/news-record] # MMDF_SEP [mmdf-format = ^A^A^A^A] # POST [inews] # POST_PIPE [inews-pipe-input] # POSTER_ADR Reply address for follow-ups # MAILER [mailer] # MAILER_PIPE [mailer-pipe-input] # DFLT_ANSW [response-default-answer] # ALIAS_EXPANDER [mail-alias-expander] CC="" if [ "$1" = "COMPLETE" ] ; then . ${HOME}/.nn/hold.param WORK="$2" EMPTY_CHECK=false cp ${HOME}/.nn/hold.work $WORK rm -f ${HOME}/.nn/hold.* else . ${HOME}/.nn/.param OPERATION=$1 fi # first we handle 'cancel' case "$OPERATION" in cancel) TRACE="$2" $INEWS -h << EOF > $TRACE 2>&1 Newsgroups: $GROUP Subject: cancel $ART_ID Control: cancel $ART_ID cancel $ART_ID in newsgroup $GROUP EOF x=$? case $x in 0) ;; *) echo '' ; cat $TRACE ; sleep 2 ;; esac rm -f $TRACE exit $x ;; post|follow) LOOKFOR="Newsgroups:" SEND="post article" ;; *) LOOKFOR="To:" SEND="send letter" ;; esac TRACE=${WORK}T FINAL=${WORK}F COPY="" if [ "${FIRST_ACTION}" != "send" ] ; then COPY=${WORK}C cp $WORK $COPY fi # loop until sent or aborted. loop=true prompt=false pr="a)bort" if [ -n "${POSTER_ADR}" ] ; then pr="$pr c)c" fi pr="$pr e)dit" pr="$pr h)old" if [ -n "${SPELL_CHECKER}" ] ; then pr="$pr i)spell" fi pr="$pr m)ail r)eedit s)end v)iew w)rite" case "${DFLT_ANSW}" in p*|s*) pr1=" (${SEND})" ;; "") pr1="" ;; *) pr1=" (${DFLT_ANSW})" ;; esac while $loop ; do if [ -n "${FIRST_ACTION}" ] ; then act="${FIRST_ACTION}" FIRST_ACTION="" elif $prompt ; then echo '' echo "${pr}" ${AWK} 'END{printf "Action:'"${pr1}"' "}' < /dev/null read act if [ -z "$act" ] ; then act="${DFLT_ANSW}" fi fi prompt=true case "$act" in a*) ${AWK} 'END{printf "Confirm abort: (y) "}' < /dev/null read act case "$act" in ""|y*) rm -f $WORK $COPY ; exit 22 ;; esac ;; c*) if [ -n "${POSTER_ADR}" ] ; then ${AWK} 'END{printf "CC: '"${POSTER_ADR}"' (y) "}' /dev/null ; then : else echo "Warning: no $LOOKFOR line in article" fi fi ;; h*) ${AWK} 'END{printf "Complete response later: (y) "}' < /dev/null read act case "$act" in ""|y*) cp $WORK ${HOME}/.nn/hold.work cp ${HOME}/.nn/.param ${HOME}/.nn/hold.param echo "OPERATION=$OPERATION" >> ${HOME}/.nn/hold.param if [ -n "$COPY" ] ; then rm -f $COPY fi rm -f $WORK exit 22 ;; esac ;; i*) if [ -n "${SPELL_CHECKER}" ] ; then ${SPELL_CHECKER} ${WORK} else echo "spell-checker not defined" fi ;; m*) ${AWK} 'END{printf "To: "}' > $FNAME fi ;; y*) act="${DFLT_ANSW}" prompt=false ;; ENV) set ;; esac if [ -n "${CC}" ] ; then echo "To: ${CC}" > $FINAL sed -e "s/^To:/X-To:/" -e "/^Orig-To:/d" $WORK >> $FINAL if ${MAILER_PIPE} ; then $MAILER < $FINAL x=$? else $MAILER $FINAL x=$? fi case $x in 0) echo Done ;; *) echo $MAILER failed ;; esac CC="" fi done if [ ${APPEND_SIG} = "true" -a -f $HOME/.signature ] ; then if ${QUERY_SIG} ; then ${AWK} 'END{printf "Append .signature? (y) "}' < /dev/null read ans else ans=y fi case $ans in ''|y*|Y*) echo "-- " >> $WORK cat $HOME/.signature >> $WORK ;; esac fi case "$OPERATION" in follow|post) if ${NOVICE} ; then echo "Be patient! Your new article will not show up immediately." case ${WAIT_PERIOD-0} in 0|1) WAIT_PERIOD=2 ;; esac fi ;; esac { trap 'echo SIGNAL' 1 2 3 grep -v "^Orig-To: " $WORK > $FINAL LOGNAME="${LOGNAME-$USER}" if [ -z "${LOGNAME}" ] ; then set `who am i` LOGNAME="$1" fi if [ -n "${RECORD}" ] ; then { # keep a copy of message in $RECORD (in mail format) set `date` if [ -n "$MMDF_SEP" ] ; then echo "$MMDF_SEP" fi if [ $3 -gt 9 ] ; then echo From ${LOGNAME} $1 $2 $3 $4 $6 $7 else echo From ${LOGNAME} $1 $2 " $3" $4 $6 $7 fi echo "From: ${LOGNAME}" cat $FINAL echo "$MMDF_SEP" } >> "$RECORD" fi case "$OPERATION" in reply|forward|mail) if [ -n "${ALIAS_EXPANDER}" ] ; then ${ALIAS_EXPANDER} $FINAL fi if ${MAILER_PIPE} ; then $MAILER < $FINAL x=$? else $MAILER $FINAL x=$? fi case $x in 0) ;; *) echo $MAILER failed ;; esac ;; follow|post) { if ${POST_PIPE} ; then $POST < $FINAL 2>&1 x=$? else $POST $FINAL 2>&1 x=$? fi case $x in 0) sleep 60 ;; *) echo $INEWS failed ;; esac } | sed \ -e "/spooled for later processing/d" \ -e "/problem has been taken care of/d" \ -e "/mailing your article to/d" \ -e "/being mailed to/d" \ -e "/is moderated/d" ;; *) echo "Invalid operation: $OPERATION -- help" OPERATION="nn response operation" ;; esac > $TRACE 2>&1 if [ -s $TRACE ] ; then if [ -s $HOME/dead.letter ] ; then cat $HOME/dead.letter >> $HOME/dead.letters echo '' >> $HOME/dead.letters fi cat $WORK > $HOME/dead.letter # Gripe: Error-report is lost if REC_MAIL was the problem { echo "To: ${LOGNAME}" echo "Subject: $OPERATION failed" echo '' cat $TRACE echo '' echo 'Your response has been saved in ~/dead.letter' echo '' echo 'Your article/letter follows:' cat $WORK } > $FINAL if ${MAILER_PIPE} ; then $MAILER < $FINAL else $MAILER $FINAL fi else # keep TRACE file a little while for test at end of script sleep 3 fi rm -f $WORK $COPY $TRACE $FINAL } > /dev/null 2>&1 & case ${WAIT_PERIOD-0} in 0) ;; *) sleep ${WAIT_PERIOD} ;; esac if [ -s "$TRACE" ] ; then exit 1 fi exit 0