mame/scripts/build/check_include_guards.py
Vas Crabb 958d52f28b -dynax/dynax.cpp: More I/O improvements:
* Replaced hjingi hopper hack with a hopper device.
* Improved DIP switch labels for mjembase and hooked up hopper.
* Improved a few DIP switch labels for mjelctrn.

-Fixed some more #include guards and added a CI task to check them in
 src/devices and src/mame.
2024-11-28 06:55:14 +11:00

48 lines
1.4 KiB
Python
Executable File

#!/usr/bin/python3
##
## icense:BSD-3-Clause
## copyright-holders:Vas Crabb
import io
import os
import os.path
import re
import sys
def pathsplit(p):
result = [ ]
while p:
d, n = os.path.split(p)
if not n:
result.insert(0, d)
break
else:
result.insert(0, n)
p = d
return result
if __name__ == '__main__':
extpat = re.compile('.+\\.(h|hpp)$')
substpat = re.compile('[-.]')
guardpat = re.compile('^ *# *ifndef +([^\s]+)(\s+.*)?')
bad = False
for root in sys.argv[1:]:
for path, subdirs, files in os.walk(root):
prefix = 'MAME_' + '_'.join([n.upper() for n in pathsplit(os.path.relpath(path, root))]) + '_'
for f in files:
if extpat.match(f):
expected = prefix + substpat.sub('_', f.upper())
fp = os.path.join(path, f)
with io.open(fp, 'r', encoding='utf-8') as fd:
for l in fd:
m = guardpat.match(l)
if m:
if m.group(1) != expected:
sys.stderr.write('%s: #include guard does not appear to match expected %s\n' % (fp, expected))
bad = True
break
if bad:
sys.exit(1)