1#!/usr/bin/env python 2# Copyright (C) 2012 Christian Heimes (christian@python.org) 3# Licensed to PSF under a Contributor Agreement. 4# 5# cleanup Keccak sources 6 7import os 8import re 9 10CPP1 = re.compile("^//(.*)") 11CPP2 = re.compile(r"\ //(.*)") 12 13STATICS = ("void ", "int ", "HashReturn ", 14 "const UINT64 ", "UINT16 ", " int prefix##") 15 16HERE = os.path.dirname(os.path.abspath(__file__)) 17KECCAK = os.path.join(HERE, "kcp") 18 19def getfiles(): 20 for name in os.listdir(KECCAK): 21 name = os.path.join(KECCAK, name) 22 if os.path.isfile(name): 23 yield name 24 25def cleanup(f): 26 buf = [] 27 for line in f: 28 # mark all functions and global data as static 29 #if line.startswith(STATICS): 30 # buf.append("static " + line) 31 # continue 32 # remove UINT64 typedef, we have our own 33 if line.startswith("typedef unsigned long long int"): 34 buf.append("/* %s */\n" % line.strip()) 35 continue 36 ## remove #include "brg_endian.h" 37 if "brg_endian.h" in line: 38 buf.append("/* %s */\n" % line.strip()) 39 continue 40 # transform C++ comments into ANSI C comments 41 line = CPP1.sub(r"/*\1 */\n", line) 42 line = CPP2.sub(r" /*\1 */\n", line) 43 buf.append(line) 44 return "".join(buf) 45 46for name in getfiles(): 47 with open(name) as f: 48 res = cleanup(f) 49 with open(name, "w") as f: 50 f.write(res) 51