#!/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)