diff --git a/contrib/check-code.py b/contrib/check-code.py --- a/contrib/check-code.py +++ b/contrib/check-code.py @@ -133,6 +133,36 @@ checks = [ ('test script', r'(.*/)?test-[^.~]*$', testfilters, testpats), ('c', r'.*\.c$', cfilters, cpats), ] +def checkfile(f): + """checks style and portability of a given file""" + for name, match, filters, pats in checks: + fc = 0 + if not re.match(match, f): + continue + pre = post = open(f).read() + if "no-" + "check-code" in pre: + break + for p, r in filters: + post = re.sub(p, r, post) + # print post # uncomment to show filtered version + z = enumerate(zip(pre.splitlines(), post.splitlines(True))) + for n, l in z: + if "check-code" + "-ignore" in l[0]: + continue + lc = 0 + for p, msg in pats: + if re.search(p, l[1]): + if not lc: + print "%s:%d:" % (f, n + 1) + print " > %s" % l[0] + print " %s" % msg + lc += 1 + fc += 1 + if fc == 15: + print " (too many errors, giving up)" + break + break + if __name__ == "__main__": if len(sys.argv) == 1: @@ -141,30 +171,4 @@ if __name__ == "__main__": check = sys.argv[1:] for f in check: - for name, match, filters, pats in checks: - fc = 0 - if not re.match(match, f): - continue - pre = post = open(f).read() - if "no-" + "check-code" in pre: - break - for p, r in filters: - post = re.sub(p, r, post) - # print post # uncomment to show filtered version - z = enumerate(zip(pre.splitlines(), post.splitlines(True))) - for n, l in z: - if "check-code" + "-ignore" in l[0]: - continue - lc = 0 - for p, msg in pats: - if re.search(p, l[1]): - if not lc: - print "%s:%d:" % (f, n + 1) - print " > %s" % l[0] - print " %s" % msg - lc += 1 - fc += 1 - if fc == 15: - print " (too many errors, giving up)" - break - break + checkfile(f)