Skip to content

Commit 9b1736d

Browse files
author
Kazuki Suzuki Przyborowski
committed
Update pyarchivefile.py
1 parent 27b2d4c commit 9b1736d

File tree

1 file changed

+45
-29
lines changed

1 file changed

+45
-29
lines changed

pyarchivefile.py

Lines changed: 45 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2085,7 +2085,7 @@ def ReadFileHeaderDataWithContent(fp, listonly=False, uncompress=True, skipcheck
20852085
fcompression = HeaderOut[12]
20862086
fcsize = int(HeaderOut[13], 16)
20872087
fseeknextfile = HeaderOut[25]
2088-
fjsonsize = int(HeaderOut[27], 16)
2088+
fjsonsize = int(HeaderOut[29], 16)
20892089
fjsoncontent = {}
20902090
fprejsoncontent = fp.read(fjsonsize).decode("UTF-8")
20912091
if(fjsonsize > 0):
@@ -2207,11 +2207,13 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
22072207
fdev_minor = int(HeaderOut[24], 16)
22082208
fdev_major = int(HeaderOut[25], 16)
22092209
fseeknextfile = HeaderOut[26]
2210-
fjsonsize = int(HeaderOut[27], 16)
2211-
fextrasize = int(HeaderOut[28], 16)
2212-
fextrafields = int(HeaderOut[29], 16)
2210+
fjsontype = HeaderOut[27]
2211+
fjsonlen = int(HeaderOut[28], 16)
2212+
fjsonsize = int(HeaderOut[29], 16)
2213+
fextrasize = int(HeaderOut[30], 16)
2214+
fextrafields = int(HeaderOut[31], 16)
22132215
fextrafieldslist = []
2214-
extrastart = 30
2216+
extrastart = 32
22152217
extraend = extrastart + fextrafields
22162218
while(extrastart < extraend):
22172219
fextrafieldslist.append(HeaderOut[extrastart])
@@ -2309,7 +2311,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
23092311
if(not contentasfile):
23102312
fcontents = fcontents.read()
23112313
outlist = {'fheadersize': fheadsize, 'fhstart': fheaderstart, 'fhend': fhend, 'ftype': ftype, 'fencoding': fencoding, 'fcencoding': fcencoding, 'fname': fname, 'fbasedir': fbasedir, 'flinkname': flinkname, 'fsize': fsize, 'fatime': fatime, 'fmtime': fmtime, 'fctime': fctime, 'fbtime': fbtime, 'fmode': fmode, 'fchmode': fchmode, 'ftypemod': ftypemod, 'fwinattributes': fwinattributes, 'fcompression': fcompression, 'fcsize': fcsize, 'fuid': fuid, 'funame': funame, 'fgid': fgid, 'fgname': fgname, 'finode': finode, 'flinkcount': flinkcount,
2312-
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': fseeknextfile, 'fheaderchecksumtype': HeaderOut[-4], 'fcontentchecksumtype': HeaderOut[-3], 'fnumfields': fnumfields + 2, 'frawheader': HeaderOut, 'fextrafields': fextrafields, 'fextrafieldsize': fextrasize, 'fextradata': fextrafieldslist, 'fjsondata': fjsoncontent, 'fheaderchecksum': fcs, 'fcontentchecksum': fccs, 'fhascontents': pyhascontents, 'fcontentstart': fcontentstart, 'fcontentend': fcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents}
2314+
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': fseeknextfile, 'fheaderchecksumtype': HeaderOut[-4], 'fcontentchecksumtype': HeaderOut[-3], 'fnumfields': fnumfields + 2, 'frawheader': HeaderOut, 'fextrafields': fextrafields, 'fextrafieldsize': fextrasize, 'fextradata': fextrafieldslist, 'fjsontype': fjsontype, 'fjsonlen': fjsonlen, 'fjsonsize': fjsonsize, 'fjsondata': fjsoncontent, 'fheaderchecksum': fcs, 'fcontentchecksum': fccs, 'fhascontents': pyhascontents, 'fcontentstart': fcontentstart, 'fcontentend': fcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents}
23132315
return outlist
23142316

23152317

@@ -2357,11 +2359,13 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
23572359
fdev_minor = int(HeaderOut[24], 16)
23582360
fdev_major = int(HeaderOut[25], 16)
23592361
fseeknextfile = HeaderOut[26]
2360-
fjsonsize = int(HeaderOut[27], 16)
2361-
fextrasize = int(HeaderOut[28], 16)
2362-
fextrafields = int(HeaderOut[29], 16)
2362+
fjsontype = HeaderOut[27]
2363+
fjsonlen = int(HeaderOut[28], 16)
2364+
fjsonsize = int(HeaderOut[29], 16)
2365+
fextrasize = int(HeaderOut[30], 16)
2366+
fextrafields = int(HeaderOut[31], 16)
23632367
fextrafieldslist = []
2364-
extrastart = 30
2368+
extrastart = 32
23652369
extraend = extrastart + fextrafields
23662370
while(extrastart < extraend):
23672371
fextrafieldslist.append(HeaderOut[extrastart])
@@ -3380,9 +3384,10 @@ def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], jsondata={}, fi
33803384
extrasizestr = extrasizestr + \
33813385
AppendNullBytes(extradata, formatspecs['format_delimiter'])
33823386
extrasizelen = format(len(extrasizestr), 'x').lower()
3383-
tmpoutlen = len(filevalues) + len(extradata) + 7
3387+
tmpoutlen = len(filevalues) + len(extradata) + 9
33843388
tmpoutlenhex = format(tmpoutlen, 'x').lower()
33853389
tmpoutlist = filevalues
3390+
fjsontype = "json"
33863391
if(len(jsondata) > 0):
33873392
try:
33883393
fjsoncontent = base64.b64encode(json.dumps(jsondata, separators=(',', ':')).encode("UTF-8"))
@@ -3394,7 +3399,10 @@ def AppendFileHeaderWithContent(fp, filevalues=[], extradata=[], jsondata={}, fi
33943399
else:
33953400
fjsoncontent = "".encode("UTF-8")
33963401
fjsonsize = format(len(fjsoncontent), 'x').lower()
3402+
fjsonlen = format(len(jsondata), 'x').lower()
33973403
tmpoutlist.insert(0, tmpoutlenhex)
3404+
tmpoutlist.append(fjsontype)
3405+
tmpoutlist.append(fjsonlen)
33983406
tmpoutlist.append(fjsonsize)
33993407
tmpoutlist.append(extrasizelen)
34003408
tmpoutlist.append(extrafields)
@@ -7837,14 +7845,16 @@ def ArchiveFileSeekToFileName(infile, fmttype="auto", seekfile=None, listonly=Fa
78377845
prefcompression = preheaderdata[14]
78387846
prefcsize = int(preheaderdata[15], 16)
78397847
prefseeknextfile = preheaderdata[26]
7840-
prefjsonsize = int(HeaderOut[27], 16)
7848+
prefjsontype = preheaderdata[27]
7849+
prefjsonlen = int(preheaderdata[28], 16)
7850+
prefjsonsize = int(preheaderdata[29], 16)
78417851
prefjoutfprejsoncontent = fp.read(prefjsonsize).decode("UTF-8")
78427852
if(prefjsonsize <= 0):
78437853
prefjoutfprejsoncontent = "".encode()
78447854
fp.seek(len(formatspecs['format_delimiter']), 1)
7845-
prefextrasize = int(preheaderdata[28], 16)
7846-
prefextrafields = int(preheaderdata[29], 16)
7847-
extrastart = 30
7855+
prefextrasize = int(preheaderdata[30], 16)
7856+
prefextrafields = int(preheaderdata[31], 16)
7857+
extrastart = 32
78487858
extraend = extrastart + prefextrafields
78497859
prefcs = preheaderdata[-2].lower()
78507860
prenewfcs = preheaderdata[-1].lower()
@@ -8149,7 +8159,9 @@ def ArchiveFileValidate(infile, fmttype="auto", formatspecs=__file_format_multi_
81498159
outfdev_minor = int(inheaderdata[24], 16)
81508160
outfdev_major = int(inheaderdata[25], 16)
81518161
outfseeknextfile = inheaderdata[26]
8152-
outfjsonsize = int(inheaderdata[27], 16)
8162+
outfjsontype = inheaderdata[27]
8163+
outfjsonlen = int(inheaderdata[28], 16)
8164+
outfjsonsize = int(inheaderdata[29], 16)
81538165
outfjsoncontent = {}
81548166
outfprejsoncontent = fp.read(outfjsonsize).decode("UTF-8")
81558167
if(outfjsonsize > 0):
@@ -8165,10 +8177,10 @@ def ArchiveFileValidate(infile, fmttype="auto", formatspecs=__file_format_multi_
81658177
outfprejsoncontent = ""
81668178
outfjsoncontent = {}
81678179
fp.seek(len(formatspecs['format_delimiter']), 1)
8168-
outfextrasize = int(inheaderdata[28], 16)
8169-
outfextrafields = int(inheaderdata[29], 16)
8180+
outfextrasize = int(inheaderdata[30], 16)
8181+
outfextrafields = int(inheaderdata[31], 16)
81708182
extrafieldslist = []
8171-
extrastart = 30
8183+
extrastart = 32
81728184
extraend = extrastart + outfextrafields
81738185
outfcs = inheaderdata[-2].lower()
81748186
outfccs = inheaderdata[-1].lower()
@@ -8475,14 +8487,16 @@ def ArchiveFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=
84758487
prefcompression = preheaderdata[14]
84768488
prefcsize = int(preheaderdata[15], 16)
84778489
prefseeknextfile = preheaderdata[26]
8478-
prefjsonsize = int(preheaderdata[27], 16)
8490+
prefjsontype = preheaderdata[27]
8491+
prefjsonlen = int(preheaderdata[28], 16)
8492+
prefjsonsize = int(preheaderdata[29], 16)
84798493
prefjoutfprejsoncontent = fp.read(prefjsonsize).decode("UTF-8")
84808494
if(prefjsonsize <= 0):
8481-
prefjoutfprejsoncontent = ""
8495+
prefjoutfprejsoncontent = "".encode()
84828496
fp.seek(len(formatspecs['format_delimiter']), 1)
8483-
prefextrasize = int(preheaderdata[28], 16)
8484-
prefextrafields = int(preheaderdata[29], 16)
8485-
extrastart = 30
8497+
prefextrasize = int(preheaderdata[30], 16)
8498+
prefextrafields = int(preheaderdata[31], 16)
8499+
extrastart = 32
84868500
extraend = extrastart + prefextrafields
84878501
prefcs = preheaderdata[-2].lower()
84888502
prenewfcs = preheaderdata[-1].lower()
@@ -8577,7 +8591,9 @@ def ArchiveFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=
85778591
outfdev_minor = int(inheaderdata[24], 16)
85788592
outfdev_major = int(inheaderdata[25], 16)
85798593
outfseeknextfile = inheaderdata[26]
8580-
outfjsonsize = int(inheaderdata[27], 16)
8594+
outfjsontype = inheaderdata[27]
8595+
outfjsonlen = int(inheaderdata[28], 16)
8596+
outfjsonsize = int(inheaderdata[29], 16)
85818597
outfjsoncontent = {}
85828598
outfprejsoncontent = fp.read(outfjsonsize).decode("UTF-8")
85838599
if(outfjsonsize > 0):
@@ -8593,10 +8609,10 @@ def ArchiveFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=
85938609
outfprejsoncontent = ""
85948610
outfjsoncontent = {}
85958611
fp.seek(len(formatspecs['format_delimiter']), 1)
8596-
outfextrasize = int(inheaderdata[28], 16)
8597-
outfextrafields = int(inheaderdata[29], 16)
8612+
outfextrasize = int(inheaderdata[30], 16)
8613+
outfextrafields = int(inheaderdata[31], 16)
85988614
extrafieldslist = []
8599-
extrastart = 30
8615+
extrastart = 32
86008616
extraend = extrastart + outfextrafields
86018617
while(extrastart < extraend):
86028618
extrafieldslist.append(inheaderdata[extrastart])
@@ -8680,7 +8696,7 @@ def ArchiveFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=
86808696
outfcontents.seek(0, 0)
86818697
if(not contentasfile):
86828698
outfcontents = outfcontents.read()
8683-
outlist['ffilelist'].append({'fid': realidnum, 'fidalt': fileidnum, 'fheadersize': outfheadsize, 'fhstart': outfhstart, 'fhend': outfhend, 'ftype': outftype, 'fencoding': outfencoding, 'fcencoding': outfcencoding, 'fname': outfname, 'fbasedir': outfbasedir, 'flinkname': outflinkname, 'fsize': outfsize, 'fatime': outfatime, 'fmtime': outfmtime, 'fctime': outfctime, 'fbtime': outfbtime, 'fmode': outfmode, 'fchmode': outfchmode, 'ftypemod': outftypemod, 'fwinattributes': outfwinattributes, 'fcompression': outfcompression, 'fcsize': outfcsize, 'fuid': outfuid, 'funame': outfuname, 'fgid': outfgid, 'fgname': outfgname, 'finode': outfinode, 'flinkcount': outflinkcount, 'fdev': outfdev, 'fminor': outfdev_minor, 'fmajor': outfdev_major, 'fseeknextfile': outfseeknextfile, 'fheaderchecksumtype': inheaderdata[-4], 'fcontentchecksumtype': inheaderdata[-3], 'fnumfields': outfnumfields + 2, 'frawheader': inheaderdata, 'fextrafields': outfextrafields, 'fextrafieldsize': outfextrasize, 'fextradata': extrafieldslist, 'fjsondata': outfjsoncontent, 'fheaderchecksum': outfcs, 'fcontentchecksum': outfccs, 'fhascontents': pyhascontents, 'fcontentstart': outfcontentstart, 'fcontentend': outfcontentend, 'fcontentasfile': contentasfile, 'fcontents': outfcontents})
8699+
outlist['ffilelist'].append({'fid': realidnum, 'fidalt': fileidnum, 'fheadersize': outfheadsize, 'fhstart': outfhstart, 'fhend': outfhend, 'ftype': outftype, 'fencoding': outfencoding, 'fcencoding': outfcencoding, 'fname': outfname, 'fbasedir': outfbasedir, 'flinkname': outflinkname, 'fsize': outfsize, 'fatime': outfatime, 'fmtime': outfmtime, 'fctime': outfctime, 'fbtime': outfbtime, 'fmode': outfmode, 'fchmode': outfchmode, 'ftypemod': outftypemod, 'fwinattributes': outfwinattributes, 'fcompression': outfcompression, 'fcsize': outfcsize, 'fuid': outfuid, 'funame': outfuname, 'fgid': outfgid, 'fgname': outfgname, 'finode': outfinode, 'flinkcount': outflinkcount, 'fdev': outfdev, 'fminor': outfdev_minor, 'fmajor': outfdev_major, 'fseeknextfile': outfseeknextfile, 'fheaderchecksumtype': inheaderdata[-4], 'fcontentchecksumtype': inheaderdata[-3], 'fnumfields': outfnumfields + 2, 'frawheader': inheaderdata, 'fextrafields': outfextrafields, 'fextrafieldsize': outfextrasize, 'fextradata': extrafieldslist, 'fjsontype': outfjsontype, 'fjsonlen': outfjsonlen, 'fjsonsize': outfjsonsize, 'fjsondata': outfjsoncontent, 'fheaderchecksum': outfcs, 'fcontentchecksum': outfccs, 'fhascontents': pyhascontents, 'fcontentstart': outfcontentstart, 'fcontentend': outfcontentend, 'fcontentasfile': contentasfile, 'fcontents': outfcontents})
86848700
fileidnum = fileidnum + 1
86858701
realidnum = realidnum + 1
86868702
if(returnfp):

0 commit comments

Comments
 (0)