The Android Open Source Project | 1dc9e47 | 2009-03-03 19:28:35 -0800 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | # |
| 3 | # this program is used to find source code that includes linux kernel headers directly |
| 4 | # (e.g. with #include <linux/...> or #include <asm/...>) |
| 5 | # |
| 6 | # then it lists |
| 7 | |
| 8 | import sys, cpp, glob, os, re, getopt |
| 9 | import kernel |
| 10 | from utils import * |
| 11 | from defaults import * |
| 12 | |
| 13 | |
| 14 | def usage(): |
| 15 | print """\ |
| 16 | usage: find_users.py [-v] (file|directory|@listfile)+ |
| 17 | |
| 18 | this program is used to scan a list of files or directories for |
| 19 | sources that include kernel headers directly. the program prints |
| 20 | the list of said source files when it's done. |
| 21 | |
| 22 | when scanning directories, only files matching the following |
| 23 | extension will be searched: .c .cpp .S .h |
| 24 | |
| 25 | use -v to enable verbose output |
| 26 | """ |
| 27 | sys.exit(1) |
| 28 | |
| 29 | |
| 30 | try: |
| 31 | optlist, args = getopt.getopt( sys.argv[1:], 'v' ) |
| 32 | except: |
| 33 | # unrecognized option |
| 34 | print "error: unrecognized option" |
| 35 | usage() |
| 36 | |
| 37 | for opt, arg in optlist: |
| 38 | if opt == '-v': |
| 39 | kernel.verboseSearch = 1 |
| 40 | kernel.verboseFind = 1 |
| 41 | else: |
| 42 | usage() |
| 43 | |
| 44 | if len(args) < 1: |
| 45 | usage() |
| 46 | |
| 47 | # helper function used to walk the user files |
| 48 | def parse_file(path, parser): |
| 49 | parser.parseFile(path) |
| 50 | |
| 51 | |
| 52 | # first, obtain the list of kernel files used by our clients |
| 53 | # avoid parsing the 'kernel_headers' directory itself since we |
| 54 | # use this program with the Android source tree by default. |
| 55 | # |
| 56 | fparser = kernel.HeaderScanner() |
| 57 | walk_source_files( args, parse_file, fparser, excludes=["kernel_headers","original"] ) |
| 58 | files = fparser.getFiles() |
| 59 | |
| 60 | for f in sorted(files): |
| 61 | print f |
| 62 | |
| 63 | sys.exit(0) |