mirror of
https://github.com/servo/servo.git
synced 2025-08-03 20:50:07 +01:00
fix zip extraction for python 3
This commit is contained in:
parent
c67b3d71e2
commit
4dec35ca87
1 changed files with 15 additions and 0 deletions
|
@ -187,6 +187,21 @@ class ZipFileWithUnixPermissions(zipfile.ZipFile):
|
||||||
os.chmod(extracted, mode)
|
os.chmod(extracted, mode)
|
||||||
return extracted
|
return extracted
|
||||||
|
|
||||||
|
# For Python 3.x
|
||||||
|
def _extract_member(self, member, targetpath, pwd):
|
||||||
|
if sys.version_info[0] >= 3:
|
||||||
|
if not isinstance(member, zipfile.ZipInfo):
|
||||||
|
member = self.getinfo(member)
|
||||||
|
|
||||||
|
targetpath = super()._extract_member(member, targetpath, pwd)
|
||||||
|
|
||||||
|
attr = member.external_attr >> 16
|
||||||
|
if attr != 0:
|
||||||
|
os.chmod(targetpath, attr)
|
||||||
|
return targetpath
|
||||||
|
else:
|
||||||
|
return super(ZipFileWithUnixPermissions, self)._extract_member(member, targetpath, pwd)
|
||||||
|
|
||||||
|
|
||||||
def extract(src, dst, movedir=None, remove=True):
|
def extract(src, dst, movedir=None, remove=True):
|
||||||
assert src.endswith(".zip")
|
assert src.endswith(".zip")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue