| #!/usr/bin/env python |
| # Copyright (C) 2012 Christian Heimes (christian@python.org) |
| # Licensed to PSF under a Contributor Agreement. |
| # |
| # cleanup Keccak sources |
| |
| import os |
| import re |
| |
| CPP1 = re.compile("^//(.*)") |
| CPP2 = re.compile("\ //(.*)") |
| |
| STATICS = ("void ", "int ", "HashReturn ", "const UINT64 ", "UINT16 ") |
| |
| HERE = os.path.dirname(os.path.abspath(__file__)) |
| KECCAK = os.path.join(HERE, "keccak") |
| |
| def getfiles(): |
| for name in os.listdir(KECCAK): |
| name = os.path.join(KECCAK, name) |
| if os.path.isfile(name): |
| yield name |
| |
| def cleanup(f): |
| buf = [] |
| for line in f: |
| # mark all functions and global data as static |
| if line.startswith(STATICS): |
| buf.append("static " + line) |
| continue |
| # remove UINT64 typedef, we have our own |
| if line.startswith("typedef unsigned long long int"): |
| buf.append("/* %s */\n" % line.strip()) |
| continue |
| # remove #include "brg_endian.h" |
| if "brg_endian.h" in line: |
| buf.append("/* %s */\n" % line.strip()) |
| continue |
| # transform C++ comments into ANSI C comments |
| line = CPP1.sub(r"/* \1 */", line) |
| line = CPP2.sub(r" /* \1 */", line) |
| buf.append(line) |
| return "".join(buf) |
| |
| for name in getfiles(): |
| with open(name) as f: |
| res = cleanup(f) |
| with open(name, "w") as f: |
| f.write(res) |