64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#!/usr/bin/env python
 | 
						|
#
 | 
						|
# this program is used to find source code that includes linux kernel headers directly
 | 
						|
# (e.g. with #include <linux/...> or #include <asm/...>)
 | 
						|
#
 | 
						|
# then it lists
 | 
						|
 | 
						|
import sys, cpp, glob, os, re, getopt
 | 
						|
import kernel
 | 
						|
from utils import *
 | 
						|
from defaults import *
 | 
						|
 | 
						|
 | 
						|
def usage():
 | 
						|
    print """\
 | 
						|
  usage:  find_users.py [-v] (file|directory|@listfile)+
 | 
						|
 | 
						|
    this program is used to scan a list of files or directories for
 | 
						|
    sources that include kernel headers directly. the program prints
 | 
						|
    the list of said source files when it's done.
 | 
						|
 | 
						|
    when scanning directories, only files matching the following
 | 
						|
    extension will be searched: .c .cpp .S .h
 | 
						|
 | 
						|
    use -v to enable verbose output
 | 
						|
"""
 | 
						|
    sys.exit(1)
 | 
						|
 | 
						|
 | 
						|
try:
 | 
						|
    optlist, args = getopt.getopt( sys.argv[1:], 'v' )
 | 
						|
except:
 | 
						|
    # unrecognized option
 | 
						|
    print "error: unrecognized option"
 | 
						|
    usage()
 | 
						|
 | 
						|
for opt, arg in optlist:
 | 
						|
    if opt == '-v':
 | 
						|
        kernel.verboseSearch = 1
 | 
						|
        kernel.verboseFind   = 1
 | 
						|
    else:
 | 
						|
        usage()
 | 
						|
 | 
						|
if len(args) < 1:
 | 
						|
    usage()
 | 
						|
 | 
						|
# helper function used to walk the user files
 | 
						|
def parse_file(path, parser):
 | 
						|
    parser.parseFile(path)
 | 
						|
 | 
						|
 | 
						|
# first, obtain the list of kernel files used by our clients
 | 
						|
# avoid parsing the 'kernel_headers' directory itself since we
 | 
						|
# use this program with the Android source tree by default.
 | 
						|
#
 | 
						|
fparser = kernel.HeaderScanner()
 | 
						|
walk_source_files( args, parse_file, fparser, excludes=["kernel_headers","original"] )
 | 
						|
files   = fparser.getFiles()
 | 
						|
 | 
						|
for f in sorted(files):
 | 
						|
    print f
 | 
						|
 | 
						|
sys.exit(0)
 |