Skip to content

Commit fdd76e3

Browse files
author
Kazuki Suzuki Przyborowski
committed
Update pycatfile.py
1 parent f574425 commit fdd76e3

File tree

1 file changed

+47
-43
lines changed

1 file changed

+47
-43
lines changed

pycatfile.py

Lines changed: 47 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -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

30173017
def 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

Comments
 (0)