Skip to content

Commit d2a580f

Browse files
Add files via upload
1 parent 3c7fb0f commit d2a580f

File tree

1 file changed

+52
-59
lines changed

1 file changed

+52
-59
lines changed

pycatfile.py

Lines changed: 52 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -4325,25 +4325,24 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
43254325
finode = int(HeaderOut[24], 16)
43264326
flinkcount = int(HeaderOut[25], 16)
43274327
fdev = int(HeaderOut[26], 16)
4328-
fdev_minor = int(HeaderOut[27], 16)
4329-
fdev_major = int(HeaderOut[28], 16)
4330-
fseeknextfile = HeaderOut[29]
4331-
fjsontype = HeaderOut[30]
4332-
fjsonlen = int(HeaderOut[31], 16)
4333-
fjsonsize = int(HeaderOut[32], 16)
4334-
fjsonchecksumtype = HeaderOut[33]
4335-
fjsonchecksum = HeaderOut[34]
4336-
fextrasize = int(HeaderOut[35], 16)
4337-
fextrafields = int(HeaderOut[36], 16)
4328+
frdev = int(HeaderOut[27], 16)
4329+
fseeknextfile = HeaderOut[28]
4330+
fjsontype = HeaderOut[29]
4331+
fjsonlen = int(HeaderOut[30], 16)
4332+
fjsonsize = int(HeaderOut[31], 16)
4333+
fjsonchecksumtype = HeaderOut[32]
4334+
fjsonchecksum = HeaderOut[33]
4335+
fextrasize = int(HeaderOut[34], 16)
4336+
fextrafields = int(HeaderOut[35], 16)
43384337
fextrafieldslist = []
4339-
extrastart = 37
4338+
extrastart = 36
43404339
extraend = extrastart + fextrafields
43414340
while(extrastart < extraend):
43424341
fextrafieldslist.append(HeaderOut[extrastart])
43434342
extrastart = extrastart + 1
43444343
fvendorfieldslist = []
43454344
fvendorfields = 0;
4346-
if(len(HeaderOut)>41):
4345+
if(len(HeaderOut)>40):
43474346
extrastart = extraend
43484347
extraend = len(HeaderOut) - 4
43494348
while(extrastart < extraend):
@@ -4503,7 +4502,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
45034502
if(not contentasfile):
45044503
fcontents = fcontents.read()
45054504
outlist = {'fheadersize': fheadsize, 'fhstart': fheaderstart, 'fhend': fhend, 'ftype': ftype, 'fencoding': fencoding, 'fcencoding': fcencoding, 'fname': fname, 'fbasedir': fbasedir, 'flinkname': flinkname, 'fsize': fsize, 'fblksize': fblksize, 'fblocks': fblocks, 'fflags': fflags, '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,
4506-
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': fseeknextfile, 'fheaderchecksumtype': HeaderOut[-4], 'fjsonchecksumtype': fjsonchecksumtype, 'fcontentchecksumtype': HeaderOut[-3], 'fnumfields': fnumfields + 2, 'frawheader': HeaderOut, 'fvendorfields': fvendorfields, 'fvendordata': fvendorfieldslist, 'fextrafields': fextrafields, 'fextrafieldsize': fextrasize, 'fextradata': fextrafieldslist, 'fjsontype': fjsontype, 'fjsonlen': fjsonlen, 'fjsonsize': fjsonsize, 'fjsonrawdata': fjsonrawcontent, 'fjsondata': fjsoncontent, 'fjstart': fjstart, 'fjend': fjend, 'fheaderchecksum': fcs, 'fjsonchecksum': fjsonchecksum, 'fcontentchecksum': fccs, 'fhascontents': pyhascontents, 'fcontentstart': fcontentstart, 'fcontentend': fcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents}
4505+
'fdev': fdev, 'frdev': frdev, 'fseeknextfile': fseeknextfile, 'fheaderchecksumtype': HeaderOut[-4], 'fjsonchecksumtype': fjsonchecksumtype, 'fcontentchecksumtype': HeaderOut[-3], 'fnumfields': fnumfields + 2, 'frawheader': HeaderOut, 'fvendorfields': fvendorfields, 'fvendordata': fvendorfieldslist, 'fextrafields': fextrafields, 'fextrafieldsize': fextrasize, 'fextradata': fextrafieldslist, 'fjsontype': fjsontype, 'fjsonlen': fjsonlen, 'fjsonsize': fjsonsize, 'fjsonrawdata': fjsonrawcontent, 'fjsondata': fjsoncontent, 'fjstart': fjstart, 'fjend': fjend, 'fheaderchecksum': fcs, 'fjsonchecksum': fjsonchecksum, 'fcontentchecksum': fccs, 'fhascontents': pyhascontents, 'fcontentstart': fcontentstart, 'fcontentend': fcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents}
45074506
return outlist
45084507

45094508

@@ -4551,18 +4550,17 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
45514550
finode = int(HeaderOut[24], 16)
45524551
flinkcount = int(HeaderOut[25], 16)
45534552
fdev = int(HeaderOut[26], 16)
4554-
fdev_minor = int(HeaderOut[27], 16)
4555-
fdev_major = int(HeaderOut[28], 16)
4556-
fseeknextfile = HeaderOut[29]
4557-
fjsontype = HeaderOut[30]
4558-
fjsonlen = int(HeaderOut[31], 16)
4559-
fjsonsize = int(HeaderOut[32], 16)
4560-
fjsonchecksumtype = HeaderOut[33]
4561-
fjsonchecksum = HeaderOut[34]
4562-
fextrasize = int(HeaderOut[35], 16)
4563-
fextrafields = int(HeaderOut[36], 16)
4553+
frdev = int(HeaderOut[27], 16)
4554+
fseeknextfile = HeaderOut[28]
4555+
fjsontype = HeaderOut[29]
4556+
fjsonlen = int(HeaderOut[30], 16)
4557+
fjsonsize = int(HeaderOut[31], 16)
4558+
fjsonchecksumtype = HeaderOut[32]
4559+
fjsonchecksum = HeaderOut[33]
4560+
fextrasize = int(HeaderOut[34], 16)
4561+
fextrafields = int(HeaderOut[35], 16)
45644562
fextrafieldslist = []
4565-
extrastart = 37
4563+
extrastart = 36
45664564
extraend = extrastart + fextrafields
45674565
while(extrastart < extraend):
45684566
fextrafieldslist.append(HeaderOut[extrastart])
@@ -4717,7 +4715,7 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
47174715
if(not contentasfile):
47184716
fcontents = fcontents.read()
47194717
outlist = [ftype, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression, fcsize, fuid, funame, fgid, fgname, fid,
4720-
finode, flinkcount, fdev, fdev_minor, fdev_major, fseeknextfile, fjsoncontent, fextrafieldslist, HeaderOut[-4], HeaderOut[-3], fcontents]
4718+
finode, flinkcount, fdev, frdev, fseeknextfile, fjsoncontent, fextrafieldslist, HeaderOut[-4], HeaderOut[-3], fcontents]
47214719
return outlist
47224720

47234721

@@ -6015,9 +6013,10 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, extradata=[], json
60156013
fdev = fstatinfo.st_rdev
60166014
except AttributeError:
60176015
fdev = 0
6018-
getfdev = GetDevMajorMinor(fdev)
6019-
fdev_minor = getfdev[0]
6020-
fdev_major = getfdev[1]
6016+
try:
6017+
frdev = fstatinfo.st_rdev
6018+
except AttributeError:
6019+
frdev = 0
60216020
# Types that should be considered zero-length in the archive context:
60226021
zero_length_types = {1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13}
60236022
# Types that have actual data to read:
@@ -6061,8 +6060,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, extradata=[], json
60616060
except ImportError:
60626061
fgname = ""
60636062
fdev = format(int(fdev), 'x').lower()
6064-
fdev_minor = format(int(fdev_minor), 'x').lower()
6065-
fdev_major = format(int(fdev_major), 'x').lower()
6063+
frdev = format(int(frdev), 'x').lower()
60666064
finode = format(int(finode), 'x').lower()
60676065
flinkcount = format(int(flinkcount), 'x').lower()
60686066
if(hasattr(fstatinfo, "st_file_attributes")):
@@ -6177,7 +6175,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, extradata=[], json
61776175
fcontents.seek(0, 0)
61786176
ftypehex = format(ftype, 'x').lower()
61796177
tmpoutlist = [ftypehex, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
6180-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
6178+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, frdev, "+"+str(len(formatspecs['format_delimiter']))]
61816179
AppendFileHeaderWithContent(
61826180
fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[2], checksumtype[3], checksumtype[4]], formatspecs)
61836181
try:
@@ -6321,12 +6319,11 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
63216319
curfid = curfid + 1
63226320
if(ftype == 2):
63236321
flinkname = member.linkname
6322+
fdev = format(int("0"), 'x').lower()
63246323
try:
6325-
fdev = format(int(os.makedev(member.devmajor, member.devminor)), 'x').lower()
6324+
frdev = format(int(os.makedev(member.devmajor, member.devminor)), 'x').lower()
63266325
except AttributeError:
6327-
fdev = format(int(MakeDevAlt(member.devmajor, member.devminor)), 'x').lower()
6328-
fdev_minor = format(int(member.devminor), 'x').lower()
6329-
fdev_major = format(int(member.devmajor), 'x').lower()
6326+
frdev = format(int(MakeDevAlt(member.devmajor, member.devminor)), 'x').lower()
63306327
# Types that should be considered zero-length in the archive context:
63316328
zero_length_types = {1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13}
63326329
# Types that have actual data to read:
@@ -6408,7 +6405,7 @@ def AppendFilesWithContentFromTarFile(infile, fp, extradata=[], jsondata={}, com
64086405
fcontents.seek(0, 0)
64096406
ftypehex = format(ftype, 'x').lower()
64106407
tmpoutlist = [ftypehex, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
6411-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
6408+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, frdev, "+"+str(len(formatspecs['format_delimiter']))]
64126409
AppendFileHeaderWithContent(
64136410
fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[2], checksumtype[3], checksumtype[4]], formatspecs)
64146411
try:
@@ -6499,8 +6496,7 @@ def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, com
64996496
fcurinode = format(int(curfid), 'x').lower()
65006497
curfid = curfid + 1
65016498
fdev = format(int(0), 'x').lower()
6502-
fdev_minor = format(int(0), 'x').lower()
6503-
fdev_major = format(int(0), 'x').lower()
6499+
frdev = format(int(0), 'x').lower()
65046500
if(ftype == 5):
65056501
fsize = format(int("0"), 'x').lower()
65066502
elif(ftype == 0):
@@ -6631,7 +6627,7 @@ def AppendFilesWithContentFromZipFile(infile, fp, extradata=[], jsondata={}, com
66316627
fcontents.seek(0, 0)
66326628
ftypehex = format(ftype, 'x').lower()
66336629
tmpoutlist = [ftypehex, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
6634-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
6630+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, frdev, "+"+str(len(formatspecs['format_delimiter']))]
66356631
AppendFileHeaderWithContent(
66366632
fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[2], checksumtype[3], checksumtype[4]], formatspecs)
66376633
try:
@@ -6747,8 +6743,7 @@ def AppendFilesWithContentFromRarFile(infile, fp, extradata=[], jsondata={}, com
67476743
fcurinode = format(int(curfid), 'x').lower()
67486744
curfid = curfid + 1
67496745
fdev = format(int(0), 'x').lower()
6750-
fdev_minor = format(int(0), 'x').lower()
6751-
fdev_major = format(int(0), 'x').lower()
6746+
frdev = format(int(0), 'x').lower()
67526747
if(ftype == 5):
67536748
fsize = format(int("0"), 'x').lower()
67546749
elif(ftype == 0):
@@ -6873,7 +6868,7 @@ def AppendFilesWithContentFromRarFile(infile, fp, extradata=[], jsondata={}, com
68736868
fcontents.seek(0, 0)
68746869
ftypehex = format(ftype, 'x').lower()
68756870
tmpoutlist = [ftypehex, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
6876-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
6871+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, frdev, "+"+str(len(formatspecs['format_delimiter']))]
68776872
AppendFileHeaderWithContent(
68786873
fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[2], checksumtype[3], checksumtype[4]], formatspecs)
68796874
try:
@@ -6954,8 +6949,7 @@ def AppendFilesWithContentFromSevenZipFile(infile, fp, extradata=[], jsondata={}
69546949
fcurinode = format(int(curfid), 'x').lower()
69556950
curfid = curfid + 1
69566951
fdev = format(int(0), 'x').lower()
6957-
fdev_minor = format(int(0), 'x').lower()
6958-
fdev_major = format(int(0), 'x').lower()
6952+
frdev = format(int(0), 'x').lower()
69596953
if(ftype == 5):
69606954
fsize = format(int("0"), 'x').lower()
69616955
fatime = format(int(member.creationtime.timestamp()), 'x').lower()
@@ -7055,7 +7049,7 @@ def AppendFilesWithContentFromSevenZipFile(infile, fp, extradata=[], jsondata={}
70557049
fcontents.seek(0, 0)
70567050
ftypehex = format(ftype, 'x').lower()
70577051
tmpoutlist = [ftypehex, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
7058-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+"+str(len(formatspecs['format_delimiter']))]
7052+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, frdev, "+"+str(len(formatspecs['format_delimiter']))]
70597053
AppendFileHeaderWithContent(
70607054
fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[2], checksumtype[3], checksumtype[4]], formatspecs)
70617055
try:
@@ -7116,16 +7110,15 @@ def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, extradata=[], jsond
71167110
finode = format(curfname[22], 'x').lower()
71177111
flinkcount = format(curfname[23], 'x').lower()
71187112
fdev = format(curfname[24], 'x').lower()
7119-
fdev_minor = format(curfname[25], 'x').lower()
7120-
fdev_major = format(curfname[26], 'x').lower()
7121-
fseeknextfile = curfname[27]
7122-
extradata = curfname[28]
7123-
fheaderchecksumtype = curfname[29]
7124-
fcontentchecksumtype = curfname[30]
7125-
fcontents = curfname[31]
7113+
frdev = format(curfname[25], 'x').lower()
7114+
fseeknextfile = curfname[26]
7115+
extradata = curfname[27]
7116+
fheaderchecksumtype = curfname[28]
7117+
fcontentchecksumtype = curfname[29]
7118+
fcontents = curfname[30]
71267119
fencoding = GetFileEncoding(fcontents, 0, False)[0]
71277120
tmpoutlist = [ftype, fencoding, fcencoding, fname, flinkname, fsize, fblksize, fblocks, fflags, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression, fcsize,
7128-
fuid, funame, fgid, fgname, fid, finode, flinkcount, fdev, fdev_minor, fdev_major, fseeknextfile]
7121+
fuid, funame, fgid, fgname, fid, finode, flinkcount, fdev, frdev, fseeknextfile]
71297122
fcontents.seek(0, 0)
71307123
AppendFileHeaderWithContent(
71317124
fp, tmpoutlist, extradata, jsondata, fcontents.read(), [checksumtype[2], checksumtype[3], checksumtype[4]], formatspecs)
@@ -9743,10 +9736,10 @@ def CatFileValidate(infile, fmttype="auto", filestart=0,
97439736
outfcsize = int(inheaderdata[18], 16)
97449737
fid = int(inheaderdata[23], 16)
97459738
finode = int(inheaderdata[24], 16)
9746-
outfseeknextfile = inheaderdata[29]
9747-
outfjsonsize = int(inheaderdata[32], 16)
9748-
outfjsonchecksumtype = inheaderdata[33]
9749-
outfjsonchecksum = inheaderdata[34]
9739+
outfseeknextfile = inheaderdata[28]
9740+
outfjsonsize = int(inheaderdata[31], 16)
9741+
outfjsonchecksumtype = inheaderdata[32]
9742+
outfjsonchecksum = inheaderdata[33]
97509743
outfhend = fp.tell() - 1 # (kept for parity; not used)
97519744
outfjstart = fp.tell()
97529745
# Read JSON bytes; compute checksum on bytes for robustness
@@ -9759,9 +9752,9 @@ def CatFileValidate(infile, fmttype="auto", filestart=0,
97599752
outfjend = fp.tell()
97609753
fp.seek(len(formatspecs['format_delimiter']), 1)
97619754
injsonfcs = GetFileChecksum(outfprejsoncontent_bytes, outfjsonchecksumtype, True, formatspecs)
9762-
outfextrafields = int(inheaderdata[36], 16)
9755+
outfextrafields = int(inheaderdata[35], 16)
97639756
extrafieldslist = []
9764-
extrastart = 37
9757+
extrastart = 36
97659758
extraend = extrastart + outfextrafields
97669759
outfcs = inheaderdata[-2].lower()
97679760
outfccs = inheaderdata[-1].lower()

0 commit comments

Comments
 (0)