@@ -2967,7 +2967,7 @@ def AppendNullBytes(indata=[], delimiter=__file_format_dict__['format_delimiter'
29672967 return outdata
29682968
29692969
2970- def AppendFileHeader (fp , numfiles , extradata = [], checksumtype = "crc32" , formatspecs = __file_format_dict__ ):
2970+ def AppendFileHeader (fp , numfiles , fencoding , extradata = [], checksumtype = "crc32" , formatspecs = __file_format_dict__ ):
29712971 if (not hasattr (fp , "write" )):
29722972 return False
29732973 formatspecs = FormatSpecsListToDict (formatspecs )
@@ -2988,7 +2988,7 @@ def AppendFileHeader(fp, numfiles, extradata=[], checksumtype="crc32", formatspe
29882988 catoutlist .append (extrafields )
29892989 fnumfiles = format (int (numfiles ), 'x' ).lower ()
29902990 fnumfilesa = AppendNullBytes (
2991- [platform .system (), fnumfiles ], formatspecs ['format_delimiter' ])
2991+ [fencoding , platform .system (), fnumfiles ], formatspecs ['format_delimiter' ])
29922992 fnumfilesa = fnumfilesa + AppendNullBytes (
29932993 catoutlist , formatspecs ['format_delimiter' ])
29942994 if (len (extradata ) > 0 ):
@@ -3016,7 +3016,7 @@ def AppendFileHeader(fp, numfiles, extradata=[], checksumtype="crc32", formatspe
30163016
30173017def MakeEmptyFilePointer (fp , checksumtype = "crc32" , formatspecs = __file_format_dict__ ):
30183018 formatspecs = FormatSpecsListToDict (formatspecs )
3019- AppendFileHeader (fp , 0 , [], checksumtype , formatspecs )
3019+ AppendFileHeader (fp , 0 , "UTF-8" , [], checksumtype , formatspecs )
30203020 return fp
30213021
30223022
@@ -3041,7 +3041,7 @@ def MakeEmptyFile(outfile, compression="auto", compresswholefile=True, compressi
30413041 if (not compresswholefile and fextname in outextlistwd ):
30423042 compresswholefile = True
30433043 catfp = CompressOpenFile (outfile , True , compressionlevel )
3044- AppendFileHeader (catfp , 0 , [], checksumtype , formatspecs )
3044+ AppendFileHeader (catfp , 0 , "UTF-8" , [], checksumtype , formatspecs )
30453045 if (outfile == "-" or outfile is None or hasattr (outfile , "read" ) or hasattr (outfile , "write" )):
30463046 catfp = CompressArchiveFile (
30473047 catfp , compression , compressionlevel , formatspecs )
@@ -3191,7 +3191,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
31913191 inodetocatinode = {}
31923192 numfiles = int (len (GetDirList ))
31933193 fnumfiles = format (numfiles , 'x' ).lower ()
3194- AppendFileHeader (fp , fnumfiles , [], checksumtype [0 ], formatspecs )
3194+ AppendFileHeader (fp , fnumfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
31953195 FullSizeFilesAlt = 0
31963196 for curfname in GetDirList :
31973197 if (re .findall ("^[.|/]" , curfname )):
@@ -3453,7 +3453,7 @@ def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, filevalues=[], extr
34533453 inodetocatinode = {}
34543454 numfiles = int (len (GetDirList ))
34553455 fnumfiles = format (numfiles , 'x' ).lower ()
3456- AppendFileHeader (fp , fnumfiles , [], checksumtype [0 ], formatspecs )
3456+ AppendFileHeader (fp , fnumfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
34573457 for curfname in GetDirList :
34583458 ftype = format (curfname [0 ], 'x' ).lower ()
34593459 if (re .findall ("^[.|/]" , curfname [1 ])):
@@ -4413,7 +4413,7 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
44134413 filetoinode = {}
44144414 inodetocatinode = {}
44154415 numfiles = int (len (GetDirList ))
4416- AppendFileHeader (catfp , numfiles , [], checksumtype [0 ], formatspecs )
4416+ AppendFileHeader (catfp , numfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
44174417 FullSizeFilesAlt = 0
44184418 for curfname in GetDirList :
44194419 if (re .findall ("^[.|/]" , curfname )):
@@ -4794,7 +4794,7 @@ def PackArchiveFileFromTarFile(infile, outfile, compression="auto", compresswhol
47944794 except FileNotFoundError :
47954795 return False
47964796 numfiles = int (len (tarfp .getmembers ()))
4797- AppendFileHeader (catfp , numfiles , [], checksumtype [0 ], formatspecs )
4797+ AppendFileHeader (catfp , numfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
47984798 for member in sorted (tarfp .getmembers (), key = lambda x : x .name ):
47994799 if (re .findall ("^[.|/]" , member .name )):
48004800 fname = member .name
@@ -5035,7 +5035,7 @@ def PackArchiveFileFromZipFile(infile, outfile, compression="auto", compresswhol
50355035 if (ziptest ):
50365036 VerbosePrintOut ("Bad file found!" )
50375037 numfiles = int (len (zipfp .infolist ()))
5038- AppendFileHeader (catfp , numfiles , [], checksumtype [0 ], formatspecs )
5038+ AppendFileHeader (catfp , numfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
50395039 for member in sorted (zipfp .infolist (), key = lambda x : x .filename ):
50405040 if (re .findall ("^[.|/]" , member .filename )):
50415041 fname = member .filename
@@ -5286,7 +5286,7 @@ def PackArchiveFileFromRarFile(infile, outfile, compression="auto", compresswhol
52865286 if (rartest ):
52875287 VerbosePrintOut ("Bad file found!" )
52885288 numfiles = int (len (rarfp .infolist ()))
5289- AppendFileHeader (catfp , numfiles , [], checksumtype [0 ], formatspecs )
5289+ AppendFileHeader (catfp , numfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
52905290 try :
52915291 catfp .flush ()
52925292 if (hasattr (os , "sync" )):
@@ -5582,7 +5582,7 @@ def PackArchiveFileFromSevenZipFile(infile, outfile, compression="auto", compres
55825582 if (sztestalt ):
55835583 VerbosePrintOut ("Bad file found!" )
55845584 numfiles = int (len (szpfp .list ()))
5585- AppendFileHeader (catfp , numfiles , [], checksumtype [0 ], formatspecs )
5585+ AppendFileHeader (catfp , numfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
55865586 for member in sorted (szpfp .list (), key = lambda x : x .filename ):
55875587 if (re .findall ("^[.|/]" , member .filename )):
55885588 fname = member .filename
@@ -5933,21 +5933,22 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
59335933 return False
59345934 if (catdel != formatspecs ['format_delimiter' ]):
59355935 return False
5936- catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
5937- fnumextrafieldsize = int (catheader [2 ], 16 )
5938- fnumextrafields = int (catheader [3 ], 16 )
5936+ catheader = ReadFileHeaderData (catfp , 5 , formatspecs ['format_delimiter' ])
5937+ fnumextrafieldsize = int (catheader [3 ], 16 )
5938+ fnumextrafields = int (catheader [4 ], 16 )
59395939 extrafieldslist = []
59405940 if (fnumextrafields > 0 ):
59415941 extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
59425942 catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
59435943 if (curloc > 0 ):
59445944 catfp .seek (curloc , 0 )
59455945 catversion = re .findall ("([\\ d]+)" , catstring )
5946- fostype = catheader [0 ]
5947- fprenumfiles = catheader [1 ]
5946+ fhencoding = catheader [0 ]
5947+ fostype = catheader [1 ]
5948+ fprenumfiles = catheader [2 ]
59485949 fnumfiles = int (fprenumfiles , 16 )
5949- fprechecksumtype = catheader [4 ]
5950- fprechecksum = catheader [5 ]
5950+ fprechecksumtype = catheader [5 ]
5951+ fprechecksum = catheader [6 ]
59515952 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
59525953 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
59535954 fileheader = fileheader + \
@@ -5975,7 +5976,7 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
59755976 fcompresstype = compresscheck
59765977 if (fcompresstype == formatspecs ['format_lower' ]):
59775978 fcompresstype = ""
5978- catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fversion' : catversions [1 ], 'fostype' : fostype ,
5979+ catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fencoding' : fhencoding , ' fversion' : catversions [1 ], 'fostype' : fostype ,
59795980 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'fextrafields' : fnumextrafields , 'fextrafieldsize' : fnumextrafieldsize , 'fextralist' : extrafieldslist , 'ffilelist' : {}}
59805981 if (seekto >= fnumfiles ):
59815982 seekto = fnumfiles - 1
@@ -6212,20 +6213,21 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
62126213 return False
62136214 if (catdel != formatspecs ['format_delimiter' ]):
62146215 return False
6215- catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
6216- fnumextrafieldsize = int (catheader [2 ], 16 )
6217- fnumextrafields = int (catheader [3 ], 16 )
6216+ catheader = ReadFileHeaderData (catfp , 5 , formatspecs ['format_delimiter' ])
6217+ fnumextrafieldsize = int (catheader [3 ], 16 )
6218+ fnumextrafields = int (catheader [4 ], 16 )
62186219 extrafieldslist = []
62196220 if (fnumextrafields > 0 ):
62206221 extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
62216222 catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
62226223 if (curloc > 0 ):
62236224 catfp .seek (curloc , 0 )
62246225 catversion = re .findall ("([\\ d]+)" , catstring )
6225- fostype = catheader [0 ]
6226- fnumfiles = int (catheader [1 ], 16 )
6227- fprechecksumtype = catheader [4 ]
6228- fprechecksum = catheader [5 ]
6226+ fhencoding = catheader [0 ]
6227+ fostype = catheader [1 ]
6228+ fnumfiles = int (catheader [2 ], 16 )
6229+ fprechecksumtype = catheader [5 ]
6230+ fprechecksum = catheader [6 ]
62296231 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
62306232 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
62316233 fileheader = fileheader + \
@@ -6253,7 +6255,7 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
62536255 fcompresstype = compresscheck
62546256 if (fcompresstype == formatspecs ['format_lower' ]):
62556257 fcompresstype = ""
6256- catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fversion' : catversions [1 ], 'fostype' : fostype ,
6258+ catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fencoding' : fhencoding , ' fversion' : catversions [1 ], 'fostype' : fostype ,
62576259 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'fextrafields' : fnumextrafields , 'fextrafieldsize' : fnumextrafieldsize , 'fextralist' : extrafieldslist , 'ffilelist' : {}}
62586260 seekto = fnumfiles - 1
62596261 filefound = False
@@ -6528,21 +6530,22 @@ def ArchiveFileValidate(infile, formatspecs=__file_format_dict__, verbose=False,
65286530 return False
65296531 if (catdel != formatspecs ['format_delimiter' ]):
65306532 return False
6531- catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
6532- fnumextrafieldsize = int (catheader [2 ], 16 )
6533- fnumextrafields = int (catheader [3 ], 16 )
6533+ catheader = ReadFileHeaderData (catfp , 5 , formatspecs ['format_delimiter' ])
6534+ fnumextrafieldsize = int (catheader [3 ], 16 )
6535+ fnumextrafields = int (catheader [4 ], 16 )
65346536 extrafieldslist = []
65356537 if (fnumextrafields > 0 ):
65366538 extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
65376539 catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
65386540 if (curloc > 0 ):
65396541 catfp .seek (curloc , 0 )
65406542 catversion = re .findall ("([\\ d]+)" , catstring )
6541- fostype = catheader [0 ]
6542- fprenumfiles = catheader [1 ]
6543+ fhencoding = catheader [0 ]
6544+ fostype = catheader [1 ]
6545+ fprenumfiles = catheader [2 ]
65436546 fnumfiles = int (fprenumfiles , 16 )
6544- fprechecksumtype = catheader [4 ]
6545- fprechecksum = catheader [5 ]
6547+ fprechecksumtype = catheader [5 ]
6548+ fprechecksum = catheader [6 ]
65466549 il = 0
65476550 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
65486551 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
@@ -6873,20 +6876,21 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
68736876 return False
68746877 if (catdel != formatspecs ['format_delimiter' ]):
68756878 return False
6876- catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
6877- fnumextrafieldsize = int (catheader [2 ], 16 )
6878- fnumextrafields = int (catheader [3 ], 16 )
6879+ catheader = ReadFileHeaderData (catfp , 5 , formatspecs ['format_delimiter' ])
6880+ fnumextrafieldsize = int (catheader [3 ], 16 )
6881+ fnumextrafields = int (catheader [4 ], 16 )
68796882 extrafieldslist = []
68806883 if (fnumextrafields > 0 ):
68816884 extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
68826885 catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
68836886 if (curloc > 0 ):
68846887 catfp .seek (curloc , 0 )
68856888 catversion = re .findall ("([\\ d]+)" , catstring )
6886- fostype = catheader [0 ]
6887- fnumfiles = int (catheader [1 ], 16 )
6888- fprechecksumtype = catheader [4 ]
6889- fprechecksum = catheader [5 ]
6889+ fhencoding = catheader [0 ]
6890+ fostype = catheader [1 ]
6891+ fnumfiles = int (catheader [2 ], 16 )
6892+ fprechecksumtype = catheader [5 ]
6893+ fprechecksum = catheader [6 ]
68906894 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
68916895 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
68926896 fileheader = fileheader + \
@@ -6914,7 +6918,7 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
69146918 fcompresstype = compresscheck
69156919 if (fcompresstype == formatspecs ['format_lower' ]):
69166920 fcompresstype = ""
6917- catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fversion' : catversions [1 ], 'fostype' : fostype ,
6921+ catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fencoding' : fhencoding , ' fversion' : catversions [1 ], 'fostype' : fostype ,
69186922 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'fextrafields' : fnumextrafields , 'fextrafieldsize' : fnumextrafieldsize , 'fextralist' : extrafieldslist , 'ffilelist' : []}
69196923 if (seekstart < 0 and seekstart > fnumfiles ):
69206924 seekstart = 0
@@ -8556,7 +8560,7 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru
85568560 fnumfiles = int (listcatfiles ['fnumfiles' ])
85578561 if (lenlist > fnumfiles or lenlist < fnumfiles ):
85588562 fnumfiles = lenlist
8559- AppendFileHeader (catfp , fnumfiles , [], checksumtype [0 ], formatspecs )
8563+ AppendFileHeader (catfp , fnumfiles , "UTF-8" , [], checksumtype [0 ], formatspecs )
85608564 lenlist = len (listcatfiles ['ffilelist' ])
85618565 fnumfiles = int (listcatfiles ['fnumfiles' ])
85628566 lcfi = 0
0 commit comments