home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume22 / nn6.4 / part10 / aux.sh next >
Encoding:
Text File  |  1990-06-07  |  5.4 KB  |  298 lines

  1.  
  2. # PREFIX is inserted above this line during Make
  3.  
  4. trap : 2 3
  5.  
  6. PATH=/bin:$PATH
  7. export PATH
  8.  
  9. # Paramaters transferred from nn via .param file:
  10. #    ART_ID        Article id to cancel
  11. #    GROUP        Group of article to cancel
  12. #    WORK        Temporary file for response (w initial contents)
  13. #    FIRST_ACTION    First action to perform
  14. #    EMPTY_CHECK    [empty-response-check]
  15. #    EDITOR        [editor]
  16. #    ED_LINE        First line of body in WORK file
  17. #    SPELL_CHECKER    [spell-checker]
  18. #    PAGER        [pager]
  19. #    APPEND_SIG    [append-signature]
  20. #    QUERY_SIG    [query-signature]
  21. #    NOVICE        [expert]
  22. #    WAIT_PERIOD     [response-check-pause]
  23. #    RECORD        [mail/news-record]
  24. #    MAILER        [mailer]
  25. #    MAILER_PIPE    [mailer-pipe-input]
  26. #    DFLT_ANSW    [response-default-answer]
  27.  
  28. . ${HOME}/.nn/.param
  29.  
  30. # first argument is operation to be performed:
  31.  
  32. OPERATION=$1
  33.  
  34. # first we handle 'cancel'
  35.  
  36. if [ "$OPERATION" = "cancel" ] ; then
  37.  
  38.   $INEWS -h  << EOF > /tmp/nn$$c 2>&1
  39. Newsgroups: $GROUP
  40. Subject: cancel $ART_ID
  41. Control: cancel $ART_ID
  42.  
  43. cancel $ART_ID in newsgroup $GROUP
  44. EOF
  45.  
  46.   x=$?
  47.   case $x in
  48.     0) ;;
  49.     *) echo '' ; cat /tmp/nn$$c ; sleep 2 ;;
  50.   esac
  51.   rm -f /tmp/nn$$c
  52.   exit $x
  53. fi
  54.  
  55.  
  56. TRACE=${WORK}T
  57. FINAL=${WORK}F
  58. COPY=""
  59.  
  60. if [ "${FIRST_ACTION}" != "send" ] ; then
  61.   COPY=${WORK}C
  62.   cp $WORK $COPY
  63. fi
  64.  
  65. # loop until sent or aborted.
  66.  
  67. loop=true
  68. prompt=false
  69. pr="Action: a)bort e)dit"
  70. if [ -n "$(SPELL_CHECKER)" ] ; then
  71.   pr="$pr i)spell"
  72. fi
  73. pr="$pr r)eedit s)end v)iew w)rite: "
  74. if [ -n "${DFLT_ANSW}" ] ; then
  75.   pr="$pr (${DFLT_ANSW}) "
  76. fi
  77.  
  78. while $loop ; do
  79.   if [ -n "${FIRST_ACTION}" ] ; then
  80.     act="${FIRST_ACTION}"
  81.     FIRST_ACTION=""
  82.   elif $prompt ; then
  83.     echo ''
  84.     ${AWK} 'END{printf "'"${pr}"'"}' < /dev/null
  85.     read act
  86.     if [ -z "$act" ] ; then
  87.       act="${DFLT_ANSW}"
  88.     fi
  89.   fi
  90.   prompt=true
  91.  
  92.   case $act in
  93.   a*)
  94.     ${AWK} 'END{printf "Confirm abort: (y) "}' < /dev/null
  95.     read act
  96.     case "$act" in
  97.     ""|"y*") rm -f $WORK $COPY ;
  98.          exit 22 ;;
  99.     esac
  100.     ;;
  101.   e*)
  102.     # call editor to enter at line $ED_LINE of work file
  103.  
  104.     case `basename "${EDITOR-vi}"` in
  105.     vi|emacs|emacsclient )
  106.       # Berkeley vi display editor
  107.       # GNU emacs disply editor
  108.       ${EDITOR-vi} +${ED_LINE} $WORK
  109.       ;;
  110.     ded )
  111.       # QMC ded display editor
  112.       $EDITOR -l${ED_LINE} $WORK
  113.       ;;
  114.     uemacs )
  115.       # micro emacs
  116.       $EDITOR -g${ED_LINE} $WORK
  117.       ;;
  118.     * )
  119.       # Unknown editor
  120.       $EDITOR $WORK
  121.       ;;
  122.     esac
  123.  
  124.     if [ ! -s $WORK ] ; then
  125.       rm -f $WORK $COPY
  126.       exit 22
  127.     fi
  128.  
  129.     if ${EMPTY_CHECK} ; then
  130.       if cmp -s $WORK $COPY ; then
  131.         rm -f $WORK $COPY
  132.         exit 22
  133.       fi
  134.     fi
  135.     ;;
  136.  
  137.   i*)
  138.     if [ -n "${SPELL_CHECKER}" ] ; then
  139.       ${SPELL_CHECKER} ${WORK}
  140.     else
  141.       echo "spell-checker not defined"
  142.     fi
  143.     ;;
  144.  
  145.   r*)
  146.     ${AWK} 'END{printf "Edit original file: (y) "}' < /dev/null
  147.     read act
  148.     case "$act" in
  149.     ""|"y*") cp $COPY $WORK ;;
  150.     esac
  151.     FIRST_ACTION=edit
  152.     ;;
  153.  
  154.   s*)
  155.     loop=false
  156.     ;;
  157.  
  158.   v*)
  159.     ${PAGER-cat} $WORK
  160.     ;;
  161.  
  162.   w*)
  163.     echo "Append article to file:"
  164.     read FNAME
  165.     if [ -n "$FNAME" ] ; then
  166.       { cat $WORK ; echo ; } >> $FNAME
  167.     fi
  168.     ;;
  169.   esac
  170. done
  171.  
  172. case "$OPERATION" in
  173.  
  174.   reply|forward|mail)
  175.     if [ ${APPEND_SIG} = "true" -a -f $HOME/.signature ] ; then
  176.       if ${QUERY_SIG} ; then
  177.           ${AWK} 'END{printf "Append .signature? (y) "}' < /dev/null
  178.           read ans
  179.       else
  180.           ans=y
  181.       fi
  182.       case $ans in
  183.       ''|y*|Y*)
  184.         echo "--" >> $WORK
  185.         cat $HOME/.signature >> $WORK
  186.         ;;
  187.       esac
  188.     fi
  189.     ;;
  190.   follow|post)
  191.     if ${NOVICE} ; then
  192.       echo "Be patient! Your new article will not show up immediately."
  193.       case ${WAIT_PERIOD-0} in
  194.     0|1) WAIT_PERIOD=2 ;;
  195.       esac
  196.     fi
  197.     ;;
  198. esac
  199.  
  200. {
  201.   trap 'echo SIGNAL' 1 2 3
  202.  
  203.   grep -v "^Orig-To: " $WORK > $FINAL
  204.  
  205.   LOGNAME="${LOGNAME-$USER}"
  206.   if [ -z "${LOGNAME}" ] ; then
  207.     set `who am i`
  208.     LOGNAME="$1"
  209.   fi
  210.  
  211.   if [ -n "${RECORD}" ] ; then
  212.   {
  213.     # keep a copy of message in $RECORD (in mail format)
  214.     set `date`
  215.     if [ $3 -gt 9 ] ; then
  216.       echo From ${LOGNAME} $1 $2 $3 $4 $6 $7
  217.     else
  218.       echo From ${LOGNAME} $1 $2 " $3" $4 $6 $7
  219.     fi
  220.     echo "From: ${LOGNAME}"
  221.     cat $FINAL
  222.     echo ''
  223.   } >> "$RECORD"
  224.   fi
  225.  
  226.   case "$OPERATION" in
  227.  
  228.     reply|forward|mail)
  229.       if ${MAILER_PIPE} ; then
  230.         $MAILER < $FINAL
  231.         x=$?
  232.       else
  233.         $MAILER $FINAL
  234.         x=$?
  235.       fi
  236.       case $x in
  237.     0) ;;
  238.     *) echo $MAILER failed ;;
  239.       esac
  240.       ;;
  241.  
  242.     follow|post)
  243.       $INEWS -h < $FINAL
  244.       case $? in
  245.     0) sleep 60 ;;
  246.     *) echo $INEWS failed ;;
  247.       esac
  248.       ;;
  249.  
  250.     *)
  251.       echo "Invalid operation: $OPERATION -- help"
  252.       OPERATION="nn response operation"
  253.       ;;
  254.   esac > $TRACE 2>&1
  255.  
  256.   if [ -s $TRACE ] ; then
  257.     if [ -s $HOME/dead.letter ] ; then
  258.       cat $HOME/dead.letter >> $HOME/dead.letters
  259.       echo '' >> $HOME/dead.letters
  260.     fi
  261.     cat $WORK > $HOME/dead.letter
  262.  
  263.     # Gripe: Error-report is lost if REC_MAIL was the problem
  264.     {
  265.       echo "To: ${LOGNAME}"
  266.       echo "Subject: $OPERATION failed"
  267.       echo ''
  268.       cat $TRACE
  269.       echo ''
  270.       echo 'Your response has been saved in ~/dead.letter'
  271.       echo ''
  272.       echo 'Your article/letter follows:'
  273.       cat $WORK
  274.     } > $FINAL
  275.     if ${MAILER_PIPE} ; then
  276.       $MAILER < $FINAL
  277.     else
  278.       $MAILER $FINAL
  279.     fi
  280.   else
  281.     # keep TRACE file a little while for test at end of script
  282.     sleep 3
  283.   fi
  284.   rm -f $WORK $COPY $TRACE $FINAL
  285.  
  286. } > /dev/null 2>&1 &
  287.  
  288. case ${WAIT_PERIOD-0} in
  289.   0) ;;
  290.   *) sleep ${WAIT_PERIOD} ;;
  291. esac
  292.  
  293. if [ -s "$TRACE" ] ; then
  294.   exit 1
  295. fi
  296.  
  297. exit 0
  298.