1219b2ee8SDavid du Colombier#!/bin/rc 2*651ff87aSDavid du Colombier# fax [-v] telephone-number recipient [file ...] - send files via fax 3*651ff87aSDavid du Colombierrfork e 4219b2ee8SDavid du Colombierview=no 5219b2ee8SDavid du Colombierstdin=no 6219b2ee8SDavid du Colombier 7*651ff87aSDavid du Colombierfn usage { 8*651ff87aSDavid du Colombier echo 'usage: fax [-v] telephone-number recipient [file ...]' >[1=2] 9*651ff87aSDavid du Colombier exit usage 10*651ff87aSDavid du Colombier} 11*651ff87aSDavid du Colombier 12219b2ee8SDavid du Colombierswitch($1){ 13219b2ee8SDavid du Colombiercase -v 14219b2ee8SDavid du Colombier view=yes 15219b2ee8SDavid du Colombier shift 16219b2ee8SDavid du Colombier} 17219b2ee8SDavid du Colombier 18219b2ee8SDavid du Colombierswitch ($#*) { 19219b2ee8SDavid du Colombiercase 0 1 20*651ff87aSDavid du Colombier usage 21219b2ee8SDavid du Colombiercase 2 22219b2ee8SDavid du Colombier stdin=yes 23219b2ee8SDavid du Colombier} 249a747e4fSDavid du Colombiertelno=`{echo $1|sed 's/[ \-]//g'} 25219b2ee8SDavid du Colombiershift 26219b2ee8SDavid du Colombier 27*651ff87aSDavid du Colombierif (! ~ $telno [0-9]* +[0-9]*) 28*651ff87aSDavid du Colombier usage 297dd7cddfSDavid du Colombier 30*651ff87aSDavid du Colombier# our old phone system needed *9 to get outside; the new one just needs 9 317dd7cddfSDavid du Colombierswitch($telno){ 327dd7cddfSDavid du Colombiercase ??????? 33*651ff87aSDavid du Colombier telno='9,'^$telno 347dd7cddfSDavid du Colombiercase ?????????? 35*651ff87aSDavid du Colombier telno='9,1'^$telno 367dd7cddfSDavid du Colombiercase 1?????????? 37*651ff87aSDavid du Colombier telno='9,'^$telno 387dd7cddfSDavid du Colombiercase 011* 39*651ff87aSDavid du Colombier telno='9,'^$telno 407dd7cddfSDavid du Colombiercase +* 41*651ff87aSDavid du Colombier telno=`{echo $telno | sed 's/\+/9,011/'} 427dd7cddfSDavid du Colombier} 437dd7cddfSDavid du Colombier 44219b2ee8SDavid du Colombierrecip=$1 45219b2ee8SDavid du Colombiershift 46219b2ee8SDavid du Colombier 47219b2ee8SDavid du Colombierscript=/tmp/fax.$pid 48219b2ee8SDavid du Colombierheader=/tmp/faxh.$pid 49219b2ee8SDavid du Colombieruser=`{cat /dev/user} 50219b2ee8SDavid du Colombiertmp=/tmp/fax.g3.$pid 51219b2ee8SDavid du Colombiertmpin=/tmp/fax.in.$pid 52219b2ee8SDavid du Colombiertmpps=/tmp/fax.ps.$pid 53219b2ee8SDavid du Colombiertel=`{grep '\) '$user /lib/tel} 54219b2ee8SDavid du Colombiermyname=`{echo $tel | sed 's/ \(.*//'} 55*651ff87aSDavid du Colombierif (~ $#myname 0) 56*651ff87aSDavid du Colombier myname='' 57219b2ee8SDavid du Colombierext=`{echo $tel | sed 's/.*\) [^ ]* [^ ]* ([^ ]*).*/\1/'} 58219b2ee8SDavid du Colombier 59*651ff87aSDavid du Colombierfn sigexit { 607dd7cddfSDavid du Colombier rm -f $tmp.* $script $header $header.* $tmpin $tmpps 61*651ff87aSDavid du Colombier} 62*651ff87aSDavid du Colombierfn sigint { 63*651ff87aSDavid du Colombier sigexit 64219b2ee8SDavid du Colombier exit interrupt 65219b2ee8SDavid du Colombier} 66219b2ee8SDavid du Colombier 67219b2ee8SDavid du Colombier# gather input into a file 68219b2ee8SDavid du Colombierswitch($stdin){ 69219b2ee8SDavid du Colombiercase yes 70219b2ee8SDavid du Colombier cat >$tmpin 71219b2ee8SDavid du Colombier infiles=$tmpin 72219b2ee8SDavid du Colombiercase * 73219b2ee8SDavid du Colombier infiles=($*) 74219b2ee8SDavid du Colombier} 75219b2ee8SDavid du Colombier 76219b2ee8SDavid du Colombier# convert to g3 779a747e4fSDavid du Colombierg3files=() 789a747e4fSDavid du Colombiera=1 799a747e4fSDavid du Colombierfor(i in $infiles){ 809a747e4fSDavid du Colombier switch(`{file $i}){ 819a747e4fSDavid du Colombier case *:*g3* *:*fax* 829a747e4fSDavid du Colombier g3files=($g3files $i) 839a747e4fSDavid du Colombier case *:*postscript 84*651ff87aSDavid du Colombier gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.'$#a'.%03d' \ 85*651ff87aSDavid du Colombier -dNOPAUSE -dQUIET $i quit.ps 869a747e4fSDavid du Colombier g3files=($g3files $tmp.$#a.*) 87219b2ee8SDavid du Colombier case * 889a747e4fSDavid du Colombier lp -dstdout $i >$tmpps 89*651ff87aSDavid du Colombier gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.'$#a'.%03d' \ 90*651ff87aSDavid du Colombier -dNOPAUSE -dQUIET $tmpps quit.ps 919a747e4fSDavid du Colombier g3files=($g3files $tmp.$#a.*) 929a747e4fSDavid du Colombier } 93*651ff87aSDavid du Colombier a=($a 1) # count by increasing list length 94219b2ee8SDavid du Colombier} 95219b2ee8SDavid du Colombier 96219b2ee8SDavid du Colombierpages=`{echo $g3files|wc -w} 97219b2ee8SDavid du Colombier 98*651ff87aSDavid du Colombier# use delimiters that are unlikely to be supplied in arguments 99*651ff87aSDavid du Colombier{ 100*651ff87aSDavid du Colombier echo -n s∮FAXddd∮ 101*651ff87aSDavid du Colombier echo -n `{date} # treat `{} output list specially 102*651ff87aSDavid du Colombier echo ∮ 103*651ff87aSDavid du Colombier echo s∮FAXFFF∮$"myname^∮ 104*651ff87aSDavid du Colombier echo s∮FAXEEE∮$"user^∮ 105*651ff87aSDavid du Colombier echo s∮FAXVVV∮$"ext^∮ 106*651ff87aSDavid du Colombier echo s∮FAXTTT∮$"recip^∮ 107*651ff87aSDavid du Colombier echo s∮FAXfff∮$"telno^∮ 108*651ff87aSDavid du Colombier echo s∮FAXPPP∮$"pages^∮ 109*651ff87aSDavid du Colombier} >>$script 110219b2ee8SDavid du Colombiersed -f $script /sys/lib/fax/h.ps >$header 111219b2ee8SDavid du Colombier 112*651ff87aSDavid du Colombiergs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$header'.%03d' \ 113*651ff87aSDavid du Colombier -dNOPAUSE -dQUIET $header quit.ps 114219b2ee8SDavid du Colombier 115219b2ee8SDavid du Colombierfiles=() 116219b2ee8SDavid du Colombierfor(i in $header.* $g3files){ 117219b2ee8SDavid du Colombier files=($files -f $i) 118219b2ee8SDavid du Colombier} 119219b2ee8SDavid du Colombier 120219b2ee8SDavid du Colombierswitch($view){ 121219b2ee8SDavid du Colombiercase yes 122219b2ee8SDavid du Colombier page $header.* $g3files 123*651ff87aSDavid du Colombiercase * 124*651ff87aSDavid du Colombier upas/qer $files /mail/faxoutqueue fax $user $telno </dev/null 125*651ff87aSDavid du Colombier rx fax /sys/lib/fax/faxgoose </dev/null 126219b2ee8SDavid du Colombier} 127