xref: /netbsd-src/external/gpl3/gcc.old/dist/contrib/header-tools/count-headers (revision 36ac495d2b3ea2b9d96377b2143ebfedac224b92)
1*36ac495dSmrg#! /usr/bin/python2
2*36ac495dSmrgimport os.path
3*36ac495dSmrgimport sys
4*36ac495dSmrgimport shlex
5*36ac495dSmrgimport re
6*36ac495dSmrg
7*36ac495dSmrgfrom headerutils import *
8*36ac495dSmrg
9*36ac495dSmrgusage = False
10*36ac495dSmrgsrc = list ()
11*36ac495dSmrgflist = { }
12*36ac495dSmrgprocess_h = True
13*36ac495dSmrgprocess_c = True
14*36ac495dSmrgverbose = False
15*36ac495dSmrgall_inc = True
16*36ac495dSmrglevel = 0
17*36ac495dSmrg
18*36ac495dSmrgonly_use_list = list ()
19*36ac495dSmrg
20*36ac495dSmrgfor x in sys.argv[1:]:
21*36ac495dSmrg  if x[0:2] == "-h":
22*36ac495dSmrg    usage = True
23*36ac495dSmrg  else:
24*36ac495dSmrg    src.append (x)
25*36ac495dSmrg
26*36ac495dSmrg
27*36ac495dSmrgif not usage and len (src) > 0:
28*36ac495dSmrg  incl = { }
29*36ac495dSmrg  for fn in src:
30*36ac495dSmrg    src = readwholefile (fn)
31*36ac495dSmrg    dup = { }
32*36ac495dSmrg    for line in src:
33*36ac495dSmrg      d = find_pound_include (line, True, True)
34*36ac495dSmrg      if d != "" and d[-2:] ==".h":
35*36ac495dSmrg        if dup.get (d) == None:
36*36ac495dSmrg          if incl.get (d) == None:
37*36ac495dSmrg            incl[d] = 1
38*36ac495dSmrg          else:
39*36ac495dSmrg            incl[d] = incl[d]+ 1
40*36ac495dSmrg          dup[d] = 1
41*36ac495dSmrg
42*36ac495dSmrg  l = list ()
43*36ac495dSmrg  for i in incl:
44*36ac495dSmrg    l.append ((incl[i], i))
45*36ac495dSmrg  l.sort (key=lambda tup:tup[0], reverse=True)
46*36ac495dSmrg
47*36ac495dSmrg  for f in l:
48*36ac495dSmrg    print str (f[0]) + " : " + f[1]
49*36ac495dSmrg
50*36ac495dSmrgelse:
51*36ac495dSmrg  print "count-headers file1 [filen]"
52*36ac495dSmrg  print "Count the number of occurrences of all includes across all listed files"
53*36ac495dSmrg
54*36ac495dSmrg
55*36ac495dSmrg
56*36ac495dSmrg
57*36ac495dSmrg
58*36ac495dSmrg
59