@@ -5935,19 +5935,32 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
59355935 if (catdel != formatspecs ['format_delimiter' ]):
59365936 return False
59375937 catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
5938+ fnumextrafieldsize = int (catheader [2 ], 16 )
5939+ fnumextrafields = int (catheader [3 ], 16 )
5940+ extrafieldslist = []
5941+ if (fnumextrafields > 0 ):
5942+ extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
5943+ catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
59385944 if (curloc > 0 ):
59395945 catfp .seek (curloc , 0 )
59405946 catversion = re .findall ("([\\ d]+)" , catstring )
59415947 fostype = catheader [0 ]
59425948 fprenumfiles = catheader [1 ]
59435949 fnumfiles = int (fprenumfiles , 16 )
5944- fprechecksumtype = catheader [2 ]
5945- fprechecksum = catheader [3 ]
5950+ fprechecksumtype = catheader [4 ]
5951+ fprechecksum = catheader [5 ]
59465952 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
59475953 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
59485954 fileheader = fileheader + \
5949- AppendNullBytes ([fnumfileshex , fprechecksumtype ],
5955+ AppendNullBytes ([fostype , fnumfileshex ],
59505956 formatspecs ['format_delimiter' ])
5957+ fileheader = fileheader + AppendNullBytes (
5958+ [fnumextrafieldsize , fnumextrafields ], formatspecs ['format_delimiter' ])
5959+ if (fnumextrafields > 0 ):
5960+ fileheader = fileheader + AppendNullBytes (
5961+ extrafieldslist , formatspecs ['format_delimiter' ])
5962+ fileheader = fileheader + \
5963+ AppendNullByte (fprechecksumtype , formatspecs ['format_delimiter' ])
59515964 catfileheadercshex = GetFileChecksum (
59525965 fileheader , fprechecksumtype , True , formatspecs )
59535966 fileheader = fileheader + \
@@ -5964,7 +5977,7 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
59645977 if (fcompresstype == formatspecs ['format_lower' ]):
59655978 fcompresstype = ""
59665979 catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fversion' : catversions [1 ], 'fostype' : fostype ,
5967- 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'ffilelist' : {}}
5980+ 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'fextrafields' : fnumextrafields , 'fextrafieldsize' : fnumextrafieldsize , 'fextralist' : extrafieldslist , ' ffilelist' : {}}
59685981 if (seekto >= fnumfiles ):
59695982 seekto = fnumfiles - 1
59705983 if (seekto < 0 ):
@@ -6201,19 +6214,31 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
62016214 if (catdel != formatspecs ['format_delimiter' ]):
62026215 return False
62036216 catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
6217+ fnumextrafieldsize = int (catheader [2 ], 16 )
6218+ fnumextrafields = int (catheader [3 ], 16 )
6219+ extrafieldslist = []
6220+ if (fnumextrafields > 0 ):
6221+ extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
6222+ catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
62046223 if (curloc > 0 ):
62056224 catfp .seek (curloc , 0 )
62066225 catversion = re .findall ("([\\ d]+)" , catstring )
62076226 fostype = catheader [0 ]
6208- fprenumfiles = catheader [1 ]
6209- fnumfiles = int (fprenumfiles , 16 )
6210- fprechecksumtype = catheader [2 ]
6211- fprechecksum = catheader [3 ]
6227+ fnumfiles = int (catheader [1 ], 16 )
6228+ fprechecksumtype = catheader [4 ]
6229+ fprechecksum = catheader [5 ]
62126230 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
62136231 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
62146232 fileheader = fileheader + \
6215- AppendNullBytes ([fnumfileshex , fprechecksumtype ],
6233+ AppendNullBytes ([fostype , fnumfileshex ],
62166234 formatspecs ['format_delimiter' ])
6235+ fileheader = fileheader + AppendNullBytes (
6236+ [fnumextrafieldsize , fnumextrafields ], formatspecs ['format_delimiter' ])
6237+ if (fnumextrafields > 0 ):
6238+ fileheader = fileheader + AppendNullBytes (
6239+ extrafieldslist , formatspecs ['format_delimiter' ])
6240+ fileheader = fileheader + \
6241+ AppendNullByte (fprechecksumtype , formatspecs ['format_delimiter' ])
62176242 catfileheadercshex = GetFileChecksum (
62186243 fileheader , fprechecksumtype , True , formatspecs )
62196244 fileheader = fileheader + \
@@ -6230,7 +6255,7 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
62306255 if (fcompresstype == formatspecs ['format_lower' ]):
62316256 fcompresstype = ""
62326257 catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fversion' : catversions [1 ], 'fostype' : fostype ,
6233- 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'ffilelist' : {}}
6258+ 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'fextrafields' : fnumextrafields , 'fextrafieldsize' : fnumextrafieldsize , 'fextralist' : extrafieldslist , ' ffilelist' : {}}
62346259 seekto = fnumfiles - 1
62356260 filefound = False
62366261 if (seekto >= 0 ):
@@ -6505,20 +6530,33 @@ def ArchiveFileValidate(infile, formatspecs=__file_format_dict__, verbose=False,
65056530 if (catdel != formatspecs ['format_delimiter' ]):
65066531 return False
65076532 catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
6533+ fnumextrafieldsize = int (catheader [2 ], 16 )
6534+ fnumextrafields = int (catheader [3 ], 16 )
6535+ extrafieldslist = []
6536+ if (fnumextrafields > 0 ):
6537+ extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
6538+ catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
65086539 if (curloc > 0 ):
65096540 catfp .seek (curloc , 0 )
65106541 catversion = re .findall ("([\\ d]+)" , catstring )
65116542 fostype = catheader [0 ]
65126543 fprenumfiles = catheader [1 ]
65136544 fnumfiles = int (fprenumfiles , 16 )
6514- fprechecksumtype = catheader [2 ]
6515- fprechecksum = catheader [3 ]
6545+ fprechecksumtype = catheader [4 ]
6546+ fprechecksum = catheader [5 ]
65166547 il = 0
65176548 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
65186549 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
65196550 fileheader = fileheader + \
6520- AppendNullBytes ([fostype , fnumfileshex , fprechecksumtype ],
6551+ AppendNullBytes ([fostype , fnumfileshex ],
65216552 formatspecs ['format_delimiter' ])
6553+ fileheader = fileheader + AppendNullBytes (
6554+ [fnumextrafieldsize , fnumextrafields ], formatspecs ['format_delimiter' ])
6555+ if (fnumextrafields > 0 ):
6556+ fileheader = fileheader + AppendNullBytes (
6557+ extrafieldslist , formatspecs ['format_delimiter' ])
6558+ fileheader = fileheader + \
6559+ AppendNullByte (fprechecksumtype , formatspecs ['format_delimiter' ])
65226560 catfileheadercshex = GetFileChecksum (
65236561 fileheader , fprechecksumtype , True , formatspecs )
65246562 fileheader = fileheader + \
@@ -6835,19 +6873,31 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
68356873 if (catdel != formatspecs ['format_delimiter' ]):
68366874 return False
68376875 catheader = ReadFileHeaderData (catfp , 4 , formatspecs ['format_delimiter' ])
6876+ fnumextrafieldsize = int (catheader [2 ], 16 )
6877+ fnumextrafields = int (catheader [3 ], 16 )
6878+ extrafieldslist = []
6879+ if (fnumextrafields > 0 ):
6880+ extrafieldslist = ReadFileHeaderData (catfp , fnumextrafields , formatspecs ['format_delimiter' ])
6881+ catheader += ReadFileHeaderData (catfp , 2 , formatspecs ['format_delimiter' ])
68386882 if (curloc > 0 ):
68396883 catfp .seek (curloc , 0 )
68406884 catversion = re .findall ("([\\ d]+)" , catstring )
68416885 fostype = catheader [0 ]
6842- fprenumfiles = catheader [1 ]
6843- fnumfiles = int (fprenumfiles , 16 )
6844- fprechecksumtype = catheader [2 ]
6845- fprechecksum = catheader [3 ]
6886+ fnumfiles = int (catheader [1 ], 16 )
6887+ fprechecksumtype = catheader [4 ]
6888+ fprechecksum = catheader [5 ]
68466889 fileheader = AppendNullByte (catstring , formatspecs ['format_delimiter' ])
68476890 fnumfileshex = format (int (fnumfiles ), 'x' ).lower ()
68486891 fileheader = fileheader + \
6849- AppendNullBytes ([fostype , fnumfileshex , fprechecksumtype ],
6892+ AppendNullBytes ([fostype , fnumfileshex ],
68506893 formatspecs ['format_delimiter' ])
6894+ fileheader = fileheader + AppendNullBytes (
6895+ [fnumextrafieldsize , fnumextrafields ], formatspecs ['format_delimiter' ])
6896+ if (fnumextrafields > 0 ):
6897+ fileheader = fileheader + AppendNullBytes (
6898+ extrafieldslist , formatspecs ['format_delimiter' ])
6899+ fileheader = fileheader + \
6900+ AppendNullByte (fprechecksumtype , formatspecs ['format_delimiter' ])
68516901 catfileheadercshex = GetFileChecksum (
68526902 fileheader , fprechecksumtype , True , formatspecs )
68536903 fileheader = fileheader + \
@@ -6864,7 +6914,7 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
68646914 if (fcompresstype == formatspecs ['format_lower' ]):
68656915 fcompresstype = ""
68666916 catlist = {'fnumfiles' : fnumfiles , 'fformat' : catversions [0 ], 'fcompression' : fcompresstype , 'fversion' : catversions [1 ], 'fostype' : fostype ,
6867- 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'ffilelist' : []}
6917+ 'fformatspecs' : formatspecs , 'fchecksumtype' : fprechecksumtype , 'fheaderchecksum' : fprechecksum , 'frawheader' : [catstring ] + catheader , 'fextrafields' : fnumextrafields , 'fextrafieldsize' : fnumextrafieldsize , 'fextralist' : extrafieldslist , ' ffilelist' : []}
68686918 if (seekstart < 0 and seekstart > fnumfiles ):
68696919 seekstart = 0
68706920 if (seekend == 0 or seekend > fnumfiles and seekend < seekstart ):
0 commit comments