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
		
			
				
	
	
		
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #! /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
 |