home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / unix / volume23 / trn / part12 / Rnmail.SH < prev    next >
Text File  |  1991-08-22  |  7KB  |  358 lines

  1. case $CONFIG in
  2.     '') . ./config.sh ;;
  3. esac
  4. echo "Extracting Rnmail (with variable substitutions)"
  5. $spitshell >Rnmail <<!GROK!THIS!
  6. $startsh
  7. # $Header: Rnmail.SH,v 4.3.3.3 91/01/16 03:28:46 davison Trn $
  8. # $Log:    Rnmail.SH,v $
  9. # Revision 4.3.3.3  91/01/16  03:28:46  davison
  10. # Integrated rn patches 48-54.
  11. # Revision 4.3.3.2  90/08/20  16:22:29  davison
  12. # Use mbox.saver for MAILRECORD.  Fixed sitename handling.
  13. # Revision 4.3.3.1  90/07/24  22:02:49  davison
  14. # Initial Trn Release
  15. # Revision 4.3.2.3  90/12/30  03:48:04  sob
  16. # Changed "hidden" to "hiddennet" to be like nntp and bnews.
  17. # Made it possible to cancel articles if hiddennet is defined.
  18. # Revision 4.3.2.2  90/11/22  14:00:21  sob
  19. # Support added for hiding all hosts within a domain such that mail appears
  20. # to come for user@domainname only.
  21. # Revision 4.3.2.1  89/11/06  00:30:54  sob
  22. # Added RRN support from NNTP 1.5
  23. # Revision 4.3.1.4  85/08/01  14:23:05  lwall
  24. # Added MAILRECORD.  Temp file is no longer in /tmp.  'e editor' added.
  25. # Revision 4.3.1.3  85/05/20  16:25:17  lwall
  26. # Shouldn't ask editor if EDITOR or VISUAL defined.
  27. # Revision 4.3.1.2  85/05/17  10:36:19  lwall
  28. # Added "-- " before .signature.
  29. # Revision 4.3.1.1  85/05/10  11:30:38  lwall
  30. # Branch for patches.
  31. # Revision 4.3  85/05/01  11:34:18  lwall
  32. # Baseline for release with 4.3bsd.
  33. #
  34. # syntax: Rnmail -h headerfile [oldart]        or
  35. #         Rnmail destination-list         or just
  36. #         Rnmail
  37.  
  38. export PATH || (echo "OOPS, this isn't sh.  Desperation time.  I will feed myself to sh."; sh \$0; kill \$\$)
  39.  
  40. # System dependencies
  41.  
  42. mailer="${mailer-/bin/mail}"
  43. # if you change this to something that does signatures, take out signature code
  44.  
  45. # your site name
  46. case $portable in
  47. define)
  48.     case "$hostcmd" in
  49.     '') sitename="$sitename" ;;
  50.     *)  sitename=\`$hostcmd\` ;;
  51.     esac
  52.     case \$sitename in
  53.         *.*)
  54.             ;;
  55.         *)
  56.             sitename=\${sitename}.$domain
  57.             ;;
  58.     esac
  59.     ;;
  60. undef) sitename="$sitename" ;;
  61. esac
  62.  
  63. case $hiddennet in
  64. define)    sitename="$domain"
  65.     ;;
  66. *)
  67.     ;;
  68. esac
  69.  
  70. # your organization name
  71. orgname="$orgname"
  72. # what pager you use--if you have kernal paging use cat
  73. pager="\${PAGER-$pager}"
  74. # how you derive full names, bsd, usg, or other
  75. nametype="$nametype"
  76. # default editor
  77. defeditor="$defeditor"
  78. # where the non-publics are
  79. rnlib=$rnlib
  80. # how not to do a newline with echo
  81. n="$n"
  82. c="$c"
  83.  
  84. test=${test-test}
  85. sed=${sed-sed}
  86. echo=${echo-echo}
  87. cat=${cat-cat}
  88. grep=${grep-grep}
  89. rm=${rm-rm}
  90.  
  91. !GROK!THIS!
  92. $spitshell >>Rnmail <<'!NO!SUBS!'
  93. dotdir=${DOTDIR-${HOME-$LOGDIR}}
  94. tmpart=$dotdir/.letter
  95.  
  96. headerfile=""
  97. case $# in
  98. 0) ;;
  99. *)  case $1 in
  100.     -h)
  101.     headerfile="$2"
  102.     case $# in
  103.     3) oldart=$3 ;;
  104.     esac
  105.     ;;
  106.     esac
  107.     ;;
  108. esac
  109.  
  110. case $headerfile in
  111. '')
  112.     case $# in
  113.     0)
  114.     to=h
  115.     while $test "$to" = h ; do
  116.         $echo ""
  117.         $echo $n "To: $c"
  118.         read to
  119.         case $to in
  120.         h)
  121.         $cat <<'EOH'
  122.  
  123. Type the net address of those people that you wish the message sent to.
  124. Additional recipients may be added on the Cc: line when you edit.
  125.  
  126. Separate multiple addresses with spaces.
  127.  
  128. EOH
  129.         ;;
  130.         esac
  131.     done
  132.     ;;
  133.     *)
  134.     to="$*"
  135.     ;;
  136.     esac
  137.     to=`$echo "$to" | $sed 's/  */ /g'`
  138.  
  139.     title=h
  140.     while $test "$title" = h ; do
  141.     $echo ""
  142.     $echo $n "Title/Subject: $c"
  143.     read title
  144.     case $title in
  145.     h)
  146.         $cat <<'EOH'
  147.  
  148. Type the title for your message.  
  149. EOH
  150.         ;;
  151.     esac
  152.     done
  153.  
  154. # now build a file with a header for them to edit
  155.     
  156.     orgname=${ORGANIZATION-$orgname}
  157.     case $orgname in
  158.     /*) orgname=`$cat $orgname` ;;
  159.     esac
  160.  
  161.     $sed -e '/^Reply-To: $/d' > $tmpart <<EOHeader
  162. To: $to
  163. Subject: $title
  164. Organization: $orgname
  165. Reply-To: $REPLYTO
  166. Cc:
  167. Bcc:
  168.  
  169. EOHeader
  170.  
  171.     ;;
  172. *)
  173.     $cat < $headerfile  > $tmpart
  174.     ;;
  175. esac
  176.  
  177.  
  178. file=h
  179. while $test "$file" = h ; do
  180.     $echo ""
  181.     $echo $n "Prepared file to include [none]: $c"
  182.     read file
  183.     case $file in
  184.     h)
  185.     $cat <<'EOH'
  186.  
  187. If you have already produced the body of your message, type the filename
  188. for it here.  If you just want to proceed directly to the editor, type a
  189. RETURN.  In any event, you will be allowed to edit as many times as you
  190. want before you send off the message.
  191. EOH
  192.     ;;
  193.     '')
  194.     $echo "" >> $tmpart
  195.     state=edit
  196.     ;;
  197.     *)
  198.     $cat $file >>$tmpart
  199.     state=ask
  200.     ;;
  201.     esac
  202. done
  203.  
  204. $echo ""
  205.  
  206. while true ; do
  207.     case $state in
  208.     edit)
  209.     rescue="sleep 1; $cat $tmpart >>${HOME-$LOGDIR}/dead.letter ; $echo Message appended to ${HOME-$LOGDIR}/dead.letter ; exit"
  210.     trap "$rescue" 1
  211.     trap : 2
  212.     case "${VISUAL-${EDITOR-}}" in
  213.     '')
  214.         tmp=h
  215.         ;;
  216.     *)
  217.         tmp=''
  218.         ;;
  219.     esac
  220.     while $test "$tmp" = h ; do
  221.         $echo $n "Editor [${VISUAL-${EDITOR-$defeditor}}]: $c"
  222.         read tmp
  223.         case $tmp in
  224.         h)
  225.         $cat <<'EOH'
  226.  
  227. Type a return to get the default editor, or type the name of the editor you
  228. prefer.  The default editor depends on the VISUAL and EDITOR environment
  229. variables.
  230.  
  231. EOH
  232.         ;;
  233.         '')
  234.         ;;
  235.         *)
  236.         VISUAL=$tmp
  237.         export VISUAL
  238.         ;;
  239.         esac
  240.     done
  241.     ${VISUAL-${EDITOR-$defeditor}} $tmpart $oldart
  242.     trap "$rescue" 2
  243.     state=ask
  244.     ;;
  245.     
  246.     ask)
  247.     $echo ""
  248.     $echo $n "Send, abort, edit, or list? $c"
  249.     read ans
  250.     
  251.     case $ans in
  252.     a*)
  253.         state=rescue
  254.         ;;
  255.     e*)
  256.         set $ans
  257.         case $# in
  258.         2)  VISUAL="$2" ;;
  259.         esac
  260.         state=edit
  261.         ;;
  262.     l*)
  263.         $pager $tmpart
  264.         state=ask
  265.         ;;
  266.     s*)
  267.         state=send
  268.         ;;
  269.     h*)
  270.         $cat <<'EOH'
  271.  
  272. Type s to send the message, a to abort and append the message to dead.letter,
  273. e to edit the message again, or l to list the message.
  274.  
  275. To invoke an alternate editor, type 'e editor'.
  276. EOH
  277.     esac
  278.     ;;
  279.     
  280.     send)
  281.     if $test -f $dotdir/.signature; then
  282.         $echo $n "Append .signature file? [y] $c"
  283.         read ans
  284.         case $ans in
  285.         ''|y*)
  286.         $echo "-- " >> $tmpart
  287.         cat $dotdir/.signature >> $tmpart
  288.         ;;
  289.         esac
  290.     fi
  291.     case $mailer in
  292.     *sendmail)
  293.         $mailer -t <$tmpart
  294.         ;;
  295. # but recmail does not know about Bcc, alas
  296.     *recmail)
  297.         $mailer <$tmpart
  298.         ;;
  299.     *)
  300.         set X `$sed <$tmpart -n -e '/^To:/{' -e 's/To: *//p' -e q -e '}'`
  301.         shift
  302.         set X "$@" `$sed <$tmpart -n -e '/^Cc:/{' -e 's/Cc: *//p' -e q -e '}'`
  303.         shift
  304.         set X "$@" `$sed <$tmpart -n -e '/^Bcc:/{' -e 's/Bcc: *//p' -e q -e '}'`
  305.         shift
  306.         $grep -v "^Bcc:"  <$tmpart | $mailer "$@"
  307.         ;;
  308.     esac
  309.     case $? in
  310.     0)
  311.         state=cleanup
  312.         ;;
  313.     *)
  314.         state=rescue
  315.         ;;
  316.     esac
  317.     ;;
  318.     rescue)
  319.     $cat $tmpart >> ${HOME-$LOGDIR}/dead.letter
  320.     $echo "Message appended to ${HOME-$LOGDIR}/dead.letter"
  321.     $echo "A copy may be temporarily found in $tmpart"
  322.     exit
  323.     ;;
  324.     cleanup)
  325.     case "${MAILRECORD-none}" in
  326.     none)
  327.         ;;
  328.     *)
  329.         set X ${USER-${LOGNAME-`who am i`}} unknown
  330.         shift
  331.         $rnlib/mbox.saver $tmpart "." "." 0 0 Pnews $MAILRECORD "From $1 `date`"
  332.         if $test $? -eq 0 ; then
  333.         $echo "Message appended to $MAILRECORD"
  334.         else
  335.         $echo "Cannot append to $MAILRECORD"
  336.         fi
  337.         ;;
  338.     esac
  339.     exit
  340.     ;;
  341.     esac
  342. done
  343. !NO!SUBS!
  344. $eunicefix Rnmail
  345. chmod 755 Rnmail
  346.