@@ -2949,7 +2949,7 @@ def AppendNullBytes(indata=[], delimiter=__file_format_dict__['format_delimiter'
29492949 return outdata
29502950
29512951
2952- def AppendFileHeader (fp , numfiles , checksumtype = "crc32" , formatspecs = __file_format_dict__ ):
2952+ def AppendFileHeader (fp , numfiles , extradata = [], checksumtype = "crc32" , formatspecs = __file_format_dict__ ):
29532953 if (not hasattr (fp , "write" )):
29542954 return False
29552955 formatspecs = FormatSpecsListToDict (formatspecs )
@@ -2959,9 +2959,25 @@ def AppendFileHeader(fp, numfiles, checksumtype="crc32", formatspecs=__file_form
29592959 fileheader = AppendNullByte (
29602960 formatspecs ['format_magic' ] + fileheaderver , formatspecs ['format_delimiter' ])
29612961 fp .write (fileheader .encode ('UTF-8' ))
2962+ extrafields = format (len (extradata ), 'x' ).lower ()
2963+ extrasizestr = AppendNullByte (extrafields , formatspecs ['format_delimiter' ])
2964+ if (len (extradata ) > 0 ):
2965+ extrasizestr = extrasizestr + \
2966+ AppendNullBytes (extradata , formatspecs ['format_delimiter' ])
2967+ extrasizelen = format (len (extrasizestr ), 'x' ).lower ()
2968+ catoutlist = []
2969+ catoutlist .append (extrasizelen )
2970+ catoutlist .append (extrafields )
29622971 fnumfiles = format (int (numfiles ), 'x' ).lower ()
29632972 fnumfilesa = AppendNullBytes (
2964- [platform .system (), fnumfiles , checksumtype ], formatspecs ['format_delimiter' ])
2973+ [platform .system (), fnumfiles ], formatspecs ['format_delimiter' ])
2974+ fnumfilesa = fnumfilesa + AppendNullBytes (
2975+ catoutlist , formatspecs ['format_delimiter' ])
2976+ if (len (extradata ) > 0 ):
2977+ fnumfilesa = fnumfilesa + AppendNullBytes (
2978+ extradata , formatspecs ['format_delimiter' ])
2979+ fnumfilesa = fnumfilesa + \
2980+ AppendNullByte (checksumtype , formatspecs ['format_delimiter' ])
29652981 catfileheadercshex = GetFileChecksum (
29662982 fileheader + fnumfilesa , checksumtype , True , formatspecs )
29672983 fnumfilesa = fnumfilesa + \
@@ -2982,7 +2998,7 @@ def AppendFileHeader(fp, numfiles, checksumtype="crc32", formatspecs=__file_form
29822998
29832999def MakeEmptyFilePointer (fp , checksumtype = "crc32" , formatspecs = __file_format_dict__ ):
29843000 formatspecs = FormatSpecsListToDict (formatspecs )
2985- AppendFileHeader (fp , 0 , checksumtype , formatspecs )
3001+ AppendFileHeader (fp , 0 , [], checksumtype , formatspecs )
29863002 return fp
29873003
29883004
@@ -3007,7 +3023,7 @@ def MakeEmptyFile(outfile, compression="auto", compresswholefile=True, compressi
30073023 if (not compresswholefile and fextname in outextlistwd ):
30083024 compresswholefile = True
30093025 catfp = CompressOpenFile (outfile , True , compressionlevel )
3010- catfp = AppendFileHeader (catfp , 0 , checksumtype , formatspecs )
3026+ AppendFileHeader (catfp , 0 , [] , checksumtype , formatspecs )
30113027 if (outfile == "-" or outfile is None or hasattr (outfile , "read" ) or hasattr (outfile , "write" )):
30123028 catfp = CompressArchiveFile (
30133029 catfp , compression , compressionlevel , formatspecs )
@@ -3141,7 +3157,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
31413157 GetDirList = infilelist
31423158 else :
31433159 GetDirList = ListDir (infilelist , followlink , False )
3144- if (not isinstance (infiles , (list , tuple , ))):
3160+ if (not isinstance (GetDirList , (list , tuple , ))):
31453161 return False
31463162 FullSizeFiles = GetTotalSize (GetDirList )
31473163 if (not GetDirList ):
@@ -3154,7 +3170,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
31543170 inodetocatinode = {}
31553171 numfiles = int (len (GetDirList ))
31563172 fnumfiles = format (numfiles , 'x' ).lower ()
3157- AppendFileHeader (fp , fnumfiles , checksumtype , formatspecs )
3173+ AppendFileHeader (fp , fnumfiles , [], checksumtype , formatspecs )
31583174 FullSizeFilesAlt = 0
31593175 for curfname in GetDirList :
31603176 if (re .findall ("^[.|/]" , curfname )):
@@ -3389,7 +3405,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
33893405 ftypehex = format (ftype , 'x' ).lower ()
33903406 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression ,
33913407 fcsize , fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , "+" + str (len (formatspecs ['format_delimiter' ]))]
3392- fp = AppendFileHeaderWithContent (
3408+ AppendFileHeaderWithContent (
33933409 fp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
33943410 if (numfiles > 0 ):
33953411 catfp .write (AppendNullBytes (
@@ -3416,7 +3432,7 @@ def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, filevalues=[], extr
34163432 inodetocatinode = {}
34173433 numfiles = int (len (GetDirList ))
34183434 fnumfiles = format (numfiles , 'x' ).lower ()
3419- AppendFileHeader (fp , fnumfiles , checksumtype , formatspecs )
3435+ AppendFileHeader (fp , fnumfiles , [], checksumtype , formatspecs )
34203436 for curfname in GetDirList :
34213437 ftype = format (curfname [0 ], 'x' ).lower ()
34223438 if (re .findall ("^[.|/]" , curfname [1 ])):
@@ -3452,7 +3468,7 @@ def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, filevalues=[], extr
34523468 catoutlist = [ftype , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression , fcsize ,
34533469 fuid , funame , fgid , fgname , fid , finode , flinkcount , fdev , fdev_minor , fdev_major , fseeknextfile ]
34543470 fcontents .seek (0 , 0 )
3455- fp = AppendFileHeaderWithContent (
3471+ AppendFileHeaderWithContent (
34563472 fp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
34573473 if (numfiles > 0 ):
34583474 fp .write (AppendNullBytes (
@@ -3488,7 +3504,7 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, comp
34883504 if (not compresswholefile and fextname in outextlistwd ):
34893505 compresswholefile = True
34903506 catfp = CompressOpenFile (outfile , compresswholefile , compressionlevel )
3491- catfp = AppendFilesWithContent (infiles , catfp , dirlistfromtxt , filevalues , extradata , compression ,
3507+ AppendFilesWithContent (infiles , catfp , dirlistfromtxt , filevalues , extradata , compression ,
34923508 compresswholefile , compressionlevel , compressionuselist , followlink , checksumtype , formatspecs , verbose )
34933509 if (outfile == "-" or outfile is None or hasattr (outfile , "read" ) or hasattr (outfile , "write" )):
34943510 catfp = CompressArchiveFile (
@@ -3548,7 +3564,7 @@ def AppendListsWithContentToOutFile(inlist, outfile, dirlistfromtxt=False, compr
35483564 if (not compresswholefile and fextname in outextlistwd ):
35493565 compresswholefile = True
35503566 catfp = CompressOpenFile (outfile , compresswholefile , compressionlevel )
3551- catfp = AppendListsWithContent (inlist , catfp , dirlistfromtxt , filevalues , extradata , compression ,
3567+ AppendListsWithContent (inlist , catfp , dirlistfromtxt , filevalues , extradata , compression ,
35523568 compresswholefile , compressionlevel , followlink , checksumtype , formatspecs , verbose )
35533569 if (outfile == "-" or outfile is None or hasattr (outfile , "read" ) or hasattr (outfile , "write" )):
35543570 catfp = CompressArchiveFile (
@@ -4366,7 +4382,7 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
43664382 GetDirList = infilelist
43674383 else :
43684384 GetDirList = ListDir (infilelist , followlink , False )
4369- if (not isinstance (infiles , (list , tuple , ))):
4385+ if (not isinstance (GetDirList , (list , tuple , ))):
43704386 return False
43714387 FullSizeFiles = GetTotalSize (GetDirList )
43724388 if (not GetDirList ):
@@ -4378,7 +4394,7 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
43784394 filetoinode = {}
43794395 inodetocatinode = {}
43804396 numfiles = int (len (GetDirList ))
4381- catfp = AppendFileHeader (catfp , numfiles , checksumtype , formatspecs )
4397+ AppendFileHeader (catfp , numfiles , [] , checksumtype , formatspecs )
43824398 FullSizeFilesAlt = 0
43834399 for curfname in GetDirList :
43844400 if (re .findall ("^[.|/]" , curfname )):
@@ -4612,7 +4628,7 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
46124628 ftypehex = format (ftype , 'x' ).lower ()
46134629 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression ,
46144630 fcsize , fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , "+" + str (len (formatspecs ['format_delimiter' ]))]
4615- catfp = AppendFileHeaderWithContent (
4631+ AppendFileHeaderWithContent (
46164632 catfp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
46174633 fcontents .close ()
46184634 if (numfiles > 0 ):
@@ -4764,7 +4780,7 @@ def PackArchiveFileFromTarFile(infile, outfile, compression="auto", compresswhol
47644780 except FileNotFoundError :
47654781 return False
47664782 numfiles = int (len (tarfp .getmembers ()))
4767- catfp = AppendFileHeader (catfp , numfiles , checksumtype , formatspecs )
4783+ AppendFileHeader (catfp , numfiles , [] , checksumtype , formatspecs )
47684784 for member in sorted (tarfp .getmembers (), key = lambda x : x .name ):
47694785 if (re .findall ("^[.|/]" , member .name )):
47704786 fname = member .name
@@ -4894,7 +4910,7 @@ def PackArchiveFileFromTarFile(infile, outfile, compression="auto", compresswhol
48944910 ftypehex = format (ftype , 'x' ).lower ()
48954911 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression ,
48964912 fcsize , fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , "+" + str (len (formatspecs ['format_delimiter' ]))]
4897- catfp = AppendFileHeaderWithContent (
4913+ AppendFileHeaderWithContent (
48984914 catfp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
48994915 fcontents .close ()
49004916 if (numfiles > 0 ):
@@ -5010,7 +5026,7 @@ def PackArchiveFileFromZipFile(infile, outfile, compression="auto", compresswhol
50105026 if (ziptest ):
50115027 VerbosePrintOut ("Bad file found!" )
50125028 numfiles = int (len (zipfp .infolist ()))
5013- catfp = AppendFileHeader (catfp , numfiles , checksumtype , formatspecs )
5029+ AppendFileHeader (catfp , numfiles , [] , checksumtype , formatspecs )
50145030 for member in sorted (zipfp .infolist (), key = lambda x : x .filename ):
50155031 if (re .findall ("^[.|/]" , member .filename )):
50165032 fname = member .filename
@@ -5165,7 +5181,7 @@ def PackArchiveFileFromZipFile(infile, outfile, compression="auto", compresswhol
51655181 ftypehex = format (ftype , 'x' ).lower ()
51665182 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression ,
51675183 fcsize , fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , "+" + str (len (formatspecs ['format_delimiter' ]))]
5168- catfp = AppendFileHeaderWithContent (
5184+ AppendFileHeaderWithContent (
51695185 catfp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
51705186 fcontents .close ()
51715187 if (numfiles > 0 ):
@@ -5266,7 +5282,7 @@ def PackArchiveFileFromRarFile(infile, outfile, compression="auto", compresswhol
52665282 if (rartest ):
52675283 VerbosePrintOut ("Bad file found!" )
52685284 numfiles = int (len (rarfp .infolist ()))
5269- catfp = AppendFileHeader (catfp , numfiles , checksumtype , formatspecs )
5285+ AppendFileHeader (catfp , numfiles , [] , checksumtype , formatspecs )
52705286 try :
52715287 catfp .flush ()
52725288 if (hasattr (os , "sync" )):
@@ -5466,7 +5482,7 @@ def PackArchiveFileFromRarFile(infile, outfile, compression="auto", compresswhol
54665482 ftypehex = format (ftype , 'x' ).lower ()
54675483 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression ,
54685484 fcsize , fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , "+" + str (len (formatspecs ['format_delimiter' ]))]
5469- catfp = AppendFileHeaderWithContent (
5485+ AppendFileHeaderWithContent (
54705486 catfp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
54715487 fcontents .close ()
54725488 if (numfiles > 0 ):
@@ -5567,7 +5583,7 @@ def PackArchiveFileFromSevenZipFile(infile, outfile, compression="auto", compres
55675583 if (sztestalt ):
55685584 VerbosePrintOut ("Bad file found!" )
55695585 numfiles = int (len (szpfp .list ()))
5570- AppendFileHeader (catfp , numfiles , checksumtype , formatspecs )
5586+ AppendFileHeader (catfp , numfiles , [], checksumtype , formatspecs )
55715587 for member in sorted (szpfp .list (), key = lambda x : x .filename ):
55725588 if (re .findall ("^[.|/]" , member .filename )):
55735589 fname = member .filename
@@ -5700,7 +5716,7 @@ def PackArchiveFileFromSevenZipFile(infile, outfile, compression="auto", compres
57005716 ftypehex = format (ftype , 'x' ).lower ()
57015717 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression ,
57025718 fcsize , fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , "+" + str (len (formatspecs ['format_delimiter' ]))]
5703- catfp = AppendFileHeaderWithContent (
5719+ AppendFileHeaderWithContent (
57045720 catfp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
57055721 fcontents .close ()
57065722 if (numfiles > 0 ):
@@ -7175,7 +7191,7 @@ def ListDirToArrayAlt(infiles, dirlistfromtxt=False, followlink=False, listonly=
71757191 GetDirList = infilelist
71767192 else :
71777193 GetDirList = ListDir (infilelist , followlink , False )
7178- if (not isinstance (infiles , (list , tuple , ))):
7194+ if (not isinstance (GetDirList , (list , tuple , ))):
71797195 return False
71807196 FullSizeFiles = GetTotalSize (GetDirList )
71817197 if (not GetDirList ):
@@ -8491,7 +8507,7 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru
84918507 fnumfiles = int (listcatfiles ['fnumfiles' ])
84928508 if (lenlist > fnumfiles or lenlist < fnumfiles ):
84938509 fnumfiles = lenlist
8494- AppendFileHeader (catfp , fnumfiles , checksumtype , formatspecs )
8510+ AppendFileHeader (catfp , fnumfiles , [], checksumtype , formatspecs )
84958511 lenlist = len (listcatfiles ['ffilelist' ])
84968512 fnumfiles = int (listcatfiles ['fnumfiles' ])
84978513 lcfi = 0
@@ -8660,7 +8676,7 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru
86608676 fcompression = ""
86618677 catoutlist = [ftypehex , fname , flinkname , fsize , fatime , fmtime , fctime , fbtime , fmode , fwinattributes , fcompression , fcsize ,
86628678 fuid , funame , fgid , fgname , fcurfid , fcurinode , flinkcount , fdev , fdev_minor , fdev_major , fseeknextfile ]
8663- catfp = AppendFileHeaderWithContent (
8679+ AppendFileHeaderWithContent (
86648680 catfp , catoutlist , extradata , fcontents .read (), checksumtype , formatspecs )
86658681 fcontents .close ()
86668682 lcfi = lcfi + 1
0 commit comments