code: plan9front

ref: 8c228a123fa0c6062570964011854302bbf57242
dir: /rc/bin/psfax/

View raw version
#!/bin/rc
view=no
stdin=no

switch($1){
case -v
	view=yes
	shift
}

switch($#*){
case 0 1
	echo usage: $0 telephone-number recipient '[files]' >[1=2]
	exit usage
case 2
	stdin=yes
}

telno=$1
shift

recip=$1
shift

script=/tmp/fax.$pid
header=/tmp/faxh.$pid
tmp=/tmp/page.$pid
tmpin=/tmp/page.in.$pid
tel=`{grep '\) '$user /lib/tel}
myname=`{echo $tel | sed 's/ \(.*//'}
ext=`{echo $tel | sed 's/.*\) [^ ]* [^ ]* ([^ ]*).*/\1/'}

fn sigint{
	#rm -f $tmp.* $tmpin.* $script $header $header.*
	exit interrupt
	
}

# gs insists on reading its standard input, so we read quit.ps to cut it off.
switch($stdin){
case yes
	cat > $tmpin
	gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.%.3d' -dNOPAUSE -dQUIET $tmpin quit.ps
case *
	gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$tmp'.%.3d' -dNOPAUSE -dQUIET $* quit.ps
}

pages=`{echo $tmp.*|wc -w}

# use delimiters that are unlikely to be supplied in arguments
echo -n s∮FAXddd∮	 >$script
echo -n `{date}		>>$script
echo ∮			>>$script
echo -n s∮FAXFFF∮	>>$script
echo -n $myname 	>>$script
echo ∮			>>$script
echo -n s∮FAXEEE∮	>>$script
echo -n $user 		>>$script
echo ∮			>>$script
echo -n s∮FAXVVV∮	>>$script
echo -n $ext 		>>$script
echo ∮			>>$script
echo -n s∮FAXTTT∮	>>$script
echo -n $recip 		>>$script
echo ∮			>>$script
echo -n s∮FAXfff∮	>>$script
echo -n $telno 		>>$script
echo ∮			>>$script
echo -n s∮FAXPPP∮	>>$script
echo -n $pages 		>>$script
echo ∮			>>$script
sed -f $script /sys/lib/fax/h.ps > $header

gs -dSAFER '-sDEVICE=dfaxlow' '-sOUTPUTFILE='$header'.%.3d' -dNOPAUSE -dQUIET $header quit.ps

files=()
for(i in $header.* $tmp.*){
	files=($files -f $i)
}

switch($view){
case no
	upas/qer $files /mail/faxoutqueue fax $user $telno < /dev/null
	rx fax /sys/lib/fax/faxgoose
case yes
	page $header.* $tmp.*
}

#rm -f $tmp.* $header $script $header.* $tmpin