blob: 01cf26521b37796a056eb44cf82bd2c502bb6035 [file] [log] [blame]
Christian Heimes121b9482016-09-06 22:03:25 +02001#!/usr/bin/python3
2
3import os
4import re
5
6HERE = os.path.dirname(os.path.abspath(__file__))
7BLAKE2 = os.path.join(HERE, 'impl')
8
9PUBLIC_SEARCH = re.compile(r'\ int (blake2[bs]p?[a-z_]*)\(')
10
11
12def getfiles():
13 for name in os.listdir(BLAKE2):
14 name = os.path.join(BLAKE2, name)
15 if os.path.isfile(name):
16 yield name
17
18
19def find_public():
20 public_funcs = set()
21 for name in getfiles():
22 with open(name) as f:
23 for line in f:
24 # find public functions
25 mo = PUBLIC_SEARCH.search(line)
26 if mo:
27 public_funcs.add(mo.group(1))
28
29 for f in sorted(public_funcs):
30 print('#define {0:<18} PyBlake2_{0}'.format(f))
31
32 return public_funcs
33
34
35def main():
36 lines = []
37 with open(os.path.join(HERE, 'blake2b_impl.c')) as f:
38 for line in f:
39 line = line.replace('blake2b', 'blake2s')
40 line = line.replace('BLAKE2b', 'BLAKE2s')
41 line = line.replace('BLAKE2B', 'BLAKE2S')
42 lines.append(line)
43 with open(os.path.join(HERE, 'blake2s_impl.c'), 'w') as f:
44 f.write(''.join(lines))
45 # find_public()
46
47
48if __name__ == '__main__':
49 main()