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