summaryrefslogtreecommitdiffstats
path: root/PC/make8x3.py
diff options
context:
space:
mode:
Diffstat (limited to 'PC/make8x3.py')
-rw-r--r--PC/make8x3.py68
1 files changed, 68 insertions, 0 deletions
diff --git a/PC/make8x3.py b/PC/make8x3.py
new file mode 100644
index 0000000..d894c70
--- /dev/null
+++ b/PC/make8x3.py
@@ -0,0 +1,68 @@
+#! /usr/local/bin/python
+
+# This program reads all *.py and test/*.py in "libDir", and
+# copies those files with illegal DOS names to libDir/dos_8x3.
+# Names are illegal if they are longer than 8x3 chars or if they
+# contain uppercase chars. It also tests for name collisions.
+# You must first create the directory libDir/dos_8x3 yourself.
+# You should remove all files in dos_8x3 if you run it again.
+
+# CHANGE libDir TO THE CORRECT DIRECTORY. RM dos_8x3/* FIRST.
+
+import sys, os, regex, string
+
+libDir = "./Lib" # Location of Python Lib
+
+def make8x3():
+ reg_uppercase = regex.compile("[A-Z]")
+ collisions = {} # See if all names are unique in first 8 chars.
+ destDir = os.path.join(libDir, "dos_8x3")
+ if not os.path.isdir(destDir):
+ print "Please create the directory", destDir, "first."
+ err()
+ while 1:
+ ans = raw_input("Ok to copy to " + destDir + " [yn]? ")
+ if not ans:
+ continue
+ elif ans[0] == "n":
+ err()
+ elif ans[0] == "y":
+ break
+ for dirname in libDir, os.path.join(libDir, "test"):
+ for filename in os.listdir(dirname):
+ if filename[-3:] == ".py":
+ name = filename[0:-3]
+ if len(name) > 8 or reg_uppercase.search(name) >= 0:
+ shortName = string.lower(name[0:8])
+ if collisions.has_key(shortName):
+ print "Name not unique in first 8 chars:", collisions[shortName], name
+ else:
+ collisions[shortName] = name
+ fin = open(os.path.join(dirname, filename), "r")
+ dest = os.path.join(destDir, shortName + ".py")
+ fout = open(dest, "w")
+ fout.write(fin.read())
+ fin.close()
+ fout.close()
+ os.chmod(dest, 0644)
+ elif filename == "." or filename == "..":
+ continue
+ elif filename[-4:] == ".pyc":
+ continue
+ elif filename == "Makefile":
+ continue
+ else:
+ parts = string.splitfields(filename, ".")
+ if len(parts) > 2 or \
+ len(parts[0]) > 8 or \
+ reg_uppercase.search(filename) >= 0 or \
+ (len(parts) > 1 and len(parts[1]) > 3):
+ print "Illegal DOS name", os.path.join(dirname, filename)
+ sys.exit(0)
+def err():
+ print "No files copied."
+ sys.exit(1)
+
+
+if __name__ == "__main__":
+ make8x3()