]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Modularized the code.
authorGuido van Rossum <guido@python.org>
Wed, 18 Dec 1991 13:38:58 +0000 (13:38 +0000)
committerGuido van Rossum <guido@python.org>
Wed, 18 Dec 1991 13:38:58 +0000 (13:38 +0000)
Demo/scripts/lpwatch.py

index b2e4769dc5e64bda8dd6427a2dc61dd8593ab91d..db0f469db0d3dcba1838338a6073f5a8a8767819 100755 (executable)
@@ -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()