blob: 99a8718b0f2fa8c39116fbd34f368f986bc049f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
#! /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
|