#!/bin/sh
trap '/bin/rm -f ${inFile} > /dev/null 2>&1' EXIT

######################################################################
#
# Copyright 2008, 2009, 2010, 2011, 2012  Oki Data Corporation
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
######################################################################
PATH=/bin:/usr/sbin:/usr/bin
export PATH

CAT="/bin/cat"
CUT="/usr/bin/cut"
ECHO="/bin/echo"
GREP="/bin/grep"
MKTEMP="/bin/mktemp"
RM="/bin/rm"
SED="/bin/sed"
TR="/usr/bin/tr"

GROUP="/etc/group"

RASTERTOHP="/usr/lib/cups/filter/rastertohp"

do_get_pjl()
{

	pattern="${1}"
	ppd="${2}"


	someOption=$(${GREP} "^*Default${pattern}:" ${ppd}  | ${TR} -d '[:space:]' | ${CUT} -d':' -f2)
	someString=$(${GREP} "^*${pattern} ${someOption}" ${ppd}  | ${CUT} -d'"' -f2|${CUT} -d'<' -f1)


	${ECHO} "${someString}"
}

do_get_value()
{

	pattern="${1}"
	ppd="${2}"


	someString=$(${GREP} -iw "${pattern}" ${ppd}  | ${CUT} -d'/' -f1 | ${CUT} -d' ' -f2 | ${SED} 's/://' | ${SED} 's/Env//' | ${TR} '[:lower:]' '[:upper:]' 2> /dev/null)


	${ECHO} "${someString}"
}

if [ ! -x "${RASTERTOHP}" ] ; then
	${ECHO} "ERROR: ${RASTERTOHP} not executable." 1>&2
	exit 1
fi


inFile=$(${MKTEMP} ${TMPDIR:-/tmp}/XXXXXX)

${RM} -f ${inFile} > /dev/null 2>&1

media=""
TonerSaving=""
PageSizeCheck=""
TraySwitch=""

_jobid="${1}"
_user="${2}"
_title="${3}"
_options="${5}"
manual_feed="@PJL SET MANUALFEED=OFF"

tmp_id=`${GREP} "^${_user}:" ${GROUP}| ${CUT} -d":" -f3 2> /dev/null`
_id=`${ECHO} ${tmp_id:-999999988} | ${SED} -e "s/.*\([0-9]\{9\}\)/\1/"`

OKIJOB_ACCT="@PJL OKIJOBACCOUNTJOB JOBACCOUNTID=${_id} USERID=\"${_user}\" JOBNAME=\"${_title}\""

${CAT} - > ${inFile}

${ECHO} "INFO: options = [${_options}] " 1>&2

## user options (* -oName=Value *) ##
for i in ${_options}
do
	upper=`${ECHO} ${i} | ${TR} '[:lower:]' '[:upper:]'`
	no_equal=`${ECHO} ${i} | ${SED} 's/=/ /' 2> /dev/null`

	case ${upper} in
		PAGESIZE=ENV10|PAGESIZE=ENV9)
			media=`do_get_value "^*${no_equal}" "${PPD}"`
			PAPER="@PJL SET PAPER=COM${media}"
		;;
		PAGESIZE=*)
			media=`do_get_value "^*${no_equal}" "${PPD}"`
			PAPER="@PJL SET PAPER=${media}"

		;;
		*)
			${ECHO} "INFO: Unkown option = [${i}] " 1>&2
		;;
	esac
done

if [ -f "${PPD}" ] ; then

	InputSlot=$(${GREP} '^*DefaultInputSlot:' ${PPD} | ${CUT} -d" " -f2  2> /dev/null)
	
	case "${InputSlot}" in
		EnvFeed) InputSlotKey=1 ;;
		Upper)   InputSlotKey=2 ;;
		Lower)   InputSlotKey=3 ;;
		*) InputSlotKey=1 ;;
	esac


	if [  "${InputSlotKey}" = 1 ] ; then
		manual_feed="@PJL SET MANUALFEED=ON"
	fi

	if [ -z "${media}" ] ; then
		media=`do_get_value "^*DefaultPageSize:" "${PPD}"`
		case "${media}" in
			9|10)
				PAPER="@PJL SET PAPER=COM${media}"
			;;
			*)
				PAPER="@PJL SET PAPER=${media}"
			;;
		esac
	fi
	
	TonerSaving=`do_get_pjl "OKOutputMode" "${PPD}"`
	PageSizeCheck=`do_get_pjl "OKPageSizeCheck" "${PPD}"`
	TraySwitch=`do_get_pjl "TraySwitch" "${PPD}"`
fi

version="v5.0"

UEL="%-12345X@PJL COMMENT OKI B400/MB400/B4000 PCL Monochrome ${version}"
RDYMSG="@PJL RDYMSG DISPLAY = \"\""
LANGUAGE="@PJL ENTER LANGUAGE = PCL"

${ECHO} ${UEL}
${ECHO} ${OKIJOB_ACCT}
${ECHO} ${manual_feed}
${ECHO} ${PAPER}
${ECHO} ${RDYMSG}

if [ ! -z "${TonerSaving}" ] ; then
	${ECHO} ${TonerSaving}
fi

if [ ! -z "${PageSizeCheck}" ] ; then
	${ECHO} ${PageSizeCheck}
fi

if [ ! -z "${TraySwitch}" ] ; then
	${ECHO} ${TraySwitch}
fi

${ECHO} ${LANGUAGE}

${CAT} ${inFile} | ${RASTERTOHP} "${1}" "${2}" "${3}" "${4}" "" 2>/dev/null

${ECHO} -e "\033%-12345"

${RM} -f ${inFile} > /dev/null 2>&1

exit 0
