123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #! /usr/bin/python2
- import os.path
- import sys
- import shlex
- import re
- from headerutils import *
- usage = False
- src = list()
- flist = { }
- process_h = False
- process_c = False
- verbose = False
- level = 0
- match_all = False
- num_match = 1
- file_list = list()
- current = True
- deeper = True
- scanfiles = True
- for x in sys.argv[1:]:
- if x[0:2] == "-h":
- usage = True
- elif x[0:2] == "-i":
- process_h = True
- elif x[0:2] == "-s" or x[0:2] == "-c":
- process_c = True
- elif x[0:2] == "-v":
- verbose = True
- elif x[0:2] == "-a":
- match_all = True
- elif x[0:2] == "-n":
- num_match = int(x[2:])
- elif x[0:2] == "-1":
- deeper = False
- elif x[0:2] == "-2":
- current = False
- elif x[0:2] == "-f":
- file_list = open (x[2:]).read().splitlines()
- scanfiles = False
- elif x[0] == "-":
- print "Error: Unknown option " + x
- usage = True
- else:
- src.append (x)
- if match_all:
- num_match = len (src)
- if not process_h and not process_c:
- process_h = True
- process_c = True
- if len(src) == 0:
- usage = True
- if not usage:
- if scanfiles:
- if process_h:
- file_list = find_gcc_files ("\*.h", current, deeper)
- if process_c:
- file_list = file_list + find_gcc_files ("\*.c", current, deeper)
- file_list = file_list + find_gcc_files ("\*.cc", current, deeper)
- else:
- newlist = list()
- for x in file_list:
- if process_h and x[-2:] == ".h":
- newlist.append (x)
- elif process_c and (x[-2:] == ".c" or x[-3:] == ".cc"):
- newlist.append (x)
- file_list = newlist;
-
- file_list.sort()
- for fn in file_list:
- found = find_unique_include_list (fn)
- careabout = list()
- output = ""
- for inc in found:
- if inc in src:
- careabout.append (inc)
- if output == "":
- output = fn
- if verbose:
- output = output + " [" + inc +"]"
- if len (careabout) < num_match:
- output = ""
- if output != "":
- print output
- else:
- print "included-by [-h] [-i] [-c] [-v] [-a] [-nx] file1 [file2] ... [filen]"
- print "find the list of all files in subdirectories that include any of "
- print "the listed files. processed to a depth of 3 subdirs"
- print " -h : Show this message"
- print " -i : process only header files (*.h) for #include"
- print " -c : process only source files (*.c *.cc) for #include"
- print " If nothing is specified, defaults to -i -c"
- print " -s : Same as -c."
- print " -v : Show which include(s) were found"
- print " -nx : Only list files which have at least x different matches. Default = 1"
- print " -a : Show only files which all listed files are included"
- print " This is equivilent to -nT where T == # of items in list"
- print " -flistfile : Show only files contained in the list of files"
-
|