#!/bin/bash
#
# /usr/lib/lpdfilter/filter/ascii2ps
#
# 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 a2ps &> /dev/null || fault_filetype a2ps

#
# Paper size
#
case "${size:=a4}" in
    letter)        medium="--medium=Letter"      ;;
    letterdj)      medium="--medium=Letterdj"    ;;
    legal)         medium="--medium=Legal"       ;;
    ledger)        medium="--medium=Ledger"      ;;
    tabloid|11x17) medium="--medium=Tabloid"     ;;
    a3)            medium="--medium=A3"          ;;
    a4)            medium="--medium=A4"          ;;
    a4dj)          medium="--medium=A4dj"        ;;
    a5)            medium="--medium=A5"          ;;
    b4)            medium="--medium=B4"          ;;
    b5)            medium="--medium=B5"          ;;
    *)             medium="--medium=${size:=a4}"
                   # Hopefully we run a2ps configured
                   # for paper sizes of ghostscript (/etc/a2ps.cfg)
esac

#
# Check for encoding
#

case "$encoding" in
    *8859-2|*latin2)		encoding="iso2"  ;;
    *8859-3|*latin3)		encoding="iso3"  ;;
    *8859-4|*latin4)		encoding="iso4"  ;;
    *8859-5)			encoding="iso5"  ;;
    *KOI8|KOI-8)		encoding="koi8"  ;;
    *8859-7)			encoding="iso7"  ;;
    *8859-9|*latin5)		encoding="iso9"  ;;
    *8859-10|*latin6)		encoding="iso10" ;;
    *8859-13|*latin7)		encoding="iso13" ;;
    *8859-15|*latin9|*euro)	encoding="iso15"
esac

#
# Title
#
: ${title:=unknown}

#
# The users name ...
#
: ${user:=unknown}
: ${name:=$user}
: ${host:=unknown}
: ${date:="$(date +'%Y-%m-%d %T')"}

#
# Basic options
#
basic="-q --left-footer --right-footer=\$s."
basic="$basic --prologue=bw --encoding=${encoding:-iso15}"
basic="$basic --delegate=off --borders=no --footer"
basic="$basic --header=%A --right-title=%q"

#
# Switches
#
case "${feature:-1n}" in
    1)   feature="-1 --portrait  --font-size=9.0"             ;;
    2)   feature="-2 --landscape --font-size=6.9"             ;;
    1n)  feature="-1 --portrait  --font-size=9.0 --no-header" ;;
    2n)  feature="-2 --landscape --font-size=6.9 --no-header" ;;
    1l)  feature="-1 --landscape --font-size=9.0"             ;;
    1ln) feature="-1 --landscape --font-size=9.0 --no-header" ;;
    *)   feature="               --font-size=6.9 --no-header" ;;

esac

#
# run the a2ps command 
# run filter on output if the printer is a real PostScript printer
#
if test "$drv" = "PS" ; then
    exec -a a2ps a2ps --stdin=Text		\
	$medium $basic				\
	${basic:+"--left-title=$date"}		\
	${title:+"--title=$title"}		\
	${title:+"--center-title=$title"}	\
	${name:+"-Duser.name=$name"}		\
	${host:+"-Duser.host=$host"}		\
	$feature --output=>(exec -a ps2ps /usr/lib/lpdfilter/filter/ps2ps)
else
    exec -a a2ps a2ps --stdin=Text		\
	$medium $basic				\
	${basic:+"--left-title=$date"}		\
	${title:+"--title=$title"}		\
	${title:+"--center-title=$title"}	\
	${name:+"-Duser.name=$name"}		\
	${host:+"-Duser.host=$host"}		\
	$feature --output=-
fi
