X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=firmware%2Fkingst-la%2Fsigrok-fwextract-kingst-la2016;fp=firmware%2Fkingst-la%2Fsigrok-fwextract-kingst-la2016;h=d69071903c25c92bc2c911d49ffccc1d29fd51c8;hb=249b79d0a94e9ac4ec96533bf3108e2a50e6b38d;hp=0bcf9bf9d501edf8b7bf4a3743894a9087931898;hpb=64859badb1221edccb103b6eadfbda9e760ed9a9;p=sigrok-util.git diff --git a/firmware/kingst-la/sigrok-fwextract-kingst-la2016 b/firmware/kingst-la/sigrok-fwextract-kingst-la2016 index 0bcf9bf..d690719 100755 --- a/firmware/kingst-la/sigrok-fwextract-kingst-la2016 +++ b/firmware/kingst-la/sigrok-fwextract-kingst-la2016 @@ -39,6 +39,9 @@ parseelf = importlib.util.module_from_spec(spec) spec.loader.exec_module(parseelf) class qt_resources(object): + RCCFileInfo_Compressed = 0x01 + RCCFileInfo_Directory = 0x02 + def __init__(self, program): self._elf = parseelf.elf(program) self._elf_sections = {} # idx -> data @@ -75,7 +78,6 @@ class qt_resources(object): return self._res_datas[offset:offset + length] def _read_resources(self): - RCCFileInfo_Directory = 0x02 def read_table(): table = [] offset = 0 @@ -83,7 +85,7 @@ class qt_resources(object): name_offset, flags = struct.unpack(">IH", self._res_struct[offset:offset+4+2]) offset += 6 name = self._get_resource_name(name_offset) - if flags & RCCFileInfo_Directory: + if flags & self.RCCFileInfo_Directory: child_count, first_child_offset = struct.unpack(">II", self._res_struct[offset:offset + 4 + 4]) offset += 4 + 4 table.append((name, flags, child_count, first_child_offset)) @@ -94,13 +96,13 @@ class qt_resources(object): return table def read_dir_entries(table, which, parents=[]): name, flags = which[:2] - if not flags & RCCFileInfo_Directory: + if not flags & self.RCCFileInfo_Directory: raise Exception("not a directory!") child_count, first_child = which[2:] for i in range(child_count): child = table[first_child + i] flags = child[1] - if flags & RCCFileInfo_Directory: + if flags & self.RCCFileInfo_Directory: read_dir_entries(table, child, parents + [child[0]]) else: country, language, data_offset = child[2:] @@ -118,11 +120,10 @@ class qt_resources(object): read_dir_entries(table, table[0]) def get_resource(self, res_fn): - RCCFileInfo_Compressed = 1 offset = self._resources[res_fn] flags = self._resource_flags[res_fn] data = self._get_resource_data(offset) - if flags & RCCFileInfo_Compressed: + if flags & self.RCCFileInfo_Compressed: data = zlib.decompress(data[4:]) return data