mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-10 21:23:58 +01:00
178b738be0
This will let us move around header files without having to fix up all the include sites manually.
61 lines
1.6 KiB
Python
Executable File
61 lines
1.6 KiB
Python
Executable File
#!/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)
|