| #!/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) |