#!/bin/bash
#
# /usr/lib/lpdfilter/filter/dvi2ps
#
# filter used by /usr/lib/lpdfilter/bin/if
#
# Copyright 2000 SuSE GmbH, Nuernberg Germany
#
# Author: Werner Fink <feedback@suse.de>
#

#
# Activate debugging if requested.
#
if test "$DEBUG" = "medium" -o "$DEBUG" = "high" ; then
    # bash should be verbose
    set -x
    # Redirect stderr to a file
    exec 2> $(mktemp /tmp/lpdfilter.${0##*/}-$$.XXXXXX) || exit 2
fi

#
# Get our environment
#
. /usr/lib/lpdfilter/global/signals
. /usr/lib/lpdfilter/global/functions
type -p readpc   &> /dev/null || export PATH=/usr/lib/lpdfilter/bin:${PATH}
type -p xpmtoppm &> /dev/null || export PATH=${PATH}:/usr/X11R6/bin

#
# Check for our filter program
#
type -p dvips &> /dev/null || fault_filetype dvips

#
# Define ghosscripts paper media for dvips
#
export DVIPSRC=/etc/lpdfilter/dvipsrc

#
# media
#
case "${size:=a4}" in
    tabloid|11x17)          size="-t Tabloid" ;;
    a4dj)                   size="-t A4"      ;;
    letterdj)               size="-t Letter"  ;;
    letter|legal|ledger)    size="-t $size"   ;;
    a[0123456789]|a10)      size="-t $size"   ;;
    b[012345])              size="-t $size"   ;;
    arch[EDCBA])            size="-t $size"   ;;
    fls[ae])                size="-t $size"   ;;
    halfletter|note)        size="-t $size"   ;;
    *)                      size="-t Letter"  ;;
esac

#
# Resolution
#
: ${dpi:=600}
if test ${dpi%x*} -ne ${dpi#*x} ; then
    dpi="-D ${dpi%x*} -X ${dpi%x*} -Y ${dpi#*x}"
else
    dpi="-D ${dpi}"
fi

#
# Make dvips knowing about some paths
#
if test -s /etc/texmf/texmf.cnf ; then
    test -z "$TETEXDIR"  && TETEXDIR=/usr/share
    test -n "$TEXINPUTS" && TEXPICTS=${TEXINPUTS%:}
    TEXPICTS=${TEXPICTS+"${TEXPICTS}:"}${TETEXDIR}/texmf/doc//:/usr/share/doc/Books//:
    export TEXPICTS
fi

#
# We need a temporary file (will be deleted at exit,
# therefore we do not use exec to run dvips)
#
tmp="$(mktemp ${TMPDIR:-/tmp}/lpdfilter-${0##*/}.XXXXXX)" || exit 2

#
# dvisp needs a real file
#
cat > $tmp || exit 2

#
# run the command on stdin
#
dvips -q -Z -R $size ${dpi} ${dvips:+"-P$dvips"} -f -o - $tmp
