#!/usr/bin/ksh
#
#	dvipr  -  print tex dvi output file on printer
#
USAGE="usage: `basename $0` \0133-fPageNo] \0133-tPageNo] \0133-l] \0133-h] \0133-Pprinter] dvifile"
FROM=""
TO=""
OPTIONS=""
HOLD="n"
if [ "$PRINTER" = "" ]
then
	PRINTER="can4"
fi
#
# first sort out the options
#
for arg in "$@"
do
	case $arg in
	-P*)	PRINTER=${arg#-P};;
	-f*)	FROM=${arg#-f};;
	-t*)	TO=${arg#-t};;
	-h)	HOLD="y";;
	-l)	OPTIONS="$OPTIONS -o landscape";;
	-*)	FILE=""
		break;;
	*.dvi)	FILE=${arg%.dvi};;
	*)	FILE=$arg
	esac
done
#
# check if file given
#
if [ "$FILE" = "" ]
then
	echo $USAGE
#
# check if file exists and execute appropriate command if so
#
elif [ -f $FILE.dvi ]
then
	JOBNAME=`basename $FILE`
	TMP="/tmp/dvipr$$"
	SEL="/tmp/dvisl$$"
	case $PRINTER in
	can[46])
		/bin/echo -n "Selecting page(s)"
		/bin/echo "Selecting page(s)" > $FILE.plg
		dviselect $FROM:$TO $FILE.dvi $SEL 2>> $FILE.plg
		mv $SEL $SEL.dvi
		/bin/echo -n "`print - '\r'`Loading printer fonts"
		dvi2imagen -I -s $SEL > $TMP 2>> $FILE.plg
		/bin/echo -n "`print - '\r'`Sending $JOBNAME to printer $PRINTER "
		/bin/echo "Sending $JOBNAME to printer $PRINTER" >> $FILE.plg
		lpr -P$PRINTER -J $JOBNAME -O"-LImpress" $TMP
		if [ $HOLD = "y" ]
		then
			mv $TMP $JOBNAME.ipr
			/bin/rm $SEL.dvi
		else
			/bin/rm $TMP $SEL.dvi
		fi
		/bin/echo "`print - '\r'`Print job info written to log file $FILE.plg                     ";;
	alw|dp6)
		/bin/echo -n "Selecting page(s)"
		/bin/echo "Selecting page(s)" > $FILE.plg
		dviselect $FROM:$TO $FILE.dvi $SEL 2>> $FILE.plg
		mv $SEL $SEL.dvi
		/bin/echo -n "`print - '\r'`Loading printer fonts"
                if [ $PRINTER = dp6 ]
                then
		    dvi2ps -r $OPTIONS $SEL 2>> $FILE.plg | sed -e 's/letter initmatrix/a4 initmatrix/' -e 's/310 -3005 translate/309 -3227 translate/' > $TMP
                else
		    dvi2ps $OPTIONS $SEL > $TMP 2>> $FILE.plg
		fi
		/bin/echo -n "`print - '\r'`Sending $JOBNAME to printer $PRINTER "
		/bin/echo "Sending $JOBNAME to printer $PRINTER" >> $FILE.plg
		lpr -P$PRINTER $TMP
		if [ $HOLD = "y" ]
		then
			mv $TMP $JOBNAME.lpr
			/bin/rm $SEL.dvi
		else
			/bin/rm $TMP $SEL.dvi
		fi
		/bin/echo "`print - '\r'`Print job info written to log file $FILE.plg                     ";;
	*)
		echo "`basename $0`: unknown printer $PRINTER"
	esac
else
	echo "`basename $0`: can't find dvifile: $FILE.dvi"
fi
