summaryrefslogtreecommitdiffstats
path: root/Mac
diff options
context:
space:
mode:
Diffstat (limited to 'Mac')
-rw-r--r--Mac/scripts/findgremlins.py53
1 files changed, 53 insertions, 0 deletions
diff --git a/Mac/scripts/findgremlins.py b/Mac/scripts/findgremlins.py
new file mode 100644
index 0000000..fe40e64
--- /dev/null
+++ b/Mac/scripts/findgremlins.py
@@ -0,0 +1,53 @@
+"""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
+