@@ -787,7 +787,7 @@ def check_version_number(myversion=__version__, proname=__program_alt_name__, ne
787787if(platform.python_implementation() != ""):
788788 py_implementation = platform.python_implementation()
789789if(platform.python_implementation() == ""):
790- py_implementation = "Python "
790+ py_implementation = "CPython "
791791geturls_ua_pyfile_python_alt = "Mozilla/5.0 ({osver}; {archtype}; +{prourl}) {pyimp}/{pyver} (KHTML, like Gecko) {proname}/{prover}".format(osver=platform.system(
792792)+" "+platform.release(), archtype=platform.machine(), prourl=__project_url__, pyimp=py_implementation, pyver=platform.python_version(), proname=__project__, prover=__version__)
793793geturls_ua_googlebot_google = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
@@ -3674,7 +3674,7 @@ def GetHeaderChecksum(inlist=None, checksumtype="md5", encodedata=True, formatsp
36743674
36753675 return "0"
36763676
3677- def GetFileChecksum(instr , checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3677+ def GetFileChecksum(inbytes , checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
36783678 """
36793679 Accepts bytes/str/file-like.
36803680 - Hashlib algos: streamed in 1 MiB chunks.
@@ -3684,12 +3684,12 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
36843684 algo_key = (checksumtype or "md5").lower()
36853685
36863686 # file-like streaming
3687- if hasattr(instr , "read"):
3687+ if hasattr(inbytes , "read"):
36883688 # hashlib
36893689 if CheckSumSupport(algo_key, hashlib_guaranteed):
36903690 h = hashlib.new(algo_key)
36913691 while True:
3692- chunk = instr .read(1 << 20)
3692+ chunk = inbytes .read(1 << 20)
36933693 if not chunk:
36943694 break
36953695 if not isinstance(chunk, (bytes, bytearray, memoryview)):
@@ -3698,11 +3698,11 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
36983698 return h.hexdigest().lower()
36993699
37003700 # not known streaming algo: fallback to one-shot bytes
3701- data = instr .read()
3701+ data = inbytes .read()
37023702 if not isinstance(data, (bytes, bytearray, memoryview)):
37033703 data = bytes(bytearray(data))
37043704 else:
3705- data = _to_bytes(instr ) if (encodedata or not isinstance(instr , (bytes, bytearray, memoryview))) else instr
3705+ data = _to_bytes(inbytes ) if (encodedata or not isinstance(inbytes , (bytes, bytearray, memoryview))) else inbytes
37063706 data = bytes(data)
37073707
37083708 # one-shot
@@ -3750,7 +3750,7 @@ def GetHeaderChecksum(inlist=None, checksumtype="md5", encodedata=True, formatsp
37503750
37513751 return "0"
37523752
3753- def GetFileChecksum(instr , checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3753+ def GetFileChecksum(inbytes , checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
37543754 """
37553755 Accepts bytes/str/file-like.
37563756 - Hashlib algos: streamed in 1 MiB chunks.
@@ -3760,12 +3760,12 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
37603760 algo_key = (checksumtype or "md5").lower()
37613761
37623762 # file-like streaming
3763- if hasattr(instr , "read"):
3763+ if hasattr(inbytes , "read"):
37643764 # hashlib
37653765 if CheckSumSupport(algo_key, hashlib_guaranteed):
37663766 h = hashlib.new(algo_key)
37673767 while True:
3768- chunk = instr .read(1 << 20)
3768+ chunk = inbytes .read(1 << 20)
37693769 if not chunk:
37703770 break
37713771 if not isinstance(chunk, (bytes, bytearray, memoryview)):
@@ -3774,11 +3774,11 @@ def GetFileChecksum(instr, checksumtype="md5", encodedata=True, formatspecs=__fi
37743774 return h.hexdigest().lower()
37753775
37763776 # not known streaming algo: fallback to one-shot bytes
3777- data = instr .read()
3777+ data = inbytes .read()
37783778 if not isinstance(data, (bytes, bytearray, memoryview)):
37793779 data = bytes(bytearray(data))
37803780 else:
3781- data = _to_bytes(instr ) if (encodedata or not isinstance(instr , (bytes, bytearray, memoryview))) else instr
3781+ data = _to_bytes(inbytes ) if (encodedata or not isinstance(inbytes , (bytes, bytearray, memoryview))) else inbytes
37823782 data = bytes(data)
37833783
37843784 # one-shot
@@ -3855,12 +3855,12 @@ def GetHeaderChecksum(inlist=[], checksumtype="md5", encodedata=True, formatspec
38553855 return format(0, 'x').lower()
38563856
38573857
3858- def GetFileChecksum(instr , checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3859- if encodedata and hasattr(instr , "encode"):
3860- instr = instr .encode('UTF-8')
3858+ def GetFileChecksum(inbytes , checksumtype="md5", encodedata=True, formatspecs=__file_format_dict__):
3859+ if encodedata and hasattr(inbytes , "encode"):
3860+ inbytes = inbytes .encode('UTF-8')
38613861 if CheckSumSupport(checksumtype, hashlib_guaranteed):
38623862 checksumoutstr = hashlib.new(checksumtype)
3863- checksumoutstr.update(instr )
3863+ checksumoutstr.update(inbytes )
38643864 return checksumoutstr.hexdigest().lower()
38653865 return format(0, 'x').lower()
38663866
@@ -4476,7 +4476,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
44764476 cfcontents.close()
44774477 fcontents.seek(0, 0)
44784478 fccs = GetFileChecksum(
4479- fcontents, HeaderOut[-3].lower(), False, formatspecs)
4479+ fcontents.read() , HeaderOut[-3].lower(), False, formatspecs)
44804480 fcontentend = fp.tell()
44814481 if(re.findall("^\\+([0-9]+)", fseeknextfile)):
44824482 fseeknextasnum = int(fseeknextfile.replace("+", ""))
@@ -4694,9 +4694,7 @@ def ReadFileDataWithContent(fp, filestart=0, listonly=False, uncompress=True, sk
46944694 curloc = filestart
46954695 try:
46964696 fp.seek(0, 2)
4697- except OSError:
4698- SeekToEndOfFile(fp)
4699- except ValueError:
4697+ except (OSError, ValueError):
47004698 SeekToEndOfFile(fp)
47014699 CatSize = fp.tell()
47024700 CatSizeEnd = CatSize
@@ -4745,9 +4743,7 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
47454743 curloc = filestart
47464744 try:
47474745 fp.seek(0, 2)
4748- except OSError:
4749- SeekToEndOfFile(fp)
4750- except ValueError:
4746+ except (OSError, ValueError):
47514747 SeekToEndOfFile(fp)
47524748 CatSize = fp.tell()
47534749 CatSizeEnd = CatSize
@@ -4766,8 +4762,8 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
47664762 else:
47674763 inheader = ReadFileHeaderDataWoSize(
47684764 fp, formatspecs['format_delimiter'])
4769- fnumextrafieldsize = int(inheader[5 ], 16)
4770- fnumextrafields = int(inheader[6 ], 16)
4765+ fnumextrafieldsize = int(inheader[6 ], 16)
4766+ fnumextrafields = int(inheader[7 ], 16)
47714767 fextrafieldslist = []
47724768 extrastart = 7
47734769 extraend = extrastart + fnumextrafields
@@ -4788,7 +4784,8 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
47884784 fnumfields = int(inheader[1], 16)
47894785 fhencoding = inheader[2]
47904786 fostype = inheader[3]
4791- fnumfiles = int(inheader[4], 16)
4787+ fpythontype = inheader[4]
4788+ fnumfiles = int(inheader[5], 16)
47924789 fprechecksumtype = inheader[-2]
47934790 fprechecksum = inheader[-1]
47944791 headercheck = ValidateHeaderChecksum([formstring] + inheader[:-1], fprechecksumtype, fprechecksum, formatspecs)
@@ -4801,7 +4798,7 @@ def ReadFileDataWithContentToArray(fp, filestart=0, seekstart=0, seekend=0, list
48014798 return False
48024799 formversions = re.search('(.*?)(\\d+)', formstring).groups()
48034800 fcompresstype = ""
4804- 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': []}
4801+ 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': []}
48054802 if (seekstart < 0) or (seekstart > fnumfiles):
48064803 seekstart = 0
48074804 if (seekend == 0) or (seekend > fnumfiles) or (seekend < seekstart):
@@ -4902,7 +4899,7 @@ def ReadFileDataWithContentToList(fp, filestart=0, seekstart=0, seekend=0, listo
49024899 curloc = filestart
49034900 try:
49044901 fp.seek(0, 2)
4905- except (ValueError, OSError ):
4902+ except (OSError, ValueError ):
49064903 SeekToEndOfFile(fp)
49074904 CatSize = fp.tell()
49084905 CatSizeEnd = CatSize
@@ -5059,7 +5056,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50595056 fp = infile
50605057 try:
50615058 fp.seek(0, 2)
5062- except (ValueError, OSError ):
5059+ except (OSError, ValueError ):
50635060 SeekToEndOfFile(fp)
50645061 outfsize = fp.tell()
50655062 fp.seek(filestart, 0)
@@ -5069,7 +5066,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50695066 shutil.copyfileobj(PY_STDIN_BUF, fp, length=__filebuff_size__)
50705067 try:
50715068 fp.seek(0, 2)
5072- except (ValueError, OSError ):
5069+ except (OSError, ValueError ):
50735070 SeekToEndOfFile(fp)
50745071 outfsize = fp.tell()
50755072 fp.seek(filestart, 0)
@@ -5079,7 +5076,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50795076 fp.write(infile)
50805077 try:
50815078 fp.seek(0, 2)
5082- except (ValueError, OSError ):
5079+ except (OSError, ValueError ):
50835080 SeekToEndOfFile(fp)
50845081 outfsize = fp.tell()
50855082 fp.seek(filestart, 0)
@@ -5088,15 +5085,15 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
50885085 fp = download_file_from_internet_file(infile)
50895086 try:
50905087 fp.seek(0, 2)
5091- except (ValueError, OSError ):
5088+ except (OSError, ValueError ):
50925089 SeekToEndOfFile(fp)
50935090 outfsize = fp.tell()
50945091 fp.seek(filestart, 0)
50955092 currentfilepos = fp.tell()
50965093 elif(isinstance(infile, FileLikeAdapter)):
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)
@@ -5106,7 +5103,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
51065103 fp = open(infile, "rb")
51075104 try:
51085105 fp.seek(0, 2)
5109- except (ValueError, OSError ):
5106+ except (OSError, ValueError ):
51105107 SeekToEndOfFile(fp)
51115108 outfsize = fp.tell()
51125109 fp.seek(filestart, 0)
@@ -5157,7 +5154,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", filestart=0, seekstart=
51575154 currentinfilepos = infp.tell()
51585155 try:
51595156 infp.seek(0, 2)
5160- except (ValueError, OSError ):
5157+ except (OSError, ValueError ):
51615158 SeekToEndOfFile(infp)
51625159 outinfsize = infp.tell()
51635160 infp.seek(currentinfilepos, 0)
@@ -5196,7 +5193,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
51965193 fp = infile
51975194 try:
51985195 fp.seek(0, 2)
5199- except (ValueError, OSError ):
5196+ except (OSError, ValueError ):
52005197 SeekToEndOfFile(fp)
52015198 outfsize = fp.tell()
52025199 fp.seek(filestart, 0)
@@ -5206,7 +5203,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52065203 shutil.copyfileobj(PY_STDIN_BUF, fp, length=__filebuff_size__)
52075204 try:
52085205 fp.seek(0, 2)
5209- except (ValueError, OSError ):
5206+ except (OSError, ValueError ):
52105207 SeekToEndOfFile(fp)
52115208 outfsize = fp.tell()
52125209 fp.seek(filestart, 0)
@@ -5216,7 +5213,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52165213 fp.write(infile)
52175214 try:
52185215 fp.seek(0, 2)
5219- except (ValueError, OSError ):
5216+ except (OSError, ValueError ):
52205217 SeekToEndOfFile(fp)
52215218 outfsize = fp.tell()
52225219 fp.seek(filestart, 0)
@@ -5225,15 +5222,15 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52255222 fp = download_file_from_internet_file(infile)
52265223 try:
52275224 fp.seek(0, 2)
5228- except (ValueError, OSError ):
5225+ except (OSError, ValueError ):
52295226 SeekToEndOfFile(fp)
52305227 outfsize = fp.tell()
52315228 fp.seek(filestart, 0)
52325229 currentfilepos = fp.tell()
52335230 elif(isinstance(infile, FileLikeAdapter)):
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)
@@ -5243,7 +5240,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52435240 fp = open(infile, "rb")
52445241 try:
52455242 fp.seek(0, 2)
5246- except (ValueError, OSError ):
5243+ except (OSError, ValueError ):
52475244 SeekToEndOfFile(fp)
52485245 outfsize = fp.tell()
52495246 fp.seek(filestart, 0)
@@ -5294,7 +5291,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", filestart=0, seekstart=0
52945291 currentinfilepos = infp.tell()
52955292 try:
52965293 infp.seek(0, 2)
5297- except (ValueError, OSError ):
5294+ except (OSError, ValueError ):
52985295 SeekToEndOfFile(infp)
52995296 outinfsize = infp.tell()
53005297 infp.seek(currentinfilepos, 0)
@@ -5435,11 +5432,11 @@ def AppendFileHeader(fp,
54355432
54365433 # Preserve your original "tmpoutlen" computation exactly
54375434 tmpoutlist = [extrasizelen, extrafields] # you used this as a separate list
5438- tmpoutlen = 3 + len(tmpoutlist) + len(xlist) + 2
5435+ tmpoutlen = 4 + len(tmpoutlist) + len(xlist) + 2
54395436 tmpoutlenhex = _hex_lower(tmpoutlen)
54405437
54415438 # Serialize the first group
5442- fnumfilesa = AppendNullBytes([tmpoutlenhex, fencoding, platform.system(), fnumfiles_hex], delimiter)
5439+ fnumfilesa = AppendNullBytes([tmpoutlenhex, fencoding, platform.system(), py_implementation, fnumfiles_hex], delimiter)
54435440 # Append tmpoutlist
54445441 fnumfilesa += AppendNullBytes(tmpoutlist, delimiter)
54455442 # Append extradata items if any
@@ -9412,16 +9409,17 @@ def ArchiveFileValidate(infile, fmttype="auto", filestart=0,
94129409 else:
94139410 inheader = ReadFileHeaderDataWoSize(fp, formatspecs['format_delimiter'])
94149411
9415- fnumextrafieldsize = int(inheader[5 ], 16)
9416- fnumextrafields = int(inheader[6 ], 16)
9412+ fnumextrafieldsize = int(inheader[6 ], 16)
9413+ fnumextrafields = int(inheader[7 ], 16)
94179414 extrastart = 7
94189415 extraend = extrastart + fnumextrafields
94199416 formversion = re.findall("([\\d]+)", formstring)
94209417 fheadsize = int(inheader[0], 16)
94219418 fnumfields = int(inheader[1], 16)
94229419 fhencoding = inheader[2]
94239420 fostype = inheader[3]
9424- fnumfiles = int(inheader[4], 16)
9421+ fpythontype = inheader[4]
9422+ fnumfiles = int(inheader[5], 16)
94259423 fprechecksumtype = inheader[-2]
94269424 fprechecksum = inheader[-1]
94279425
0 commit comments