#!/bin/sh
prog=lprdvi	# name of this program
conf=/etc/lprdvi.conf

xorig=72
yorig=72
#fddefault=//fontdesc
fdbikanji="-F //bikanji"
fdbitmap="-F //bitmap"
fdbifont="-F //bifont"
fdbikant1="-F //bikant1"
fdjemb="-F //jemb"
fdemb="-F //jembt1"
fontgen="-F //fonts\$kpse/generate"
dvi2ps=dvi2ps

fontsel=$fdbikant1
printer=${PRINTER-lp}
xcoord=$xorig
ycoord=$yorig
nowarn=0
tmpps=${TMPDIR-/tmp}/LPRdvi-$$.ps
fp=
fontdesc=
d2pop=
quiet=-q
out=
trap "rm -f $tmpps; exit 4" 1 2 3 15

while [ $# -gt 0 ]; do
    case "$1" in
	-P*)
		prin=`echo $1 | sed -e s/-P//`
		if [ -z "$prin" ]; then
			if [ $# -lt 2 ]; then
				echo $prog: -P printer or -Pprinter
				exit 1
			fi
			prin=$2
			shift
		fi
		if [ $prin = "-" ]; then
			out=yes
		else
			printer=$prin
		fi
		;;
	-stdout|-so|-out)
		out=yes
		;;
	-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|-pk)
		fontsel=$fdbikanji
		;;
	-bitmap)
		fontsel=$fdbitmap
		;;
	-bifont|-psf)
		fontsel=$fdbifont
		;;
	-bikant1|-type1)
		fontsel=$fdbikant1
		;;
	-jemb)
		fontsel=$fdjemb
		;;
	-jemb=*)
		jemb=`echo $1 | sed -e s/-jemb=//`
		if [ "$jemb" ]; then
			fontsel="-Djemb=$jemb $fdjemb"
		else
			fontsel=$fdjemb
		fi
		;;
	-emb)
		fontsel=$fdemb
		;;
	-emb=*)
		jemb=`echo $1 | sed -e s/-emb=//`
		if [ "$jemb" ]; then
			fontsel="-Djemb=$jemb $fdemb"
		else
			fontsel=$fdemb
		fi
		;;
	-90ms)
		fontsel=$fontsel-90ms
		;;
	-fs)
		fontsel="-F //$2"
		shift
		;;
	-fp)
		fp=yes
		;;
	-fd)
		fontdesc="$fontdesc -F $2"
		shift
		;;
	-bothside|-2side|-duplex)
		d2pop="$d2pop -s bothside"
		;;
	-tumble*)
		d2pop="$d2pop -s tumble"
		;;
	-manual)
		d2pop="$d2pop -o manualfeed"
		;;
	-Nowarn)
		nowarn=yes
		;;
	-verb*)
		quiet="-d2"
		;;
	*)
		break
		;;
    esac
    shift
done

# logical printer name to printer spec and lpr option
prline=`sed -e '/^#/d' -e '/^[ 	]*$/d' $conf |\
while read lp prn opt
do
	if [ "$lp" = "$printer" ]; then
		echo "$prn $opt"
		break
	elif [ "$lp" = "*" ]; then
		echo "$prn $opt"
		break
	fi
done`
prname=${prline%% *}
pop=${prline#* }
if [ -z "$prname" ]; then
	prname=$printer
fi
prspec="-F //printer/$prname"

if [ -z "$fontdesc" ]; then
	if [ -z "$fp" ]; then
		fontdesc="$prspec $fontsel $fontgen"
	else
		fontdesc="$prspec"
	fi
fi
dodvi2ps="$dvi2ps $quiet $fontdesc $d2pop"
margin="\"/leftm $xcoord def /topm $ycoord def\""

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
