Skip to content

Commit 6222b12

Browse files
committed
Small update
1 parent 78db394 commit 6222b12

2 files changed

Lines changed: 67 additions & 24 deletions

File tree

pyneofile.py

Lines changed: 34 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9182,7 +9182,7 @@ def CheckCompressionType(infile, formatspecs=__file_format_multi_dict__, filesta
91829182
def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, filestart=0, closefp=True):
91839183
compresscheck = CheckCompressionType(infile, formatspecs, filestart, False)
91849184
curloc = filestart
9185-
if(not compresscheck and not hasattr(infile, "read")):
9185+
if(not compresscheck and isinstance(infile, (str, bytes, os.PathLike))):
91869186
fextname = os.path.splitext(infile)[1]
91879187
if(fextname == ".gz"):
91889188
compresscheck = "gzip"
@@ -9227,34 +9227,52 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
92279227
return "rarfile"
92289228
elif(py7zr_support and compresscheck == "7zipfile" and py7zr.is_7zfile(infile)):
92299229
return "7zipfile"
9230-
if(hasattr(infile, "read") or hasattr(infile, "write")):
9231-
fp = UncompressFileAlt(infile, formatspecs, filestart)
9230+
precfp = None
9231+
if(hasattr(infile, "read") or hasattr(infile, "write") and compresscheck in compressionsupport):
9232+
fp = UncompressFileAlt(infile, formatspecs, filestart, reuse_adapter=False)
9233+
curloc = fp.tell()
9234+
elif(hasattr(infile, "read") or hasattr(infile, "write") and compresscheck not in compressionsupport):
9235+
fp = infile
92329236
else:
92339237
try:
92349238
if(compresscheck == "gzip" and compresscheck in compressionsupport):
9235-
if sys.version_info[0] == 2:
9236-
fp = GzipFile(infile, mode="rb")
9237-
else:
9238-
fp = gzip.GzipFile(infile, "rb")
9239+
precfp = open(infile, "rb")
9240+
precfp.seek(filestart, 0)
9241+
fp = gzip.GzipFile(fileobj=precfp, mode="rb")
9242+
curloc = fp.tell()
92399243
elif(compresscheck == "bzip2" and compresscheck in compressionsupport):
9240-
fp = bz2.BZ2File(infile, "rb")
9244+
precfp = open(infile, "rb")
9245+
precfp.seek(filestart, 0)
9246+
fp = bz2.BZ2File(precfp, "rb")
9247+
curloc = fp.tell()
92419248
elif(compresscheck == "lz4" and compresscheck in compressionsupport):
9242-
fp = lz4.frame.open(infile, "rb")
9249+
precfp = open(infile, "rb")
9250+
precfp.seek(filestart, 0)
9251+
fp = lz4.frame.open(precfp, "rb")
9252+
curloc = fp.tell()
92439253
elif(compresscheck == "zstd" and compresscheck in compressionsupport):
9254+
precfp = open(infile, "rb")
9255+
precfp.seek(filestart, 0)
92449256
if 'zstd' in compressionsupport:
9245-
fp = zstd.ZstdFile(infile, mode="rb")
9257+
fp = zstd.ZstdFile(precfp, mode="rb")
9258+
curloc = fp.tell()
92469259
else:
92479260
return Flase
92489261
elif((compresscheck == "lzma" or compresscheck == "xz") and compresscheck in compressionsupport):
9249-
fp = lzma.open(infile, "rb")
9262+
precfp = open(infile, "rb")
9263+
precfp.seek(filestart, 0)
9264+
fp = lzma.open(precfp, "rb")
9265+
curloc = fp.tell()
92509266
elif(compresscheck == "zlib" and compresscheck in compressionsupport):
92519267
fp = ZlibFile(infile, mode="rb")
9268+
fp.seek(filestart, 0)
9269+
curloc = fp.tell()
92529270
else:
92539271
fp = open(infile, "rb")
92549272
except FileNotFoundError:
92559273
return False
92569274
filetype = False
9257-
fp.seek(filestart, 0)
9275+
fp.seek(curloc, 0)
92589276
prefp = fp.read(5)
92599277
if(prefp == binascii.unhexlify("7573746172")):
92609278
filetype = "tarfile"
@@ -9283,9 +9301,9 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
92839301
formdelszie = len(formatspecs['format_delimiter'])
92849302
formdel = fp.read(formdelszie).decode("UTF-8")
92859303
if(formstring != inheaderver):
9286-
return False
9304+
pass
92879305
if(formdel != formatspecs['format_delimiter']):
9288-
return False
9306+
pass
92899307
filetype = formatspecs['format_magic']
92909308
else:
92919309
pass
@@ -9294,6 +9312,8 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
92949312
if(prefp == binascii.unhexlify("7061785f676c6f62616c")):
92959313
filetype = "tarfile"
92969314
fp.seek(curloc, 0)
9315+
if(hasattr(precfp, "read") or hasattr(precfp, "write")):
9316+
precfp.close()
92979317
if(closefp):
92989318
fp.close()
92999319
return filetype

pyneofile_py3.py

Lines changed: 33 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8498,31 +8498,52 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
84988498
return "rarfile"
84998499
elif(py7zr_support and compresscheck == "7zipfile" and py7zr.is_7zfile(infile)):
85008500
return "7zipfile"
8501-
if(hasattr(infile, "read") or hasattr(infile, "write")):
8502-
fp = UncompressFileAlt(infile, formatspecs, filestart)
8501+
precfp = None
8502+
if(hasattr(infile, "read") or hasattr(infile, "write") and compresscheck in compressionsupport):
8503+
fp = UncompressFileAlt(infile, formatspecs, filestart, reuse_adapter=False)
8504+
curloc = fp.tell()
8505+
elif(hasattr(infile, "read") or hasattr(infile, "write") and compresscheck not in compressionsupport):
8506+
fp = infile
85038507
else:
85048508
try:
85058509
if(compresscheck == "gzip" and compresscheck in compressionsupport):
8506-
fp = gzip.GzipFile(infile, "rb")
8510+
precfp = open(infile, "rb")
8511+
precfp.seek(filestart, 0)
8512+
fp = gzip.GzipFile(fileobj=precfp, mode="rb")
8513+
curloc = fp.tell()
85078514
elif(compresscheck == "bzip2" and compresscheck in compressionsupport):
8508-
fp = bz2.BZ2File(infile, "rb")
8515+
precfp = open(infile, "rb")
8516+
precfp.seek(filestart, 0)
8517+
fp = bz2.BZ2File(precfp, "rb")
8518+
curloc = fp.tell()
85098519
elif(compresscheck == "lz4" and compresscheck in compressionsupport):
8510-
fp = lz4.frame.open(infile, "rb")
8520+
precfp = open(infile, "rb")
8521+
precfp.seek(filestart, 0)
8522+
fp = lz4.frame.open(precfp, "rb")
8523+
curloc = fp.tell()
85118524
elif(compresscheck == "zstd" and compresscheck in compressionsupport):
8525+
precfp = open(infile, "rb")
8526+
precfp.seek(filestart, 0)
85128527
if 'zstd' in compressionsupport:
8513-
fp = zstd.ZstdFile(infile, mode="rb")
8528+
fp = zstd.ZstdFile(precfp, mode="rb")
8529+
curloc = fp.tell()
85148530
else:
85158531
return Flase
85168532
elif((compresscheck == "lzma" or compresscheck == "xz") and compresscheck in compressionsupport):
8517-
fp = lzma.open(infile, "rb")
8533+
precfp = open(infile, "rb")
8534+
precfp.seek(filestart, 0)
8535+
fp = lzma.open(precfp, "rb")
8536+
curloc = fp.tell()
85188537
elif(compresscheck == "zlib" and compresscheck in compressionsupport):
85198538
fp = ZlibFile(infile, mode="rb")
8539+
fp.seek(filestart, 0)
8540+
curloc = fp.tell()
85208541
else:
85218542
fp = open(infile, "rb")
85228543
except FileNotFoundError:
85238544
return False
85248545
filetype = False
8525-
fp.seek(filestart, 0)
8546+
fp.seek(curloc, 0)
85268547
prefp = fp.read(5)
85278548
if(prefp == binascii.unhexlify("7573746172")):
85288549
filetype = "tarfile"
@@ -8551,9 +8572,9 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
85518572
formdelszie = len(formatspecs['format_delimiter'])
85528573
formdel = fp.read(formdelszie).decode("UTF-8")
85538574
if(formstring != inheaderver):
8554-
return False
8575+
pass
85558576
if(formdel != formatspecs['format_delimiter']):
8556-
return False
8577+
pass
85578578
filetype = formatspecs['format_magic']
85588579
else:
85598580
pass
@@ -8562,6 +8583,8 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, file
85628583
if(prefp == binascii.unhexlify("7061785f676c6f62616c")):
85638584
filetype = "tarfile"
85648585
fp.seek(curloc, 0)
8586+
if(hasattr(precfp, "read") or hasattr(precfp, "write")):
8587+
precfp.close()
85658588
if(closefp):
85668589
fp.close()
85678590
return filetype

0 commit comments

Comments
 (0)