forked from openkylin/platform_build
Merge "extract-kernel: Fix indexing"
am: 7ca2c1539f
Change-Id: I2e5b85b177f7c941ebb0d4fada4be266d6a2ddae
This commit is contained in:
commit
710d6b1773
|
@ -100,19 +100,25 @@ def dump_configs(input_bytes):
|
|||
return o
|
||||
|
||||
|
||||
def try_decompress(cmd, search_bytes, input_bytes):
|
||||
idx = input_bytes.find(search_bytes)
|
||||
if idx < 0:
|
||||
return None
|
||||
|
||||
idx = 0
|
||||
def try_decompress_bytes(cmd, input_bytes):
|
||||
sp = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
o, _ = sp.communicate(input=input_bytes[idx:])
|
||||
o, _ = sp.communicate(input=input_bytes)
|
||||
# ignore errors
|
||||
return o
|
||||
|
||||
|
||||
def try_decompress(cmd, search_bytes, input_bytes):
|
||||
idx = 0
|
||||
while True:
|
||||
idx = input_bytes.find(search_bytes, idx)
|
||||
if idx < 0:
|
||||
raise StopIteration()
|
||||
|
||||
yield try_decompress_bytes(cmd, input_bytes[idx:])
|
||||
idx += 1
|
||||
|
||||
|
||||
def decompress_dump(func, input_bytes):
|
||||
"""
|
||||
Run func(input_bytes) first; and if that fails (returns value evaluates to
|
||||
|
@ -122,15 +128,15 @@ def decompress_dump(func, input_bytes):
|
|||
if o:
|
||||
return o
|
||||
for cmd, search_bytes in COMPRESSION_ALGO:
|
||||
decompressed = try_decompress(cmd, search_bytes, input_bytes)
|
||||
if decompressed:
|
||||
o = func(decompressed)
|
||||
if o:
|
||||
return o
|
||||
for decompressed in try_decompress(cmd, search_bytes, input_bytes):
|
||||
if decompressed:
|
||||
o = decompress_dump(func, decompressed)
|
||||
if o:
|
||||
return o
|
||||
# Force decompress the whole file even if header doesn't match
|
||||
decompressed = try_decompress(cmd, b"", input_bytes)
|
||||
decompressed = try_decompress_bytes(cmd, input_bytes)
|
||||
if decompressed:
|
||||
o = func(decompressed)
|
||||
o = decompress_dump(func, decompressed)
|
||||
if o:
|
||||
return o
|
||||
|
||||
|
|
Loading…
Reference in New Issue