| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 
							- #!/usr/bin/python3
 
- import os
 
- import os.path
 
- import re
 
- # Find all the include files, map them to their real names.
 
- def exclude(paths, dirnames):
 
-     for p in paths:
 
-         if p in dirnames:
 
-             dirnames.remove(p)
 
- def get_include_map():
 
-     includes = { }
 
-     for dirpath,dirnames,fnames in os.walk("src"):
 
-         exclude(["ext", "win32"], dirnames)
 
-         for fname in fnames:
 
-             if fname.endswith(".h"):
 
-                 assert fname not in includes
 
-                 include = os.path.join(dirpath, fname)
 
-                 assert include.startswith("src/")
 
-                 includes[fname] = include[4:]
 
-     return includes
 
- INCLUDE_PAT = re.compile(r'( *# *include +")([^"]+)(".*)')
 
- def get_base_header_name(hdr):
 
-     return os.path.split(hdr)[1]
 
- def fix_includes(inp, out, mapping):
 
-     for line in inp:
 
-         m = INCLUDE_PAT.match(line)
 
-         if m:
 
-             include,hdr,rest = m.groups()
 
-             basehdr = get_base_header_name(hdr)
 
-             if basehdr in mapping:
 
-                 out.write('{}{}{}\n'.format(include,mapping[basehdr],rest))
 
-                 continue
 
-         out.write(line)
 
- incs = get_include_map()
 
- for dirpath,dirnames,fnames in os.walk("src"):
 
-     exclude(["trunnel"], dirnames)
 
-     for fname in fnames:
 
-         if fname.endswith(".c") or fname.endswith(".h"):
 
-             fname = os.path.join(dirpath, fname)
 
-             tmpfile = fname+".tmp"
 
-             f_in = open(fname, 'r')
 
-             f_out = open(tmpfile, 'w')
 
-             fix_includes(f_in, f_out, incs)
 
-             f_in.close()
 
-             f_out.close()
 
-             os.rename(tmpfile, fname)
 
 
  |