#! /bin/sh
## arguments.
#
# environment variable
# DVITMP :	directory for DVI file.
# PSTMP :	directory for PS file.
# XDVIPRINT	
# XDVIPRINTCMD =	dvi2ps | dvips | jdvi2kps
# DVIFILTOPTTBL
# DVIPS :	dvips command 
# JDVI2KPS :	jdvi2kps command 
# DVI2PS :	dvi2ps command (e.g. "dvi2ps -F myfontdesc -n 2")
#
PRINTER=$1
PAPERSIZE=$2

if [ -n "$XDVIPRINT" ]; then
	$XDVIPRINT $PRINTER $PAPERSIZE
	exit
fi
## temporary files.
DVITMP=${TMPDIR:-/tmp}/xdviprint.$$.dvi
PSTMP=${TMPDIR:-/tmp}/xdviprint.$$.ps
: ${XDVIPRINTCMD:=dvi2ps}

## save to temporary file.
/bin/cat > $DVITMP

##########
###### DVI -> PS
######
case $XDVIPRINTCMD in
dvips)
    ## for dvips
    FILTOPTTBL=${XDVIFILTOPTTBL:-/usr/share/texmf/xdvi/xdvipaper.dvips}
    DVIPSCMD="${DVIPS:-dvips} -f -t"
;;
jdvi2kps)
    ## for jdvi2kps
    FILTOPTTBL=${XDVIFILTOPTTBL:-/usr/share/texmf/xdvi/xdvipaper.jdvi2kps}
    DVIPSCMD="${JDVI2KPS:-jdvi2kps} -pa"
;;
dvi2ps)
    ## for dvi2ps
    FILTOPTTBL=${XDVIFILTOPTTBL:-/usr/share/texmf/xdvi/xdvipaper.dvi2ps-j}
    DVIPSCMD="${DVI2PS:-dvi2ps} -o"
;;
*)
    echo "illegal XDVIPRINTCMD's value"
    echo "XDVIPRINTCMD must be dvi2ps, dvips or jdvi2kps"
    exit 1
esac
####
##########

## apply filter to paper size name
PAPER=`nawk '\
  $1 == "'"$PAPERSIZE"'" {\
    name = $1; sub("#.*", ""); sub("^[ \t]*[^ \t]+[ \t]*", "");\
    if ($0 != "") {name = $0;} if (name != "") {print name; exit}};\
  $1 ~ /^=/ {\
    sub("#.*", ""); sub("=", ""); print; exit}' $FILTOPTTBL`

## exec DVI->PS
$DVIPSCMD $PAPER $DVITMP > $PSTMP
/bin/rm -f $DVITMP

##########
###### print out
######
## for BSD
lpr -s -r -P$PRINTER $PSTMP
####
## for SYSV
# lp -c -d $PRINTER $PSTMP
# /bin/rm -f $PSTMP
##########

## exit
exit 0
