mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 11:49:12 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable file
		
	
	
	
	
#!/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()
 |