mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""findgremlins - Search through a folder and subfolders for
 | 
						|
text files that have characters with bit 8 set, and print
 | 
						|
the filename and a bit of context.
 | 
						|
 | 
						|
By Just, with a little glue by Jack"""
 | 
						|
 | 
						|
import macfs
 | 
						|
import re
 | 
						|
import os
 | 
						|
import string
 | 
						|
import sys
 | 
						|
 | 
						|
xpat = re.compile(r"[\200-\377]")
 | 
						|
 | 
						|
def walk(top, recurse=1):
 | 
						|
	if os.path.isdir(top):
 | 
						|
		if recurse:
 | 
						|
			for name in os.listdir(top):
 | 
						|
				path = os.path.join(top, name)
 | 
						|
				walk(path)
 | 
						|
	else:
 | 
						|
		cr, tp = macfs.FSSpec(top).GetCreatorType()
 | 
						|
		if tp == 'TEXT' and top[-4:] <> ".hqx":
 | 
						|
			data = open(top).read()
 | 
						|
			badcount = 0
 | 
						|
			for ch in data[:256]:
 | 
						|
				if ord(ch) == 0 or ord(ch) >= 0200:
 | 
						|
					badcount = badcount + 1
 | 
						|
			if badcount > 16:
 | 
						|
				print `top`, 'appears to be a binary file'
 | 
						|
				return
 | 
						|
			pos = 0
 | 
						|
			gotone = 0
 | 
						|
			while 1:
 | 
						|
				m = xpat.search(data, pos)
 | 
						|
				if m is None:
 | 
						|
					break
 | 
						|
				if not gotone:
 | 
						|
					print `top`
 | 
						|
					gotone = 1
 | 
						|
				[(i, j)] = m.regs
 | 
						|
				print "     ", string.replace(data[i-15:j+15], '\n', ' ')
 | 
						|
				pos = j
 | 
						|
 | 
						|
def main():
 | 
						|
	fss, ok = macfs.GetDirectory()
 | 
						|
	if ok:
 | 
						|
		walk(fss.as_pathname())
 | 
						|
		
 | 
						|
if __name__ == '__main__':
 | 
						|
	main()
 | 
						|
	sys.exit(1) # So we see the output
 | 
						|
	
 |