#!/bin/rc # # As Send, but on-line and from acme or o/live rfork ne if(~ $#file 0 && ~ $#winid 0 ){ echo must run under o/live or acme >[1=2] exit fail } d=`{pwd} if(~ $#file 0){ w = /mnt/acme/$winid file = `{cat $w/tag | sed 's/ .*//'} } fn deliver { sed '1,/^$/d' $1 > body.$1 sed '/^$/q' $1 > hdr.$1 addrs=`{grep -i '^To: ' hdr.$1 | sed 's/^[Tt][Oo]: //'} ccs=`{grep -i '^Cc: ' hdr.$1 | sed 's/^[Cc][Cc]: //'} atts=`{grep -i '^Attach: ' hdr.$1 | sed 's/^[Aa]ttach: //' } incl=`{grep -i '^Include: ' hdr.$1 | sed 's/^[Ii]nclude: //' } repl=`{grep -i '^Replying: ' hdr.$1 | sed 's/^[Rr]eplying: //' } xaddrs=$addrs xccs=$ccs if (! ~ $#ccs 0) ccs=-C^$ccs if (! ~ $#atts 0) atts=-a^$atts if (! ~ $#incl 0) incl=-A^$incl if (! ~ $#repl 0){ if(! test -f $repl && test -f /mail/box/$user/msgs/$repl) repl=/mail/box/$user/msgs/$repl if(! test -f $repl){ arepl=`{echo $repl | sed 's,(.*)/([0-9]+)/raw,\1/a.\2/raw,'} if(test -f $arepl) repl=$arepl if(test -f /mail/box/$user/msgs/$arepl) repl=/mail/box/$user/msgs/$arepl } if(! test -f $repl){ echo orginal message not found >[1=2] exit orig } upas/fs -p -f $repl repl=-R/mail/fs/mbox/1 } done=ok { for(t in $xaddrs) echo 'To: '^$"t for(t in $xccs) echo 'Cc: '^$"t } > addrs.$1 { cat addrs.$1 ; grep -vi '^(To|Cc|Attach|Include|Replying): ' hdr.$1 ; cat body.$1 } | { if(upas/marshal $repl $atts $incl $ccs $addrs >[2] errs.$1){ rm errs.$1 hdr.$1 body.$1 addrs.$1 $1 } if not { done=failed echo spool: upas/marshal $repl $atts $incl $ccs $addrs cat errs.$1 { cat errs.$1 ; q ': ' hdr.$1 body.$1 } | mail -s'returned mail' $user mv $1 Fail.$1 } } if (! ~ $#repl 0) unmount /mail/fs if(~ $done ok) status='' if not status='deliver failed' } cd /mail/box/$user/out || { echo no outgoing box >[1=2] ; exit nombox } if(! ~ $file /mail/box/$user/out/Out.*){ echo not an outgoing mail file to be posted exit nopostfile } if(! ~ $#winid 0) echo put >$w/ctl if(! test -e $file){ echo $file does not exist >[1=2] exit noexist } if(deliver `{basename $file}){ ~ $#winid 0 || echo del >$w/ctl } if not{ if(test -e /mail/box/$user/log) echo `{date} Post delivered $f >>/mail/box/$user/log } exit ''