113 lines
2.7 KiB
Plaintext
113 lines
2.7 KiB
Plaintext
|
#! /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"
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
|