mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-13 06:33:44 +01:00
61 lines
1.6 KiB
Python
61 lines
1.6 KiB
Python
|
#!/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(["ext", "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)
|