Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Demo/scripts/lpwatch.py

    r2 r391  
    44# Intended for BSD 4.3 lpq.
    55
    6 import posix
     6import os
    77import sys
    88import time
    9 import string
    109
    1110DEF_PRINTER = 'psc'
     
    1514    delay = DEF_DELAY # XXX Use getopt() later
    1615    try:
    17         thisuser = posix.environ['LOGNAME']
     16        thisuser = os.environ['LOGNAME']
    1817    except:
    19         thisuser = posix.environ['USER']
     18        thisuser = os.environ['USER']
    2019    printers = sys.argv[1:]
    2120    if printers:
    2221        # Strip '-P' from printer names just in case
    2322        # the user specified it...
    24         for i in range(len(printers)):
    25             if printers[i][:2] == '-P':
    26                 printers[i] = printers[i][2:]
     23        for i, name in enumerate(printers):
     24            if name[:2] == '-P':
     25                printers[i] = name[2:]
    2726    else:
    28         if posix.environ.has_key('PRINTER'):
    29             printers = [posix.environ['PRINTER']]
     27        if os.environ.has_key('PRINTER'):
     28            printers = [os.environ['PRINTER']]
    3029        else:
    3130            printers = [DEF_PRINTER]
    32     #
    33     clearhome = posix.popen('clear', 'r').read()
    34     #
    35     while 1:
     31
     32    clearhome = os.popen('clear', 'r').read()
     33
     34    while True:
    3635        text = clearhome
    3736        for name in printers:
    38             text = text + makestatus(name, thisuser) + '\n'
     37            text += makestatus(name, thisuser) + '\n'
    3938        print text
    4039        time.sleep(delay)
    4140
    4241def makestatus(name, thisuser):
    43     pipe = posix.popen('lpq -P' + name + ' 2>&1', 'r')
     42    pipe = os.popen('lpq -P' + name + ' 2>&1', 'r')
    4443    lines = []
    4544    users = {}
    4645    aheadbytes = 0
    4746    aheadjobs = 0
    48     userseen = 0
     47    userseen = False
    4948    totalbytes = 0
    5049    totaljobs = 0
    51     while 1:
    52         line = pipe.readline()
    53         if not line: break
    54         fields = string.split(line)
     50    for line in pipe:
     51        fields = line.split()
    5552        n = len(fields)
    5653        if len(fields) >= 6 and fields[n-1] == 'bytes':
    57             rank = fields[0]
    58             user = fields[1]
    59             job = fields[2]
     54            rank, user, job = fields[0:3]
    6055            files = fields[3:-2]
    61             bytes = eval(fields[n-2])
     56            bytes = int(fields[n-2])
    6257            if user == thisuser:
    63                 userseen = 1
     58                userseen = True
    6459            elif not userseen:
    65                 aheadbytes = aheadbytes + bytes
    66                 aheadjobs = aheadjobs + 1
    67             totalbytes = totalbytes + bytes
    68             totaljobs = totaljobs + 1
    69             if users.has_key(user):
    70                 ujobs, ubytes = users[user]
    71             else:
    72                 ujobs, ubytes = 0, 0
    73             ujobs = ujobs + 1
    74             ubytes = ubytes + bytes
     60                aheadbytes += bytes
     61                aheadjobs += 1
     62            totalbytes += bytes
     63            totaljobs += 1
     64            ujobs, ubytes = users.get(user, (0, 0))
     65            ujobs += 1
     66            ubytes += bytes
    7567            users[user] = ujobs, ubytes
    7668        else:
    77             if fields and fields[0] <> 'Rank':
    78                 line = string.strip(line)
     69            if fields and fields[0] != 'Rank':
     70                line = line.strip()
    7971                if line == 'no entries':
    8072                    line = name + ': idle'
     
    8274                    line = name
    8375                lines.append(line)
    84     #
     76
    8577    if totaljobs:
    86         line = '%d K' % ((totalbytes+1023)//1024)
    87         if totaljobs <> len(users):
    88             line = line + ' (%d jobs)' % totaljobs
     78        line = '%d K' % ((totalbytes+1023) // 1024)
     79        if totaljobs != len(users):
     80            line += ' (%d jobs)' % totaljobs
    8981        if len(users) == 1:
    90             line = line + ' for %s' % (users.keys()[0],)
     82            line += ' for %s' % (users.keys()[0],)
    9183        else:
    92             line = line + ' for %d users' % len(users)
     84            line += ' for %d users' % len(users)
    9385            if userseen:
    9486                if aheadjobs == 0:
    95                     line =  line + ' (%s first)' % thisuser
     87                    line += ' (%s first)' % thisuser
    9688                else:
    97                     line = line + ' (%d K before %s)' % (
    98                                    (aheadbytes+1023)//1024, thisuser)
     89                    line += ' (%d K before %s)' % (
     90                        (aheadbytes+1023) // 1024, thisuser)
    9991        lines.append(line)
    100     #
     92
    10193    sts = pipe.close()
    10294    if sts:
    10395        lines.append('lpq exit status %r' % (sts,))
    104     return string.joinfields(lines, ': ')
     96    return ': '.join(lines)
    10597
    10698if __name__ == "__main__":
Note: See TracChangeset for help on using the changeset viewer.