/ 5 /
2025-09-28 20:47:03
import re def extract_all_functions(text): pattern = re.compile(r"(\w[\w\s\*]+)\s+(\w+)\s*\([^)]*\)\s*\{.*?\}", re.S) return {m.group(2): m.group(0) for m in pattern.finditer(text)} def transform_function_body(func_body): func_body = func_body.replace("abc", "xyz") return func_body def replace_and_add_functions(src_file, des_file): with open(src_file, "r") as f: src_text = f.read() with open(des_file, "r") as f: des_text = f.read() src_funcs = extract_all_functions(src_text) des_funcs = extract_all_functions(des_text) for f, src_body in src_funcs.items(): if f in des_funcs: if src_body != des_funcs[f]: new_body = transform_function_body(src_body) des_text = new_body + "\n\n" + des_text with open(des_file, "w") as f: f.write(des_text) replace_and_add_functions("src.c", "des.c") import re def extract_functions(text, return_type="void"): pattern = re.compile(r"{0}\s+(\w+)\s*\([^)]*\)\s*\{{.*?\}}".format(return_type), re.S) return {m.group(1): m.group(0) for m in pattern.finditer(text)} def replace_functions(src_file, des_file, func_list): with open(src_file, "r") as f: src_text = f.read() with open(des_file, "r") as f: des_text = f.read() src_funcs = extract_functions(src_text, "void") des_funcs = extract_functions(des_text, "void") for f in func_list: if f in src_funcs and f in des_funcs: print("Replacing function {}".format(f)) des_text = des_text.replace(des_funcs[f], src_funcs[f]) with open(des_file, "w") as f: f.write(des_text) src = "src.c"
des = "des.c"
list_func = ["A", "B"]
replace_functions(src, des, list_func)