#!/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 ", " int prefix##") HERE = os.path.dirname(os.path.abspath(__file__)) KECCAK = os.path.join(HERE, "kcp") 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 */\n", line) line = CPP2.sub(r" /*\1 */\n", 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)