You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
#!/usr/bin/env python |
|
|
|
import re, sys, operator, os |
|
|
|
code_line = re.compile("^\s*\d+:/") |
|
frame_line = re.compile("^\s*\d+\s+/\* frame size = (\d+) \*/") |
|
|
|
class frame(object): |
|
def __init__(self, code, frame_size): |
|
self.code = code |
|
self.frame_size = int(frame_size) |
|
|
|
frames = [] |
|
|
|
def process_lst(filename): |
|
'''process one lst file''' |
|
last_code = '' |
|
h = open(filename, mode='r') |
|
for line in h: |
|
if code_line.match(line): |
|
last_code = line.strip() |
|
elif frame_line.match(line): |
|
frames.append(frame(last_code, frame_line.match(line).group(1))) |
|
h.close() |
|
|
|
if len(sys.argv) > 1: |
|
dname = sys.argv[1] |
|
else: |
|
dname = '.' |
|
|
|
for root, dirs, files in os.walk(dname): |
|
for f in files: |
|
if f.endswith(".lst"): |
|
process_lst(os.path.join(root, f)) |
|
|
|
sorted_frames = sorted(frames, |
|
key=operator.attrgetter('frame_size'), |
|
reverse=True) |
|
|
|
print("FrameSize Code") |
|
for frame in sorted_frames: |
|
if frame.frame_size > 0: |
|
print("%9u %s" % (frame.frame_size, frame.code)) |
|
|
|
|