From 55d6408526214d8ec97aab25a20396944c6d04ad Mon Sep 17 00:00:00 2001 From: wm4 Date: Tue, 31 Jan 2017 14:47:11 +0100 Subject: TOOLS/matroska.py: fix some minor things for dumping TOOLS/matroska.py can be used stand-alone for dumping Matroska file contents. Fix some related issues. Elements were treated as unknown if the element hex ID contained uppercase characters. Unknown elements stopped parsing. This was intentional, but I don't really see any reason for it. Dumping with Python 2 is broken. I don't care, but everytime I hit this, I find myself trying to find out why. So make it error out explicitly. --- TOOLS/matroska.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/TOOLS/matroska.py b/TOOLS/matroska.py index 3f8ebd7dd6..4343a5f56b 100755 --- a/TOOLS/matroska.py +++ b/TOOLS/matroska.py @@ -271,6 +271,7 @@ def parse_elems(l, namespace): for el in l: if isinstance(el, str): name, hexid, eltype = [x.strip() for x in el.split(',')] + hexid = hexid.lower() multiple = name.endswith('*') name = name.strip('*') new = MatroskaElement(name, hexid, eltype, namespace) @@ -400,10 +401,6 @@ def read_float(s, length): def parse_one(s, depth, parent, maxlen): elid = hexlify(read_id(s)).decode('ascii') elem = elementd.get(elid) - if parent is not None and elid not in parent.subids and elid not in ('ec', 'bf'): - print('Unexpected:', elid) - if 1: - raise NotImplementedError size, length = read_vint(s) this_length = len(elid) / 2 + size + length if elem is not None: @@ -442,7 +439,7 @@ def parse_one(s, depth, parent, maxlen): else: raise NotImplementedError else: - print(depth, 'Unknown element:', elid, 'size:', length) + print(" " * depth, '[' + elid + '] Unknown element! size:', length) read(s, length) return this_length @@ -455,6 +452,8 @@ if __name__ == "__main__": elif sys.argv[1] == '--generate-definitions': generate_C_definitions(sys.stdout) else: + if sys.version_info.major < 3: + raise Exception("Dumping requires Python 3.") s = open(sys.argv[1], "rb") while 1: start = s.tell() -- cgit v1.2.3