| #!/usr/bin/env python | 
 | # | 
 | import sys, cpp, kernel, glob, os, re, getopt, clean_header | 
 | from defaults import * | 
 | from utils import * | 
 |  | 
 | def usage(): | 
 |     print """\ | 
 |   usage: %(progname)s [kernel-original-path] | 
 |  | 
 |     this program is used to update all the auto-generated clean headers | 
 |     used by the Bionic C library. it assumes the following: | 
 |  | 
 |       - a set of source kernel headers is located in '../original', | 
 |         relative to the program's directory | 
 |  | 
 |       - the clean headers will be placed in '../arch-<arch>/asm', | 
 |         '../common/linux', '../common/asm-generic', etc.. | 
 | """ % { "progname" : os.path.basename(sys.argv[0]) } | 
 |     sys.exit(0) | 
 |  | 
 | try: | 
 |     optlist, args = getopt.getopt( sys.argv[1:], '' ) | 
 | except: | 
 |     # unrecognized option | 
 |     sys.stderr.write( "error: unrecognized option\n" ) | 
 |     usage() | 
 |  | 
 | if len(optlist) > 0 or len(args) > 1: | 
 |     usage() | 
 |  | 
 | progdir = find_program_dir() | 
 |  | 
 | if len(args) == 1: | 
 |     original_dir = args[0] | 
 |     if not os.path.isdir(original_dir): | 
 |         panic( "Not a directory: %s\n" % original_dir ) | 
 | else: | 
 |     original_dir = kernel_original_path | 
 |     if not os.path.isdir(original_dir): | 
 |         panic( "Missing directory, please specify one through command-line: %s\n" % original_dir ) | 
 |  | 
 | # find all source files in 'original' | 
 | # | 
 | sources = [] | 
 | for root, dirs, files in os.walk( original_dir ): | 
 |     for file in files: | 
 |         base, ext = os.path.splitext(file) | 
 |         if ext == ".h": | 
 |             sources.append( "%s/%s" % (root,file) ) | 
 |  | 
 | b = BatchFileUpdater() | 
 |  | 
 | for arch in kernel_archs: | 
 |     b.readDir( os.path.normpath( progdir + "/../arch-%s" % arch ) ) | 
 |  | 
 | b.readDir( os.path.normpath( progdir + "/../common" ) ) | 
 |  | 
 | #print "OLD " + repr(b.old_files) | 
 |  | 
 | oldlen = 120 | 
 | for path in sources: | 
 |     dst_path, newdata = clean_header.cleanupFile(path, original_dir) | 
 |     if not dst_path: | 
 |         continue | 
 |  | 
 |     b.readFile( dst_path ) | 
 |     r = b.editFile( dst_path, newdata ) | 
 |     if r == 0: | 
 |         state = "unchanged" | 
 |     elif r == 1: | 
 |         state = "edited" | 
 |     else: | 
 |         state = "added" | 
 |  | 
 |     str = "cleaning: %-*s -> %-*s (%s)" % ( 35, "<original>" + path[len(original_dir):], 35, dst_path, state ) | 
 |     if sys.stdout.isatty(): | 
 |         print "%-*s" % (oldlen,str), | 
 |         if (r == 0): | 
 |             print "\r", | 
 |         else: | 
 |             print "\n", | 
 |             oldlen = 0 | 
 |     else: | 
 |         print str | 
 |  | 
 |     oldlen = len(str) | 
 |  | 
 | print "%-*s" % (oldlen,"Done!") | 
 |  | 
 | b.updateGitFiles() | 
 |  | 
 | sys.exit(0) |