#!/bin/ksh if [ ! -f $HOME/HotShell/.hotprinters ] then echo "$HOME/HotShell/.hotprinters file unavailable" echo "Please check or reinstall your HotShell distribution" echo "To make your own .hotprinters file, use this format:" echo "# Comments" echo "nhp15" echo "nhp7" echo " " echo " until you have listed all printers, one on each line" exit 1 fi # Otherwise, .hotprinters exists and we didn't exit printers=$HOME/HotShell/.hotprinters if [ $# -lt 2 -o $# -gt 3 ] then echo "hprint: Incorrect usage" echo "Usage: hprint [-a printer]|[-d printer]|[printer job [time (in seconds)]]" exit 1 elif [ $# -eq 3 ] then if [ ! $3 -gt -1 ] then echo "hprint: time must be a non-negative number" exit 1 else if [ -f $2 ] then grep $1 $HOME/HotShell/.hotprinters > /dev/null if [ $? -eq 0 ] then lpq -P$1 | grep "no entries" >/dev/null if [ $? -eq 0 ] then echo "$1 is empty, so printing there." lpr -P$1 $2 exit 0 else echo "Printing $2 to printer: $1" lpr -P$1 $2 sleep $3 lpq -P$1 | grep "no entries" >/dev/null if [ $? -eq 0 ] then echo "Job $2 is already completed at $1" exit 0 else lpq -P$1 | grep $2 | grep "active" >/dev/null if [ $? -eq 0 ] then echo "Job $2 is currently printing on $1" exit 0 else echo "Job $2 has not printed after $3 seconds at $1." jobid=`lpq -P$1 | grep $2 | awk '{ print $3}'` echo "First removing $2 from $1 . . . " lprm -P$1 $jobid echo "Trying a new Printer" cleaned=`sed '{ #strip out comments /#/d }' $printers | awk '{ print $1 }'` y=9999 for name in $cleaned do echo "Searching printer $name . . ." x=`lpq -P$name | awk 'END{ print NR }'` if [ $x -lt $y ] then y=$x keeper=$name fi done echo "$keeper had smallest printer queue" echo "Now printing $2 to $keeper" lpr -P$keeper $2 exit 0 fi fi fi else echo "Printer not in $printers file" echo "to use this printer, type hprint -a printer" echo "and try again" exit 1 fi else echo "$2 is not a file" exit 1 fi fi elif [ $# -eq 2 ] then if [ $1 = "-a" ] then if [ $2 ] then grep $2 $printers > /dev/null if [ $? -ne 0 ] then echo "Adding printer $2 to your $printers file" echo $2 >> $printers exit 0 else echo "$2 already in $printers. Not adding" exit 1 fi else echo "No printer given to add" exit 1 fi elif [ $1 = "-d" ] then if [ $2 ] then grep $2 $printers > /dev/null if [ $? -eq 0 ] then echo "Removing $2 from $printers" egrep -v $2 $printers > .htmp.will.delete rm $printers mv .htmp.will.delete $printers exit 0 else echo "$2 not in $printers. Cannot delete" exit 1 fi else echo "No printer given to delete" exit 1 fi fi if [ -f $2 ] then grep $1 $HOME/HotShell/.hotprinters > /dev/null if [ $? -eq 0 ] then echo "Printing $2 to printer: $1" lpr -P$1 $2 exit 0 else echo "Printer not in $printers file" echo "to use this printer, type hprint -a printer" echo "and try again" exit 1 fi else echo "$2 is not a valid file" echo "Make sure you are in the correct directory" exit 1 fi fi