Open (if necessary) filename, and read the magic.
(fname # type: Union[IO[bytes], str]
)
| 1380 | |
| 1381 | @staticmethod |
| 1382 | def open(fname # type: Union[IO[bytes], str] |
| 1383 | ): |
| 1384 | # type: (...) -> Tuple[str, _ByteStream, bytes] |
| 1385 | """Open (if necessary) filename, and read the magic.""" |
| 1386 | if isinstance(fname, str): |
| 1387 | filename = fname |
| 1388 | fdesc = open(filename, "rb") # type: _ByteStream |
| 1389 | magic = fdesc.read(2) |
| 1390 | if magic == b"\x1f\x8b": |
| 1391 | # GZIP header detected. |
| 1392 | fdesc.seek(0) |
| 1393 | fdesc = gzip.GzipFile(fileobj=fdesc) |
| 1394 | magic = fdesc.read(2) |
| 1395 | magic += fdesc.read(2) |
| 1396 | else: |
| 1397 | fdesc = fname |
| 1398 | filename = getattr(fdesc, "name", "No name") |
| 1399 | magic = fdesc.read(4) |
| 1400 | return filename, fdesc, magic |
| 1401 | |
| 1402 | |
| 1403 | class RawPcapReader(metaclass=PcapReader_metaclass): |