Skip to content

Commit 15e82cb

Browse files
Add files via upload
1 parent 4891727 commit 15e82cb

1 file changed

Lines changed: 24 additions & 11 deletions

File tree

pyfoxfile.py

Lines changed: 24 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5902,35 +5902,48 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
59025902
outfsize = fp.tell()
59035903
fp.seek(filestart, 0)
59045904
currentfilepos = fp.tell()
5905+
if(not isinstance(infile, FileLikeAdapter)):
5906+
5907+
# For uncompressed: optional mmap
5908+
mm = None
5909+
try:
5910+
base = _extract_base_fp(fp)
5911+
if base is not None:
5912+
mm = mmap.mmap(base.fileno(), 0, access=mmap.ACCESS_READ if "r" in mode else mmap.ACCESS_WRITE)
5913+
except Exception:
5914+
mm = None # fallback to normal file stream
5915+
readfp = FileLikeAdapter(fp, mode="rb", mm=mm)
5916+
else:
5917+
readfp = fp
59055918
ArchiveList = []
59065919
while True:
59075920
if currentfilepos >= outfsize: # stop when function signals False
59085921
break
5909-
oldfppos = fp.tell()
5910-
compresscheck = CheckCompressionType(fp, formatspecs, currentfilepos, False)
5922+
oldfppos = readfp.tell()
5923+
compresscheck = CheckCompressionType(readfp, formatspecs, currentfilepos, False)
59115924
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
59125925
pass
59135926
else:
5914-
checkcompressfile = CheckCompressionSubType(fp, formatspecs, currentfilepos, False)
5927+
checkcompressfile = CheckCompressionSubType(readfp, formatspecs, currentfilepos, False)
59155928
if(IsNestedDict(formatspecs) and checkcompressfile in formatspecs):
59165929
pass
59175930
else:
59185931
break
5919-
fp.seek(oldfppos, 0)
5932+
readfp.seek(oldfppos, 0)
59205933
if(compresscheck in formatspecs):
59215934
if currentfilepos >= outfsize: # stop when function signals False
59225935
break
5923-
oldfppos = fp.tell()
5924-
compresscheck = CheckCompressionType(fp, formatspecs, currentfilepos, False)
5936+
oldfppos = readfp.tell()
5937+
compresscheck = CheckCompressionType(readfp, formatspecs, currentfilepos, False)
59255938
if(IsNestedDict(formatspecs) and compresscheck in formatspecs):
59265939
informatspecs = formatspecs[compresscheck]
59275940
else:
59285941
break
5929-
fp.seek(oldfppos, 0)
5930-
ArchiveList.append(ReadFileDataWithContentToArray(fp, currentfilepos, seekstart, seekend, listonly, contentasfile, uncompress, skipchecksum, informatspecs, seektoend))
5931-
currentfilepos = fp.tell()
5942+
readfp.seek(oldfppos, 0)
5943+
ArchiveList.append(ReadFileDataWithContentToArray(readfp, currentfilepos, seekstart, seekend, listonly, contentasfile, uncompress, skipchecksum, informatspecs, seektoend))
5944+
currentfilepos = readfp.tell()
59325945
else:
5933-
infp = UncompressFileAlt(fp, formatspecs, currentfilepos)
5946+
infp = UncompressFileAlt(readfp, formatspecs, currentfilepos)
59345947
infp.seek(0, 0)
59355948
currentinfilepos = infp.tell()
59365949
try:
@@ -5953,7 +5966,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
59535966
infp.seek(oldinfppos, 0)
59545967
ArchiveList.append(ReadFileDataWithContentToArray(infp, currentinfilepos, seekstart, seekend, listonly, contentasfile, uncompress, skipchecksum, informatspecs, seektoend))
59555968
currentinfilepos = infp.tell()
5956-
currentfilepos = fp.tell()
5969+
currentfilepos = readfp.tell()
59575970
return ArchiveList
59585971

59595972

0 commit comments

Comments
 (0)