#!/bin/sh

PRNS=`cat /etc/printcap | grep -v '#' | grep '|' | awk -F\| '{ print $1}'`
ROW=0
PRN=""
JOBS=""
JOB=0
JSEL=0
QUIT=0
Vari=""
CM=""
export PRNS ROW PRN JOBS JSEL JOB QUIT Vari CM


PATH=/usr/sbin:/usr/bin:$PATH ; export PATH


Separator() {
	echo "________________________________________________________________________________"
}
HeaderL() {
	clear
	echo " \t\t\t Available Printers: "
	Separator
	echo 
	echo "ID:\t Name\t\tQ. Stat\tPrinting      Queues"
	Separator
}
HeaderJ() {
	clear
	echo " \t\t\t Current Queues: "
	Separator
	echo 
	echo "No.    Pri Owner      Job    Files\t\t\t\t Total Size"
 	Separator
}


PrintList(){


ROW=0
PRNS=`cat /etc/printcap | grep -v '#' | grep '|' | awk -F\| '{ print $1}' 2>/dev/null`

	if [ -z "${PRNS}" ] ; then
		exit 1
	fi
	
	HeaderL
	for i in ${PRNS}
	do
		ROW=`expr $ROW + 1`
		GV=`lpstat -p ${i} | grep -v "${i}:" | awk '{ print  $3,$6 }' `
		QS=`lpc status ${i}| grep -v ${i}| grep -v daemon |grep -v 1999|grep -v is|awk '{ print $1 }'`
		if [ "X${QS}" = 'Xno' ] ;then
			QS=0
		fi
		echo "${ROW}.\t ${i}\t\t"${GV}\\t ${QS}
	done
	Separator
} # end PrintList


Select() {
	SEL=0
	OK=0
	PRN=""
	echo -n "Please select a Printer from 1 to $ROW (0=quit):  " 
	read SEL
	while (  expr \( "${SEL}" \< "0" \) \| \( "${SEL}" \> "${ROW}" \) 2>/dev/null ) ; do
		PrintList
		echo -n "Please select a Printer from 1 to $ROW (0=quit):  " 
		read SEL		
	done # end while
	[ ${SEL} = 0 ] && exit 0

	SO=0
	for i in  $PRNS ; do
		SO=`expr ${SO} + 1`
		if [ ${SO} =  ${SEL} ] ; then
			PRN=${i} 
			break
		fi
	done
}

SelectJ() {
	SEL=0
	OK=0

	JobList $PRN
	echo -n "Please select a Number from 1 to $JSEL (0=quit):  " 
	read SEL
	while (  expr \( "${SEL}" \< "0" \) \| \( "${SEL}" \> "${JSEL}" \) 2>/dev/null ) ; do
		JobList $PRN
		echo -n "Please select a Number from 1 to $JSEL (0=quit):  " 
		JOB=0	
		read SEL		
	done # end while
	if [ ${SEL} -ne 0 ] ; then
	
		JOB=`echo $JOBS | awk '{ print $'${SEL}' }' ` 
	else
		QUIT=1
	fi # if not eq 0
}

JobList() {

	HeaderJ

	OLDFS=$FS
	IFS='
'
	JOBS=""
	JSEL=0 
	for i in `lpstat -o ${1} | egrep "[0-9]st|[0-9]nd|[0-9]rd|[0-9]th"` ; do
		JSEL=`expr $JSEL + 1 ` 
		echo $i
		OOIFS=$IFS
		JOBS="$JOBS `echo "$i" | awk '{ print $4}'`"
		IFS=$OOIFS
	done
	IFS=$OLDFS
	Separator
} # end Job List



	while : 
	do
	IFS='
'
	PrintList
	Select 
	QUIT=0
	while   [ ${QUIT} -eq 0 ]   ; do
		SelectJ
		if [ ${QUIT} -eq 0 ] ; then
		     clear;
		     echo ; echo ;echo ;echo ;
		     echo "\t\t     What do you want to make with this Job?"
		     echo
		     echo "\t\t     1 = Restart the printer "
		     echo -n "\t\t     2 = Remove cruft files "
		     read Vari
		     if [ ${Vari} -eq "1" ] ; then 
		        echo "This Printer: ${PRN} will kill (if possible) and restart the spooling daemon"
		        CMD="lpc restart ${PRN}"
		        (sh -c ${CMD} )
		        sleep 5
		     fi # if f  
		     if [ ${Vari} -eq "2" ] ; then 
		        echo "\t\t On this Printer: ${PRN} will remove cruft files from the queue "
		        CMD=`lpc clean ${PRN}` 
		        (sh -c ${CMD} )
		        sleep 5
		     fi # if d
 		fi # if Quit
	done
	done  

