def function_declaration(): tmp_file = '__tmp' for name in all_c_files(): skip_re = re.compile(r'DO NOT EDIT: automatically built') s = open(name, 'r').read() if skip_re.search(s): continue # Read through the file, and for each function, do a style pass over # the local declarations. Quit tracking declarations as soon as we # find anything we don't understand, leaving it untouched. with open(name, 'r') as f: tfile = open(tmp_file, 'w') tracking = False for line in f: if not tracking: tfile.write(line) if re.search('^{$', line): list = [[] for i in range(len(types))] static_list = [[] for i in range(len(types))] tracking = True continue found, n = function_args(name, line) if found: # List statics first. if re.search("^\sstatic", line): static_list[n].append(line) continue # Disallow assignments in the declaration. Ignore braces # to allow automatic array initialization using constant # initializers (and we've already skipped statics, which # are also typically initialized in the declaration). if re.search("\s=\s[-\w]", line): print >>sys.stderr, \ name + ": assignment in string: " + line.strip() sys.exit(1) list[n].append(line) else: # Sort the resulting lines (we don't yet sort declarations # within a single line). It's two passes, first to catch # the statics, then to catch everything else. for arg in filter(None, static_list): for p in sorted(arg, key=function_args_alpha): tfile.write(p) for arg in filter(None, list): for p in sorted(arg, key=function_args_alpha): tfile.write(p) tfile.write(line) tracking = False continue tfile.close() compare_srcfile(tmp_file, name)
def function_declaration(): tmp_file = '__tmp' for name in all_c_files(): skip_re = re.compile(r'DO NOT EDIT: automatically built') s = open(name, 'r').read() if skip_re.search(s): continue # Read through the file, and for each function, do a style pass over # the local declarations. Quit tracking declarations as soon as we # find anything we don't understand, leaving it untouched. with open(name, 'r') as f: tfile = open(tmp_file, 'w') tracking = False for line in f: if not tracking: tfile.write(line) if re.search('^{$', line): list = [[] for i in range(len(types))] static_list = [[] for i in range(len(types))] tracking = True; continue found,n = function_args(name, line) if found: # List statics first. if re.search("^\sstatic", line): static_list[n].append(line) continue # Disallow assignments in the declaration. Ignore braces # to allow automatic array initialization using constant # initializers (and we've already skipped statics, which # are also typically initialized in the declaration). if re.search("\s=\s[-\w]", line): print >>sys.stderr, \ name + ": assignment in string: " + line.strip() sys.exit(1); list[n].append(line) else: # Sort the resulting lines (we don't yet sort declarations # within a single line). It's two passes, first to catch # the statics, then to catch everything else. for arg in filter(None, static_list): for p in sorted(arg, key=function_args_alpha): tfile.write(p) for arg in filter(None, list): for p in sorted(arg, key=function_args_alpha): tfile.write(p) tfile.write(line) tracking = False continue tfile.close() compare_srcfile(tmp_file, name)
def missing_comment(): for f in all_c_files(): skip_re = re.compile(r'DO NOT EDIT: automatically built') func_re = re.compile(r'(/\*(?:[^\*]|\*[^/])*\*/)?\n\w[\w \*]+\n(\w+)', re.DOTALL) s = open(f, 'r').read() if skip_re.search(s): continue for m in func_re.finditer(s): if not m.group(1) or \ not m.group(1).startswith('/*\n * %s --\n' % m.group(2)): print("%s:%d: missing or malformed comment for %s" % \ (f, s[:m.start(2)].count('\n'), m.group(2)))
def function_declaration(): tmp_file = '__tmp' for name in all_c_files(): skip_re = re.compile(r'DO NOT EDIT: automatically built') s = open(name, 'r').read() if skip_re.search(s): continue # Read through the file, and for each function, do a style pass over # the local declarations. Quit tracking declarations as soon as we # find anything we don't understand, leaving it untouched. with open(name, 'r') as f: tfile = open(tmp_file, 'w') tracking = False for line in f: if not tracking: tfile.write(line) if re.search('^{$', line): r = [[] for i in range(len(types))] tracking = True continue found, n = function_args(line) if found: r[n].append(line) else: # Sort the resulting lines (we don't yet sort declarations # within a single line). for arg in filter(None, r): for p in sorted(arg, key=function_args_alpha): tfile.write(p) tfile.write(line) tracking = False continue tfile.close() compare_srcfile(tmp_file, name)
tfile.write(header) v = 1 << start for d in sorted(defines): tfile.write(re.sub("0x[01248u]*", fmt % v, d)) v = v * 2 tfile.write(line) parsing = False start = 0 stopped = line continue elif parsing and line.find('#define') == -1: print(name + ": line " + str(lcnt) +\ ": unexpected flag line, no #define", file=sys.stderr) sys.exit(1) elif parsing: defines.append(line) else: tfile.write(line) stopped = '' tfile.close() compare_srcfile(tmp_file, name) # Update function argument declarations. for name in all_h_files(): flag_declare(name) for name in all_c_files(): flag_declare(name)
sys.exit(1) # Calculate number of hex bytes, create format string fmt = "0x%%0%dxu" % ((len(defines) + 3) / 4) tfile.write(header) v = 1 for d in sorted(defines): tfile.write(re.sub("0x[01248u]*", fmt % v, d)) v = v * 2 tfile.write(line) parsing = False elif parsing and line.find('#define') == -1: print >>sys.stderr, name + ": line " +\ str(lcnt) + ": unexpected flag line, no #define" sys.exit(1) elif parsing: defines.append(line) else: tfile.write(line) tfile.close() compare_srcfile(tmp_file, name) # Update function argument declarations. for name in all_h_files(): flag_declare(name) for name in all_c_files(): flag_declare(name)