mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
a10d4adc25
For scripts that work with python2, use /usr/bin/python. Otherwise, use /usr/bin/env python3. Fixes bug 29913; bugfix on 0.2.5.3-alpha.
61 lines
1.6 KiB
Python
Executable File
61 lines
1.6 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
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)
|