blob: 17c56b34b261abd5d50869911e75af4145cd76c2 [file] [log] [blame]
Christian Heimes6fe2a752016-09-07 11:58:24 +02001#!/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("\ //(.*)")
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)