| 
									
										
										
										
											2016-09-07 11:58:24 +02:00
										 |  |  | #!/usr/bin/env python | 
					
						
							|  |  |  | # Copyright (C) 2012   Christian Heimes (christian@python.org) | 
					
						
							|  |  |  | # Licensed to PSF under a Contributor Agreement. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # cleanup Keccak sources | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import os | 
					
						
							|  |  |  | import re | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | CPP1 = re.compile("^//(.*)") | 
					
						
							| 
									
										
										
										
											2019-01-02 20:26:57 +01:00
										 |  |  | CPP2 = re.compile(r"\ //(.*)") | 
					
						
							| 
									
										
										
										
											2016-09-07 11:58:24 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | STATICS = ("void ", "int ", "HashReturn ", | 
					
						
							|  |  |  |            "const UINT64 ", "UINT16 ", "    int prefix##") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | HERE = os.path.dirname(os.path.abspath(__file__)) | 
					
						
							|  |  |  | KECCAK = os.path.join(HERE, "kcp") | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def getfiles(): | 
					
						
							|  |  |  |     for name in os.listdir(KECCAK): | 
					
						
							|  |  |  |         name = os.path.join(KECCAK, name) | 
					
						
							|  |  |  |         if os.path.isfile(name): | 
					
						
							|  |  |  |             yield name | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def cleanup(f): | 
					
						
							|  |  |  |     buf = [] | 
					
						
							|  |  |  |     for line in f: | 
					
						
							|  |  |  |         # mark all functions and global data as static | 
					
						
							|  |  |  |         #if line.startswith(STATICS): | 
					
						
							|  |  |  |         #    buf.append("static " + line) | 
					
						
							|  |  |  |         #    continue | 
					
						
							|  |  |  |         # remove UINT64 typedef, we have our own | 
					
						
							|  |  |  |         if line.startswith("typedef unsigned long long int"): | 
					
						
							|  |  |  |             buf.append("/* %s */\n" % line.strip()) | 
					
						
							|  |  |  |             continue | 
					
						
							|  |  |  |         ## remove #include "brg_endian.h" | 
					
						
							|  |  |  |         if "brg_endian.h" in line: | 
					
						
							|  |  |  |             buf.append("/* %s */\n" % line.strip()) | 
					
						
							|  |  |  |             continue | 
					
						
							|  |  |  |         # transform C++ comments into ANSI C comments | 
					
						
							|  |  |  |         line = CPP1.sub(r"/*\1 */\n", line) | 
					
						
							|  |  |  |         line = CPP2.sub(r" /*\1 */\n", line) | 
					
						
							|  |  |  |         buf.append(line) | 
					
						
							|  |  |  |     return "".join(buf) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | for name in getfiles(): | 
					
						
							|  |  |  |     with open(name) as f: | 
					
						
							|  |  |  |         res = cleanup(f) | 
					
						
							|  |  |  |     with open(name, "w") as f: | 
					
						
							|  |  |  |         f.write(res) |