summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xDemo/scripts/lpwatch.py59
1 files changed, 26 insertions, 33 deletions
diff --git a/Demo/scripts/lpwatch.py b/Demo/scripts/lpwatch.py
index b2e4769..db0f469 100755
--- a/Demo/scripts/lpwatch.py
+++ b/Demo/scripts/lpwatch.py
@@ -34,22 +34,15 @@ def main():
clearhome = posix.popen('clear', 'r').read()
#
while 1:
- # Pipe output through cat for extra buffering,
- # so the output (which overwrites the previous)
- # appears instantaneous.
- sys.stdout = posix.popen('exec cat', 'w')
- sys.stdout.write(clearhome)
+ text = clearhome
for name in printers:
- pipe = posix.popen('lpq -P' + name + ' 2>&1', 'r')
- showstatus(name, pipe, thisuser)
- sts = pipe.close()
- if sts:
- print name + ': *** lpq exit status', sts
- sts = sys.stdout.close()
+ text = text + makestatus(name, thisuser) + '\n'
+ print text
time.sleep(delay)
-def showstatus(name, pipe, thisuser):
- lines = 0
+def makestatus(name, thisuser):
+ pipe = posix.popen('lpq -P' + name + ' 2>&1', 'r')
+ lines = []
users = {}
aheadbytes = 0
aheadjobs = 0
@@ -83,33 +76,33 @@ def showstatus(name, pipe, thisuser):
users[user] = ujobs, ubytes
else:
if fields and fields[0] <> 'Rank':
- if line[-1:] = '\n':
- line = line[:-1]
- if not lines:
- print name + ':',
- else:
- print
- print line,
- lines = lines + 1
+ line = string.strip(line)
+ if line = 'no entries':
+ line = name + ': idle'
+ elif line[-22:] = ' is ready and printing':
+ line = name
+ lines.append(line)
+ #
if totaljobs:
- if lines > 1:
- print
- lines = lines+1
- print (totalbytes+1023)/1024, 'K',
+ line = `(totalbytes+1023)/1024` + ' K'
if totaljobs <> len(users):
- print '(' + `totaljobs` + ' jobs)',
+ line = line + ' (' + `totaljobs` + ' jobs)'
if len(users) = 1:
- print 'for', users.keys()[0],
+ line = line + ' for ' + users.keys()[0]
else:
- print 'for', len(users), 'users',
+ line = line + ' for ' + `len(users)` + ' users'
if userseen:
if aheadjobs = 0:
- print '(' + thisuser + ' first)',
+ line = line + ' (' + thisuser + ' first)'
else:
- print '(' + `(aheadbytes+1023)/1024`,
- print 'K before', thisuser + ')'
- if lines:
- print
+ line = line + ' (' + `(aheadbytes+1023)/1024`
+ line = line + ' K before ' + thisuser + ')'
+ lines.append(line)
+ #
+ sts = pipe.close()
+ if sts:
+ lines.append('lpq exit status ' + `sts`)
+ return string.joinfields(lines, ': ')
try:
main()