Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0bf992ee authored by Kelvin Zhang's avatar Kelvin Zhang
Browse files

Use python based unzip function for portability

Bug: 283033491
Test: th
(cherry picked from https://android-review.googlesource.com/q/commit:7c9205b008002c41880241e866ad4b5438112439)
Merged-In: Ief86b55c1d4a14220a0fb593c583a721d59cf86c
Change-Id: Ief86b55c1d4a14220a0fb593c583a721d59cf86c
parent de4f132b
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -2112,20 +2112,19 @@ def UnzipToDir(filename, dirname, patterns=None):
        archvie. Non-matching patterns will be filtered out. If there's no match
        after the filtering, no file will be unzipped.
  """
  cmd = ["unzip", "-o", "-q", filename, "-d", dirname]
  if patterns is not None:
  with zipfile.ZipFile(filename, allowZip64=True, mode="r") as input_zip:
    # Filter out non-matching patterns. unzip will complain otherwise.
    with zipfile.ZipFile(filename, allowZip64=True) as input_zip:
    if patterns is not None:
      names = input_zip.namelist()
    filtered = [
        pattern for pattern in patterns if fnmatch.filter(names, pattern)]
      filtered = [name for name in names if any(
          [fnmatch.fnmatch(name, p) for p in patterns])]

      # There isn't any matching files. Don't unzip anything.
      if not filtered:
        return
    cmd.extend(filtered)

  RunAndCheckOutput(cmd)
      input_zip.extractall(dirname, filtered)
    else:
      input_zip.extractall(dirname)


def UnzipTemp(filename, patterns=None):