mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #! /usr/bin/env 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()
 | 
