#! /bin/csh # $Header: glpr,v 1.1 88/01/15 13:04:11 simpson Rel $ # $Log: glpr,v $ #Revision 1.1 88/01/15 13:04:11 simpson #initial release # #Revision 0.2 87/12/21 12:29:52 simpson #changed spelling of queuing # #Revision 0.1 87/12/11 18:30:58 simpson #beta test # # The algorithm is as follows: # If given -P flag, use that printer # Decide which printer to use by (minutes after hr modulo # of printers) # Assign states to printer # If printer is idle, use it # Look for idle printer # If found # use it # Look for busy printer # If found # use it # Look for stopped printer # If found # use it # Else all printers are disabled # Printers can be in 4 states: 1==disabled, 2==stopped, 3==busy, 4==idle set printers=(sneezy dopey grumpy) set landscape set lprflags while ($#argv > 0) switch ($1) case -P*: lpr $lprflags $* exit case -L: set landscape=l shift breaksw default: set lprflags=($lprflags $1) shift breaksw endsw end @ index = `date|sed 's/.* [0-9][0-9]:\([0-9][0-9]\).*/\1/'` % $#printers + 1 set i = 1 set states=($printers) while ($i <= $#printers) /etc/lpc status $printers[$i]$landscape|fgrep 'queuing is disabled'>\ /dev/null if ($status == 0) then set states[$i] = 1 @ i++ continue endif /etc/lpc status $printers[$i]$landscape|fgrep 'printing is disabled'>\ /dev/null if ($status == 0) then set states[$i] = 2 @ i++ continue endif lpq -P$printers[$i]|fgrep 'no entries'>/dev/null set portraitstatus=$status lpq -P$printers[$i]l|fgrep 'no entries'>/dev/null if ($portraitstatus == 0 & $status == 0) then set states[$i] = 4 else set states[$i] = 3 endif @ i++ end if ($states[$index] == 4) then lpr -P$printers[$index]$landscape $lprflags exit endif set i = 1 while ($i <= $#printers) if ($states[$i] == 4) then lpr -P$printers[$i]$landscape $lprflags exit endif @ i++ end set i = 1 while ($i <= $#printers) if ($states[$i] == 3) then lpr -P$printers[$i]$landscape $lprflags exit endif @ i++ end set i = 1 while ($i <= $#printers) if ($states[$i] == 2) then lpr -P$printers[$i]$landscape $lprflags exit endif @ i++ end # If we get here, all printers are disabled! Try anything! lpr -P$printers[$index]$landscape $lprflags