summaryrefslogtreecommitdiff
path: root/sys/src/cmd/python/Demo/scripts/lpwatch.py
diff options
context:
space:
mode:
Diffstat (limited to 'sys/src/cmd/python/Demo/scripts/lpwatch.py')
-rwxr-xr-xsys/src/cmd/python/Demo/scripts/lpwatch.py110
1 files changed, 0 insertions, 110 deletions
diff --git a/sys/src/cmd/python/Demo/scripts/lpwatch.py b/sys/src/cmd/python/Demo/scripts/lpwatch.py
deleted file mode 100755
index 8887dee7d..000000000
--- a/sys/src/cmd/python/Demo/scripts/lpwatch.py
+++ /dev/null
@@ -1,110 +0,0 @@
-#! /usr/bin/env python
-
-# Watch line printer queue(s).
-# Intended for BSD 4.3 lpq.
-
-import posix
-import sys
-import time
-import string
-
-DEF_PRINTER = 'psc'
-DEF_DELAY = 10
-
-def main():
- delay = DEF_DELAY # XXX Use getopt() later
- try:
- thisuser = posix.environ['LOGNAME']
- except:
- thisuser = posix.environ['USER']
- printers = sys.argv[1:]
- if printers:
- # Strip '-P' from printer names just in case
- # the user specified it...
- for i in range(len(printers)):
- if printers[i][:2] == '-P':
- printers[i] = printers[i][2:]
- else:
- if posix.environ.has_key('PRINTER'):
- printers = [posix.environ['PRINTER']]
- else:
- printers = [DEF_PRINTER]
- #
- clearhome = posix.popen('clear', 'r').read()
- #
- while 1:
- text = clearhome
- for name in printers:
- text = text + makestatus(name, thisuser) + '\n'
- print text
- time.sleep(delay)
-
-def makestatus(name, thisuser):
- pipe = posix.popen('lpq -P' + name + ' 2>&1', 'r')
- lines = []
- users = {}
- aheadbytes = 0
- aheadjobs = 0
- userseen = 0
- totalbytes = 0
- totaljobs = 0
- while 1:
- line = pipe.readline()
- if not line: break
- fields = string.split(line)
- n = len(fields)
- if len(fields) >= 6 and fields[n-1] == 'bytes':
- rank = fields[0]
- user = fields[1]
- job = fields[2]
- files = fields[3:-2]
- bytes = eval(fields[n-2])
- if user == thisuser:
- userseen = 1
- elif not userseen:
- aheadbytes = aheadbytes + bytes
- aheadjobs = aheadjobs + 1
- totalbytes = totalbytes + bytes
- totaljobs = totaljobs + 1
- if users.has_key(user):
- ujobs, ubytes = users[user]
- else:
- ujobs, ubytes = 0, 0
- ujobs = ujobs + 1
- ubytes = ubytes + bytes
- users[user] = ujobs, ubytes
- else:
- if fields and fields[0] <> 'Rank':
- 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:
- line = '%d K' % ((totalbytes+1023)/1024)
- if totaljobs <> len(users):
- line = line + ' (%d jobs)' % totaljobs
- if len(users) == 1:
- line = line + ' for %s' % (users.keys()[0],)
- else:
- line = line + ' for %d users' % len(users)
- if userseen:
- if aheadjobs == 0:
- line = line + ' (%s first)' % thisuser
- else:
- line = line + ' (%d K before %s)' % (
- (aheadbytes+1023)/1024, thisuser)
- lines.append(line)
- #
- sts = pipe.close()
- if sts:
- lines.append('lpq exit status %r' % (sts,))
- return string.joinfields(lines, ': ')
-
-if __name__ == "__main__":
- try:
- main()
- except KeyboardInterrupt:
- pass