Modularized the code.
diff --git a/Demo/scripts/lpwatch.py b/Demo/scripts/lpwatch.py
index b2e4769..db0f469 100755
--- a/Demo/scripts/lpwatch.py
+++ b/Demo/scripts/lpwatch.py
@@ -34,22 +34,15 @@
 	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 @@
 			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()