| #!/usr/bin/python3 | |
| import os | |
| import re | |
| HERE = os.path.dirname(os.path.abspath(__file__)) | |
| BLAKE2 = os.path.join(HERE, 'impl') | |
| PUBLIC_SEARCH = re.compile(r'\ int (blake2[bs]p?[a-z_]*)\(') | |
| def getfiles(): | |
| for name in os.listdir(BLAKE2): | |
| name = os.path.join(BLAKE2, name) | |
| if os.path.isfile(name): | |
| yield name | |
| def find_public(): | |
| public_funcs = set() | |
| for name in getfiles(): | |
| with open(name) as f: | |
| for line in f: | |
| # find public functions | |
| mo = PUBLIC_SEARCH.search(line) | |
| if mo: | |
| public_funcs.add(mo.group(1)) | |
| for f in sorted(public_funcs): | |
| print('#define {0:<18} PyBlake2_{0}'.format(f)) | |
| return public_funcs | |
| def main(): | |
| lines = [] | |
| with open(os.path.join(HERE, 'blake2b_impl.c')) as f: | |
| for line in f: | |
| line = line.replace('blake2b', 'blake2s') | |
| line = line.replace('BLAKE2b', 'BLAKE2s') | |
| line = line.replace('BLAKE2B', 'BLAKE2S') | |
| lines.append(line) | |
| with open(os.path.join(HERE, 'blake2s_impl.c'), 'w') as f: | |
| f.write(''.join(lines)) | |
| # find_public() | |
| if __name__ == '__main__': | |
| main() |