123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- #!/bin/rc
- # fax [-v] telephone-number recipient [file ...] - send files via fax
- rfork e
- view=no
- stdin=no
- fn usage {
- echo 'usage: fax [-v] telephone-number recipient [file ...]' >[1=2]
- exit usage
- }
- switch($1){
- case -v
- view=yes
- shift
- }
- switch ($#*) {
- case 0 1
- usage
- case 2
- stdin=yes
- }
- telno=`{echo $1|sed 's/[ \-]//g'}
- shift
- if (! ~ $telno [0-9]* +[0-9]*)
- usage
- # our old phone system needed *9 to get outside; the new one just needs 9
- switch($telno){
- case ???????
- telno='9,'^$telno
- case ??????????
- telno='9,1'^$telno
- case 1??????????
- telno='9,'^$telno
- case 011*
- telno='9,'^$telno
- case +*
- telno=`{echo $telno | sed 's/\+/9,011/'}
- }
- recip=$1
- shift
- script=/tmp/fax.$pid
- header=/tmp/faxh.$pid
- user=`{cat /dev/user}
- tmp=/tmp/fax.g3.$pid
- tmpin=/tmp/fax.in.$pid
- tmpps=/tmp/fax.ps.$pid
- tel=`{grep '\) '$user /lib/tel}
- myname=`{echo $tel | sed 's/ \(.*//'}
- if (~ $#myname 0)
- myname=''
- ext=`{echo $tel | sed 's/.*\) [^ ]* [^ ]* ([^ ]*).*/\1/'}
- fn sigexit {
- rm -f $tmp.* $script $header $header.* $tmpin $tmpps
- }
- fn sigint {
- sigexit
- exit interrupt
- }
- # gather input into a file
- switch($stdin){
- case yes
- cat >$tmpin
- infiles=$tmpin
- case *
- infiles=($*)
- }
- # convert to g3
- g3files=()
- a=1
- for(i in $infiles){
- switch(`{file $i}){
- case *:*g3* *:*fax*
- g3files=($g3files $i)
- case *:*postscript
- gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.'$#a'.%03d' \
- -dNOPAUSE -dQUIET $i quit.ps
- g3files=($g3files $tmp.$#a.*)
- case *
- lp -dstdout $i >$tmpps
- gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.'$#a'.%03d' \
- -dNOPAUSE -dQUIET $tmpps quit.ps
- g3files=($g3files $tmp.$#a.*)
- }
- a=($a 1) # count by increasing list length
- }
- pages=`{echo $g3files|wc -w}
- # use delimiters that are unlikely to be supplied in arguments
- {
- echo -n s∮FAXddd∮
- echo -n `{date} # treat `{} output list specially
- echo ∮
- echo s∮FAXFFF∮$"myname^∮
- echo s∮FAXEEE∮$"user^∮
- echo s∮FAXVVV∮$"ext^∮
- echo s∮FAXTTT∮$"recip^∮
- echo s∮FAXfff∮$"telno^∮
- echo s∮FAXPPP∮$"pages^∮
- } >>$script
- sed -f $script /sys/lib/fax/h.ps >$header
- gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$header'.%03d' \
- -dNOPAUSE -dQUIET $header quit.ps
- files=()
- for(i in $header.* $g3files){
- files=($files -f $i)
- }
- switch($view){
- case yes
- page $header.* $g3files
- case *
- upas/qer $files /mail/faxoutqueue fax $user $telno </dev/null
- rx fax /sys/lib/fax/faxgoose </dev/null
- }
|