Skip to content

Commit 57c4f47

Browse files
committed
Update pyfoxfile.py
1 parent bca08a3 commit 57c4f47

1 file changed

Lines changed: 44 additions & 46 deletions

File tree

pyfoxfile.py

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -795,7 +795,7 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
795795
if(platform.python_implementation() != ""):
796796
py_implementation = platform.python_implementation()
797797
if(platform.python_implementation() == ""):
798-
py_implementation = "Python"
798+
py_implementation = "CPython"
799799
geturls_ua_pyfile_python_alt = "Mozilla/5.0 ({osver}; {archtype}; +{prourl}) {pyimp}/{pyver} (KHTML, like Gecko) {proname}/{prover}".format(osver=platform.system(
800800
)+" "+platform.release(), archtype=platform.machine(), prourl=__project_url__, pyimp=py_implementation, pyver=platform.python_version(), proname=__project__, prover=__version__)
801801
geturls_ua_googlebot_google = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
@@ -3682,7 +3682,7 @@ def GetHeaderChecksum(inlist=None, checksumtype="md5", encodedata=True, formatsp
36823682

36833683
return "0"
36843684

3685-
def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3685+
def GetFileChecksum(inbytes, checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
36863686
"""
36873687
Accepts bytes/str/file-like.
36883688
- Hashlib algos: streamed in 1 MiB chunks.
@@ -3692,12 +3692,12 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
36923692
algo_key = (checksumtype or "md5").lower()
36933693

36943694
# file-like streaming
3695-
if hasattr(instr, "read"):
3695+
if hasattr(inbytes, "read"):
36963696
# hashlib
36973697
if CheckSumSupport(algo_key, hashlib_guaranteed):
36983698
h = hashlib.new(algo_key)
36993699
while True:
3700-
chunk = instr.read(1 << 20)
3700+
chunk = inbytes.read(1 << 20)
37013701
if not chunk:
37023702
break
37033703
if not isinstance(chunk, (bytes, bytearray, memoryview)):
@@ -3706,11 +3706,11 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
37063706
return h.hexdigest().lower()
37073707

37083708
# not known streaming algo: fallback to one-shot bytes
3709-
data = instr.read()
3709+
data = inbytes.read()
37103710
if not isinstance(data, (bytes, bytearray, memoryview)):
37113711
data = bytes(bytearray(data))
37123712
else:
3713-
data = _to_bytes(instr) if (encodedata or not isinstance(instr, (bytes, bytearray, memoryview))) else instr
3713+
data = _to_bytes(inbytes) if (encodedata or not isinstance(inbytes, (bytes, bytearray, memoryview))) else inbytes
37143714
data = bytes(data)
37153715

37163716
# one-shot
@@ -3758,7 +3758,7 @@ def GetHeaderChecksum(inlist=None, checksumtype="md5", encodedata=True, formatsp
37583758

37593759
return "0"
37603760

3761-
def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3761+
def GetFileChecksum(inbytes, checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
37623762
"""
37633763
Accepts bytes/str/file-like.
37643764
- Hashlib algos: streamed in 1 MiB chunks.
@@ -3768,12 +3768,12 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
37683768
algo_key = (checksumtype or "md5").lower()
37693769

37703770
# file-like streaming
3771-
if hasattr(instr, "read"):
3771+
if hasattr(inbytes, "read"):
37723772
# hashlib
37733773
if CheckSumSupport(algo_key, hashlib_guaranteed):
37743774
h = hashlib.new(algo_key)
37753775
while True:
3776-
chunk = instr.read(1 << 20)
3776+
chunk = inbytes.read(1 << 20)
37773777
if not chunk:
37783778
break
37793779
if not isinstance(chunk, (bytes, bytearray, memoryview)):
@@ -3782,11 +3782,11 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
37823782
return h.hexdigest().lower()
37833783

37843784
# not known streaming algo: fallback to one-shot bytes
3785-
data = instr.read()
3785+
data = inbytes.read()
37863786
if not isinstance(data, (bytes, bytearray, memoryview)):
37873787
data = bytes(bytearray(data))
37883788
else:
3789-
data = _to_bytes(instr) if (encodedata or not isinstance(instr, (bytes, bytearray, memoryview))) else instr
3789+
data = _to_bytes(inbytes) if (encodedata or not isinstance(inbytes, (bytes, bytearray, memoryview))) else inbytes
37903790
data = bytes(data)
37913791

37923792
# one-shot
@@ -3863,12 +3863,12 @@ def GetHeaderChecksum(inlist=[], checksumtype="md5", encodedata=True, formatspec
38633863
return format(0, 'x').lower()
38643864

38653865

3866-
def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3867-
if encodedata and hasattr(instr, "encode"):
3868-
instr = instr.encode('UTF-8')
3866+
def GetFileChecksum(inbytes, checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3867+
if encodedata and hasattr(inbytes, "encode"):
3868+
inbytes = inbytes.encode('UTF-8')
38693869
if CheckSumSupport(checksumtype, hashlib_guaranteed):
38703870
checksumoutstr = hashlib.new(checksumtype)
3871-
checksumoutstr.update(instr)
3871+
checksumoutstr.update(inbytes)
38723872
return checksumoutstr.hexdigest().lower()
38733873
return format(0, 'x').lower()
38743874

@@ -4484,7 +4484,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
44844484
cfcontents.close()
44854485
fcontents.seek(0, 0)
44864486
fccs = GetFileChecksum(
4487-
fcontents, HeaderOut[-3].lower(), False, formatspecs)
4487+
fcontents.read(), HeaderOut[-3].lower(), False, formatspecs)
44884488
fcontentend = fp.tell()
44894489
if(re.findall("^\\+([0-9]+)", fseeknextfile)):
44904490
fseeknextasnum = int(fseeknextfile.replace("+", ""))
@@ -4702,9 +4702,7 @@ def ReadFileDataWithContent(fp, filestart=0, listonly=False, uncompress=True, sk
47024702
curloc = filestart
47034703
try:
47044704
fp.seek(0, 2)
4705-
except OSError:
4706-
SeekToEndOfFile(fp)
4707-
except ValueError:
4705+
except (OSError, ValueError):
47084706
SeekToEndOfFile(fp)
47094707
CatSize = fp.tell()
47104708
CatSizeEnd = CatSize
@@ -4753,9 +4751,7 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
47534751
curloc = filestart
47544752
try:
47554753
fp.seek(0, 2)
4756-
except OSError:
4757-
SeekToEndOfFile(fp)
4758-
except ValueError:
4754+
except (OSError, ValueError):
47594755
SeekToEndOfFile(fp)
47604756
CatSize = fp.tell()
47614757
CatSizeEnd = CatSize
@@ -4774,8 +4770,8 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
47744770
else:
47754771
inheader = ReadFileHeaderDataWoSize(
47764772
fp, formatspecs['format_delimiter'])
4777-
fnumextrafieldsize = int(inheader[5], 16)
4778-
fnumextrafields = int(inheader[6], 16)
4773+
fnumextrafieldsize = int(inheader[6], 16)
4774+
fnumextrafields = int(inheader[7], 16)
47794775
fextrafieldslist = []
47804776
extrastart = 7
47814777
extraend = extrastart + fnumextrafields
@@ -4796,7 +4792,8 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
47964792
fnumfields = int(inheader[1], 16)
47974793
fhencoding = inheader[2]
47984794
fostype = inheader[3]
4799-
fnumfiles = int(inheader[4], 16)
4795+
fpythontype = inheader[4]
4796+
fnumfiles = int(inheader[5], 16)
48004797
fprechecksumtype = inheader[-2]
48014798
fprechecksum = inheader[-1]
48024799
headercheck = ValidateHeaderChecksum([formstring] + inheader[:-1], fprechecksumtype, fprechecksum, formatspecs)
@@ -4809,7 +4806,7 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
48094806
return False
48104807
formversions = re.search('(.*?)(\\d+)', formstring).groups()
48114808
fcompresstype = ""
4812-
outlist = {'fnumfiles': fnumfiles, 'ffilestart': filestart, 'fformat': formversions[0], 'fcompression': fcompresstype, 'fencoding': fhencoding, 'fversion': formversions[1], 'fostype': fostype, 'fheadersize': fheadsize, 'fsize': CatSizeEnd, 'fnumfields': fnumfields + 2, 'fformatspecs': formatspecs, 'fchecksumtype': fprechecksumtype, 'fheaderchecksum': fprechecksum, 'frawheader': [formstring] + inheader, 'fextrafields': fnumextrafields, 'fextrafieldsize': fnumextrafieldsize, 'fextradata': fextrafieldslist, 'ffilelist': []}
4809+
outlist = {'fnumfiles': fnumfiles, 'ffilestart': filestart, 'fformat': formversions[0], 'fcompression': fcompresstype, 'fencoding': fhencoding, 'fversion': formversions[1], 'fostype': fostype, 'fimptype': fpythontype, 'fheadersize': fheadsize, 'fsize': CatSizeEnd, 'fnumfields': fnumfields + 2, 'fformatspecs': formatspecs, 'fchecksumtype': fprechecksumtype, 'fheaderchecksum': fprechecksum, 'frawheader': [formstring] + inheader, 'fextrafields': fnumextrafields, 'fextrafieldsize': fnumextrafieldsize, 'fextradata': fextrafieldslist, 'ffilelist': []}
48134810
if (seekstart < 0) or (seekstart > fnumfiles):
48144811
seekstart = 0
48154812
if (seekend == 0) or (seekend > fnumfiles) or (seekend < seekstart):
@@ -4910,7 +4907,7 @@ def ReadFileDataWithContentToList(fp, filestart=0, seekstart=0, seekend=0, listo
49104907
curloc = filestart
49114908
try:
49124909
fp.seek(0, 2)
4913-
except (ValueError, OSError):
4910+
except (OSError, ValueError):
49144911
SeekToEndOfFile(fp)
49154912
CatSize = fp.tell()
49164913
CatSizeEnd = CatSize
@@ -5067,7 +5064,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50675064
fp = infile
50685065
try:
50695066
fp.seek(0, 2)
5070-
except (ValueError, OSError):
5067+
except (OSError, ValueError):
50715068
SeekToEndOfFile(fp)
50725069
outfsize = fp.tell()
50735070
fp.seek(filestart, 0)
@@ -5077,7 +5074,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50775074
shutil.copyfileobj(PY_STDIN_BUF, fp, length=__filebuff_size__)
50785075
try:
50795076
fp.seek(0, 2)
5080-
except (ValueError, OSError):
5077+
except (OSError, ValueError):
50815078
SeekToEndOfFile(fp)
50825079
outfsize = fp.tell()
50835080
fp.seek(filestart, 0)
@@ -5087,7 +5084,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50875084
fp.write(infile)
50885085
try:
50895086
fp.seek(0, 2)
5090-
except (ValueError, OSError):
5087+
except (OSError, ValueError):
50915088
SeekToEndOfFile(fp)
50925089
outfsize = fp.tell()
50935090
fp.seek(filestart, 0)
@@ -5096,15 +5093,15 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50965093
fp = download_file_from_internet_file(infile)
50975094
try:
50985095
fp.seek(0, 2)
5099-
except (ValueError, OSError):
5096+
except (OSError, ValueError):
51005097
SeekToEndOfFile(fp)
51015098
outfsize = fp.tell()
51025099
fp.seek(filestart, 0)
51035100
currentfilepos = fp.tell()
51045101
elif(isinstance(infile, FileLikeAdapter)):
51055102
try:
51065103
fp.seek(0, 2)
5107-
except (ValueError, OSError):
5104+
except (OSError, ValueError):
51085105
SeekToEndOfFile(fp)
51095106
outfsize = fp.tell()
51105107
fp.seek(filestart, 0)
@@ -5114,7 +5111,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
51145111
fp = open(infile, "rb")
51155112
try:
51165113
fp.seek(0, 2)
5117-
except (ValueError, OSError):
5114+
except (OSError, ValueError):
51185115
SeekToEndOfFile(fp)
51195116
outfsize = fp.tell()
51205117
fp.seek(filestart, 0)
@@ -5165,7 +5162,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
51655162
currentinfilepos = infp.tell()
51665163
try:
51675164
infp.seek(0, 2)
5168-
except (ValueError, OSError):
5165+
except (OSError, ValueError):
51695166
SeekToEndOfFile(infp)
51705167
outinfsize = infp.tell()
51715168
infp.seek(currentinfilepos, 0)
@@ -5204,7 +5201,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52045201
fp = infile
52055202
try:
52065203
fp.seek(0, 2)
5207-
except (ValueError, OSError):
5204+
except (OSError, ValueError):
52085205
SeekToEndOfFile(fp)
52095206
outfsize = fp.tell()
52105207
fp.seek(filestart, 0)
@@ -5214,7 +5211,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52145211
shutil.copyfileobj(PY_STDIN_BUF, fp, length=__filebuff_size__)
52155212
try:
52165213
fp.seek(0, 2)
5217-
except (ValueError, OSError):
5214+
except (OSError, ValueError):
52185215
SeekToEndOfFile(fp)
52195216
outfsize = fp.tell()
52205217
fp.seek(filestart, 0)
@@ -5224,7 +5221,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52245221
fp.write(infile)
52255222
try:
52265223
fp.seek(0, 2)
5227-
except (ValueError, OSError):
5224+
except (OSError, ValueError):
52285225
SeekToEndOfFile(fp)
52295226
outfsize = fp.tell()
52305227
fp.seek(filestart, 0)
@@ -5233,15 +5230,15 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52335230
fp = download_file_from_internet_file(infile)
52345231
try:
52355232
fp.seek(0, 2)
5236-
except (ValueError, OSError):
5233+
except (OSError, ValueError):
52375234
SeekToEndOfFile(fp)
52385235
outfsize = fp.tell()
52395236
fp.seek(filestart, 0)
52405237
currentfilepos = fp.tell()
52415238
elif(isinstance(infile, FileLikeAdapter)):
52425239
try:
52435240
fp.seek(0, 2)
5244-
except (ValueError, OSError):
5241+
except (OSError, ValueError):
52455242
SeekToEndOfFile(fp)
52465243
outfsize = fp.tell()
52475244
fp.seek(filestart, 0)
@@ -5251,7 +5248,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52515248
fp = open(infile, "rb")
52525249
try:
52535250
fp.seek(0, 2)
5254-
except (ValueError, OSError):
5251+
except (OSError, ValueError):
52555252
SeekToEndOfFile(fp)
52565253
outfsize = fp.tell()
52575254
fp.seek(filestart, 0)
@@ -5302,7 +5299,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
53025299
currentinfilepos = infp.tell()
53035300
try:
53045301
infp.seek(0, 2)
5305-
except (ValueError, OSError):
5302+
except (OSError, ValueError):
53065303
SeekToEndOfFile(infp)
53075304
outinfsize = infp.tell()
53085305
infp.seek(currentinfilepos, 0)
@@ -5443,11 +5440,11 @@ def AppendFileHeader(fp,
54435440

54445441
# Preserve your original "tmpoutlen" computation exactly
54455442
tmpoutlist = [extrasizelen, extrafields] # you used this as a separate list
5446-
tmpoutlen = 3 + len(tmpoutlist) + len(xlist) + 2
5443+
tmpoutlen = 4 + len(tmpoutlist) + len(xlist) + 2
54475444
tmpoutlenhex = _hex_lower(tmpoutlen)
54485445

54495446
# Serialize the first group
5450-
fnumfilesa = AppendNullBytes([tmpoutlenhex, fencoding, platform.system(), fnumfiles_hex], delimiter)
5447+
fnumfilesa = AppendNullBytes([tmpoutlenhex, fencoding, platform.system(), py_implementation, fnumfiles_hex], delimiter)
54515448
# Append tmpoutlist
54525449
fnumfilesa += AppendNullBytes(tmpoutlist, delimiter)
54535450
# Append extradata items if any
@@ -9420,16 +9417,17 @@ def FoxFileValidate(infile, fmttype="auto", filestart=0,
94209417
else:
94219418
inheader = ReadFileHeaderDataWoSize(fp, formatspecs['format_delimiter'])
94229419

9423-
fnumextrafieldsize = int(inheader[5], 16)
9424-
fnumextrafields = int(inheader[6], 16)
9420+
fnumextrafieldsize = int(inheader[6], 16)
9421+
fnumextrafields = int(inheader[7], 16)
94259422
extrastart = 7
94269423
extraend = extrastart + fnumextrafields
94279424
formversion = re.findall("([\\d]+)", formstring)
94289425
fheadsize = int(inheader[0], 16)
94299426
fnumfields = int(inheader[1], 16)
94309427
fhencoding = inheader[2]
94319428
fostype = inheader[3]
9432-
fnumfiles = int(inheader[4], 16)
9429+
fpythontype = inheader[4]
9430+
fnumfiles = int(inheader[5], 16)
94339431
fprechecksumtype = inheader[-2]
94349432
fprechecksum = inheader[-1]
94359433

0 commit comments

Comments
 (0)