MCPcopy Create free account
hub / github.com/RT-Thread/env-windows / _decodeExtra

Method _decodeExtra

tools/python-3.11.9-amd64/Lib/zipfile.py:493–520  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

491 return self.filename.encode('utf-8'), self.flag_bits | _MASK_UTF_FILENAME
492
493 def _decodeExtra(self):
494 # Try to decode the extra field.
495 extra = self.extra
496 unpack = struct.unpack
497 while len(extra) >= 4:
498 tp, ln = unpack('<HH', extra[:4])
499 if ln+4 > len(extra):
500 raise BadZipFile("Corrupt extra field %04x (size=%d)" % (tp, ln))
501 if tp == 0x0001:
502 data = extra[4:ln+4]
503 # ZIP64 extension (large files and/or large archives)
504 try:
505 if self.file_size in (0xFFFF_FFFF_FFFF_FFFF, 0xFFFF_FFFF):
506 field = "File size"
507 self.file_size, = unpack('<Q', data[:8])
508 data = data[8:]
509 if self.compress_size == 0xFFFF_FFFF:
510 field = "Compress size"
511 self.compress_size, = unpack('<Q', data[:8])
512 data = data[8:]
513 if self.header_offset == 0xFFFF_FFFF:
514 field = "Header offset"
515 self.header_offset, = unpack('<Q', data[:8])
516 except struct.error:
517 raise BadZipFile(f"Corrupt zip64 extra field. "
518 f"{field} not found.") from None
519
520 extra = extra[ln+4:]
521
522 @classmethod
523 def from_file(cls, filename, arcname=None, *, strict_timestamps=True):

Callers 1

_RealGetContentsMethod · 0.95

Calls 2

BadZipFileClass · 0.85
unpackFunction · 0.50

Tested by

no test coverage detected