#!/bin/bash
#
# Wrap calls to magicfilter, so that we can compose mf rules.
#
#

# Collect the rule set, as it exists _NOW_
MF_RULE_DIR='/usr/share/printconf/mf_rules'
MF_RULES=$MF_RULE_DIR/mf[[:digit:]][[:digit:]]-*
TMP_FILE=`mktemp /tmp/printconf.XXXXXX` || exit 1

# Create an m4 rule to pass the options to lpdomatic
# via magicfilter.
OPT_FILE=`mktemp /tmp/printopt.XXXXXX` || exit 1
echo 'define(LPRNGOPTS, `'$*"')dnl" > $OPT_FILE

cat $OPT_FILE ./mf.cfg $MF_RULES | m4 > $TMP_FILE

# Find the effective language set to use.
LANG=`grep '^[[:space:]]*#[[:space:]]*FILTER_LOCALE=' ./mf.cfg | sed 's/^[[:space:]]*#[[:space:]]*FILTER_LOCALE=//;'`
[ -z "$LANG" ] && LANG=C
export LANG

# Try to close up some information exposure, and set the papersize for ghostscript
GS_PAPERSIZE=`grep '^[[:space:]]*#[[:space:]]*GS_PAPERSIZE=' ./mf.cfg | sed 's/^[[:space:]]*#[[:space:]]*GS_PAPERSIZE=//;'`
GS_OPTIONS="$GS_OPTIONS -dPARANOIDSAFER -sPAPERSIZE=$GS_PAPERSIZE"
export GS_OPTIONS

# Tell ghostscript where it might expect to find some fonts (bug #61015).
GS_FONTPATH=/usr/share/fonts
export GS_FONTPATH

# Debug expansion
DEBUGSTRING=
if [ -n "$DEBUG" ]
then
	while [ "$DEBUG" -gt 0 ]
	do
		DEBUG=$(($DEBUG - 1))
		DEBUGSTRING="$DEBUGSTRING --debug"
	done
fi

# Run magic filter
/usr/bin/magicfilter-t "$TMP_FILE" $DEBUGSTRING
RETVAL=$?

if [ -f "$TMP_FILE" ]; then
	rm -f "$TMP_FILE"
fi
if [ -f "$OPT_FILE" ]; then
	rm -f "$OPT_FILE"
fi

if [[ $RETVAL -eq 0 ]]; then
	# what termination are we using?
	TERMINATION=`grep '^[[:space:]]*#[[:space:]]*TERMINATION=' ./mf.cfg | sed 's/^[[:space:]]*#[[:space:]]*TERMINATION=//;'`
	if [ -n $TERMINATION ]; then
		echo -n -e $TERMINATION;
	fi
fi

exit $RETVAL
