mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-23 20:03:31 +01:00
Script to replace include paths with full paths under src/
This will let us move around header files without having to fix up all the include sites manually.
This commit is contained in:
parent
d7301a456a
commit
178b738be0
60
scripts/maint/rectify_include_paths.py
Executable file
60
scripts/maint/rectify_include_paths.py
Executable file
@ -0,0 +1,60 @@
|
||||
#!/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)
|
Loading…
Reference in New Issue
Block a user