#!/bin/bash

export RIP_JOBUSER="Unknown user"
export RIP_JOBNAME="Unknown Job"
 RIP_OPTS="None=none"  #foomatic wants at least one equal sign
 if [ "${PPD}" = "" ]; then 
	RIP_PPD=${PRINTCAP_ENTRY/*:ppd=/}; RIP_PPD=${RIP_PPD/[:\ ]*};
 else
	RIP_PPD=${PPD};
 fi
 RIP_PRINTER="(unknown)"
 RIP_JOBID="(none id)"
 RIP_ID="(none)"
if [ "${RIP_PPD}" = "" ]; then RIP_PPD="/dev/null"; fi

for par in "$@"; do
    if [[ ${par} = -Fl ]]; then #binary/literal processing
	cat
	exit 0
    elif [ ${par:0:2} = -n ]; then
	#change username to a2ps from daemon to proper user
	export RIP_JOBUSER=${par:2}
    elif [ ${par:0:2} = -J ]; then
	export RIP_JOBNAME=${par:2}
    elif [ ${par:0:2} = -Z ]; then
	 RIP_OPTS=${par:2},$RIP_OPTS
    elif [ ${par:0:2} = -P ]; then
	 RIP_PRINTER=${par:2}
    elif [ ${par:0:2} = -j ]; then
	 RIP_JOBID=${par:2}
    elif [ ${par:0:2} = -A ]; then
	 RIP_ID=${par:2}
    elif [ ${par:0:5} = --ppd ]; then
	 RIP_PPD=${par:5}
    fi
done

RIP_HDRLEN=11
file_ps="%!PS-Adobe"
file_pdf="%PDF"
file_banner="#PDF-BANNER"
file_bin="bin"
unset PPD #let foomatic-rip run in direct, not cups mode
((head -c $RIP_HDRLEN | tee /dev/stdout); cat) | \
 (file_type=`if ! (head -c $RIP_HDRLEN | grep -s -o -a -E "$file_ps|$file_pdf|$file_banner"); then echo $file_bin ; fi`
  case $file_type in
    $file_ps|$file_pdf )
        /usr/lib/cups/filter/foomatic-rip -q --ppd "$RIP_PPD" -J "\"${RIP_JOBNAME/\"/\\\"}\"" -o "$RIP_OPTS"  2>/dev/null ;;
    $file_banner )
        PPD="$RIP_PPD" PRINTER="$RIP_PRINTER" PRINTER_INFO="$RIP_JOBNAME" PRINTER_LOCATION="$RIP_ID" \
        /usr/lib/cups/filter/bannertopdf "$RIP_JOBID" "\"${RIP_JOBUSER/\"/\\\"}\"" "\"${RIP_JOBNAME/\"/\\\"}\"" 0 \
          "\"printer-info="$RIP_ID" printer-location="$RIP_ID" time-at-creation=`date +%s` time-at-processing=`date +%s`\"" - 2>/dev/null | \
          /usr/lib/cups/filter/foomatic-rip -q --ppd "$RIP_PPD" -J "\"${RIP_JOBNAME/\"/\\\"}\"" -o "$RIP_OPTS"  2>/dev/null ;;
    $file_bin )
        /usr/bin/a2ps -B -1 --borders=no  -o - | /usr/lib/cups/filter/foomatic-rip -q --ppd "$RIP_PPD" -J "\"${RIP_JOBNAME/\"/\\\"}\"" -o "$RIP_OPTS"  2>/dev/null ;;
    * )
        cat ;;
  esac
)
