From 4710c53dcad1ebf3755f3efb9e80ac24bd72a9b2 Mon Sep 17 00:00:00 2001 From: darylm503 <darylm503@6f19259b-4bc3-4df7-8a09-765794883524> Date: Mon, 16 Apr 2012 22:12:42 +0000 Subject: AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python 2.7.3 made them unavailable from the python.org web site. These files are a subset of the python-2.7.2.tgz distribution from python.org. Changed files from PyMod-2.7.2 have been copied into the corresponding directories of this tree, replacing the original files in the distribution. Signed-off-by: daryl.mcdaniel@intel.com git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13197 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Python/Python-2.7.2/Demo/scripts/lpwatch.py | 102 +++++++++++++++++++++ 1 file changed, 102 insertions(+) create mode 100644 AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py (limited to 'AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py') diff --git a/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py new file mode 100644 index 0000000000..61e937fd2a --- /dev/null +++ b/AppPkg/Applications/Python/Python-2.7.2/Demo/scripts/lpwatch.py @@ -0,0 +1,102 @@ +#! /usr/bin/env python + +# Watch line printer queue(s). +# Intended for BSD 4.3 lpq. + +import os +import sys +import time + +DEF_PRINTER = 'psc' +DEF_DELAY = 10 + +def main(): + delay = DEF_DELAY # XXX Use getopt() later + try: + thisuser = os.environ['LOGNAME'] + except: + thisuser = os.environ['USER'] + printers = sys.argv[1:] + if printers: + # Strip '-P' from printer names just in case + # the user specified it... + for i, name in enumerate(printers): + if name[:2] == '-P': + printers[i] = name[2:] + else: + if os.environ.has_key('PRINTER'): + printers = [os.environ['PRINTER']] + else: + printers = [DEF_PRINTER] + + clearhome = os.popen('clear', 'r').read() + + while True: + text = clearhome + for name in printers: + text += makestatus(name, thisuser) + '\n' + print text + time.sleep(delay) + +def makestatus(name, thisuser): + pipe = os.popen('lpq -P' + name + ' 2>&1', 'r') + lines = [] + users = {} + aheadbytes = 0 + aheadjobs = 0 + userseen = False + totalbytes = 0 + totaljobs = 0 + for line in pipe: + fields = line.split() + n = len(fields) + if len(fields) >= 6 and fields[n-1] == 'bytes': + rank, user, job = fields[0:3] + files = fields[3:-2] + bytes = int(fields[n-2]) + if user == thisuser: + userseen = True + elif not userseen: + aheadbytes += bytes + aheadjobs += 1 + totalbytes += bytes + totaljobs += 1 + ujobs, ubytes = users.get(user, (0, 0)) + ujobs += 1 + ubytes += bytes + users[user] = ujobs, ubytes + else: + if fields and fields[0] != 'Rank': + line = line.strip() + 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 += ' (%d jobs)' % totaljobs + if len(users) == 1: + line += ' for %s' % (users.keys()[0],) + else: + line += ' for %d users' % len(users) + if userseen: + if aheadjobs == 0: + line += ' (%s first)' % thisuser + else: + 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 ': '.join(lines) + +if __name__ == "__main__": + try: + main() + except KeyboardInterrupt: + pass -- cgit v1.2.3