@@ -795,7 +795,7 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
795795if(platform.python_implementation() != ""):
796796 py_implementation = platform.python_implementation()
797797if(platform.python_implementation() == ""):
798- py_implementation = "Python "
798+ py_implementation = "CPython "
799799geturls_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__)
801801geturls_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