#!/bin/sh
prog=lprdvi	# name of this program
defprtype=ps	# default type of printers (ps/dvi/...)

xorig=72
yorig=72
#fddefault=//fontdesc
fdbikanji="-F //bikanji"
fdbitmap="-F //bitmap"
fdbifont="-F //bifont"
fontgen="-F //fonts/generate"
dvi2ps=/usr/bin/dvi2ps
dvi2dvi=/usr/bin/dvi2dvi

fontsel=$fdbikanji
printer=${PRINTER-lp}
xcoord=$xorig
ycoord=$yorig
nowarn=0
tmpps=/tmp/LPRdvi-$$.ps
psf=
fontdesc=
d2pop=
out=

while [ $# -gt 0 ]; do
    case "$1" in
	-P*)
		printer=`echo $1 | sed -e s/-P//`
		if [ -z "$printer" ]; then
			if [ $# -lt 2 ]; then
				echo $prog: -P printer or -Pprinter
				exit 1
			fi
			printer=$2
			shift
		fi
		;;
	-x)
		if [ $# -lt 2 ]; then
			echo $prog: -x xorigin_move
			exit 1
		fi
		xcoord=`expr $xorig + $2`
		shift
		;;
	-y)
		if [ $# -lt 2 ]; then
			echo $prog: -y yorigin_move
			exit 1
		fi
		ycoord=`expr $yorig + $2`
		shift
		;;
	-bikanji)
		fontsel=$fdbikanji
		;;
	-bitmap)
		fontsel=$fdbitmap
		;;
	-bifont)
		fontsel=$fdbifont
		;;
	-Draft)
		fontgen=""
		;;
	-psf0)
		psf="$psf -F //fonts/psfonts0"
		;;
	-psf1)
		psf="$psf -F //fonts/psfonts"
		;;
	-psf2)
		psf="$psf -F //fonts/psfonts2"
		;;
	-psf|-psf3)
		psf="$psf -F //fonts/psfonts3"
		;;
	-fp)
		fp=yes
		;;
	-fd)
		fontdesc="$fontdesc -F $2"
		shift
		;;
	-out)
		out=yes
		;;
	-Nowarn)
		nowarn=yes
		;;
	-Tdvi)
		prtype=dvi
		;;
	-Tps)
		prtype=ps
		;;
	-manual)
		d2pop="$d2pop -o manualfeed"
		;;
	*)
		break
		;;
    esac
    shift
done

# set printer type and options by printer name
# change XX and XXPRINTER, and add cases for more printers
case $printer in
lp|XX)
	prtype=${prtype-ps}
	prspec="-F //printer/XXPRINTER"
	pop=
	dop=-d
	;;
*)
	prtype=${prtype-$defprtype}
	prspec="-F //printer/LWII"
	#d2pop="-r $d2pop"
	pop=
	dop=-d
	;;
esac

if [ -z "$fontdesc" ]; then
	if [ -z "$fp" ]; then
		fontdesc="$prspec $fontsel $psf $fontgen"
	else
		fontdesc="$prspec"
	fi
fi
dodvi2ps="$dvi2ps -q $fontdesc $d2pop"
margin="\"/leftm $xcoord def /topm $ycoord def\""
case $prtype in
ps)
    if [ -z "$out" ]; then
	$dodvi2ps -s "$margin" "$@" > $tmpps
	if [ $? -eq 0 -o \( $? -eq 1 -a $nowarn -eq 0 \) ]; then
		lpr -J dvi2ps -P$printer $pop $tmpps
	fi
	rm -f $tmpps
    else
	$dodvi2ps -s "$margin" "$@"
    fi
    ;;
dvi)
    if [ -z "$out" ]; then
	lpr -J lprdvi -P$printer $dop "$@"
    else
	$dvi2dvi -q -F //n2a "$@"
    fi
    ;;
esac
