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