PyCatFile 0.14.12__tar.gz → 0.14.14__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pycatfile-0.14.12 → pycatfile-0.14.14}/PKG-INFO +1 -1
- {pycatfile-0.14.12 → pycatfile-0.14.14}/PyCatFile.egg-info/PKG-INFO +1 -1
- {pycatfile-0.14.12 → pycatfile-0.14.14}/pycatfile.py +149 -195
- {pycatfile-0.14.12 → pycatfile-0.14.14}/LICENSE +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/PyCatFile.egg-info/SOURCES.txt +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/PyCatFile.egg-info/dependency_links.txt +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/PyCatFile.egg-info/top_level.txt +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/PyCatFile.egg-info/zip-safe +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/README.md +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/catfile.py +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/neocatfile.py +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/setup.cfg +0 -0
- {pycatfile-0.14.12 → pycatfile-0.14.14}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyCatFile
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.14
|
|
4
4
|
Summary: A tar like file format name catfile after unix cat command (concatenate files) .
|
|
5
5
|
Home-page: https://github.com/GameMaker2k/PyCatFile
|
|
6
6
|
Download-URL: https://github.com/GameMaker2k/PyCatFile/archive/master.tar.gz
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyCatFile
|
|
3
|
-
Version: 0.14.
|
|
3
|
+
Version: 0.14.14
|
|
4
4
|
Summary: A tar like file format name catfile after unix cat command (concatenate files) .
|
|
5
5
|
Home-page: https://github.com/GameMaker2k/PyCatFile
|
|
6
6
|
Download-URL: https://github.com/GameMaker2k/PyCatFile/archive/master.tar.gz
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
Copyright 2018-2024 Game Maker 2k - http://intdb.sourceforge.net/
|
|
15
15
|
Copyright 2018-2024 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
|
|
16
16
|
|
|
17
|
-
$FileInfo: pycatfile.py - Last Update:
|
|
17
|
+
$FileInfo: pycatfile.py - Last Update: 12/3/2024 Ver. 0.14.14 RC 1 - Author: cooldude2k $
|
|
18
18
|
'''
|
|
19
19
|
|
|
20
20
|
from __future__ import absolute_import, division, print_function, unicode_literals, generators, with_statement, nested_scopes
|
|
@@ -25,6 +25,7 @@ import sys
|
|
|
25
25
|
import time
|
|
26
26
|
import stat
|
|
27
27
|
import zlib
|
|
28
|
+
import codecs
|
|
28
29
|
import base64
|
|
29
30
|
import shutil
|
|
30
31
|
import socket
|
|
@@ -63,6 +64,13 @@ except ImportError:
|
|
|
63
64
|
except ImportError:
|
|
64
65
|
import ConfigParser as configparser
|
|
65
66
|
|
|
67
|
+
try:
|
|
68
|
+
file
|
|
69
|
+
except NameError:
|
|
70
|
+
from io import IOBase
|
|
71
|
+
file = IOBase
|
|
72
|
+
#if isinstance(outfile, file) or isinstance(outfile, IOBase):
|
|
73
|
+
|
|
66
74
|
try:
|
|
67
75
|
basestring
|
|
68
76
|
except NameError:
|
|
@@ -85,7 +93,6 @@ except ImportError:
|
|
|
85
93
|
# Windows-specific setup
|
|
86
94
|
if os.name == 'nt':
|
|
87
95
|
if sys.version_info[0] == 2:
|
|
88
|
-
import codecs
|
|
89
96
|
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
|
|
90
97
|
sys.stderr = codecs.getwriter('utf-8')(sys.stderr)
|
|
91
98
|
else:
|
|
@@ -97,7 +104,6 @@ if os.name == 'nt':
|
|
|
97
104
|
hashlib_guaranteed = False
|
|
98
105
|
# Environment setup
|
|
99
106
|
os.environ["PYTHONIOENCODING"] = "UTF-8"
|
|
100
|
-
os.environ["LC_CTYPE"] = "UTF-8"
|
|
101
107
|
|
|
102
108
|
# Reload sys to set default encoding to UTF-8 (Python 2 only)
|
|
103
109
|
if sys.version_info[0] == 2:
|
|
@@ -297,12 +303,12 @@ __file_format_dict__ = {'format_name': __file_format_name__, 'format_magic': __f
|
|
|
297
303
|
'format_delimiter': __file_format_delimiter__, 'format_ver': __file_format_ver__, 'new_style': __use_new_style__, 'use_advanced_list': __use_advanced_list__, 'use_alt_inode': __use_alt_inode__}
|
|
298
304
|
__project__ = __program_name__
|
|
299
305
|
__project_url__ = "https://github.com/GameMaker2k/PyCatFile"
|
|
300
|
-
__version_info__ = (0, 14,
|
|
301
|
-
__version_date_info__ = (2024,
|
|
306
|
+
__version_info__ = (0, 14, 14, "RC 1", 1)
|
|
307
|
+
__version_date_info__ = (2024, 12, 3, "RC 1", 1)
|
|
302
308
|
__version_date__ = str(__version_date_info__[0]) + "." + str(
|
|
303
309
|
__version_date_info__[1]).zfill(2) + "." + str(__version_date_info__[2]).zfill(2)
|
|
304
310
|
__revision__ = __version_info__[3]
|
|
305
|
-
__revision_id__ = "$Id:
|
|
311
|
+
__revision_id__ = "$Id: 3ddc69234c08a55463f598d89770c82c7cdf2f9b $"
|
|
306
312
|
if(__version_info__[4] is not None):
|
|
307
313
|
__version_date_plusrc__ = __version_date__ + \
|
|
308
314
|
"-" + str(__version_date_info__[4])
|
|
@@ -574,8 +580,8 @@ def ListDir(dirpath, followlink=False, duplicates=False):
|
|
|
574
580
|
retlist.append(dpath)
|
|
575
581
|
if duplicates:
|
|
576
582
|
retlist.append(dpath)
|
|
577
|
-
for
|
|
578
|
-
fpath = os.path.join(root,
|
|
583
|
+
for files in filenames:
|
|
584
|
+
fpath = os.path.join(root, files)
|
|
579
585
|
fpath = RemoveWindowsPath(fpath)
|
|
580
586
|
if fs_encoding != 'utf-8':
|
|
581
587
|
fpath = fpath.encode(fs_encoding).decode('utf-8')
|
|
@@ -616,8 +622,8 @@ def ListDirAdvanced(dirpath, followlink=False, duplicates=False):
|
|
|
616
622
|
retlist.append(dpath)
|
|
617
623
|
elif duplicates:
|
|
618
624
|
retlist.append(dpath)
|
|
619
|
-
for
|
|
620
|
-
fpath = os.path.join(root,
|
|
625
|
+
for files in filenames:
|
|
626
|
+
fpath = os.path.join(root, files)
|
|
621
627
|
fpath = RemoveWindowsPath(fpath)
|
|
622
628
|
if fs_encoding != 'utf-8':
|
|
623
629
|
fpath = fpath.encode(fs_encoding).decode('utf-8')
|
|
@@ -1702,15 +1708,14 @@ def ReadFileHeaderDataBySizeWithContentToArray(fp, listonly=False, contentasfile
|
|
|
1702
1708
|
fid = int(HeaderOut[18], 16)
|
|
1703
1709
|
finode = int(HeaderOut[19], 16)
|
|
1704
1710
|
flinkcount = int(HeaderOut[20], 16)
|
|
1705
|
-
|
|
1706
|
-
|
|
1707
|
-
|
|
1708
|
-
|
|
1709
|
-
|
|
1710
|
-
|
|
1711
|
-
fextrafields = int(HeaderOut[27], 16)
|
|
1711
|
+
fdev = int(HeaderOut[21], 16)
|
|
1712
|
+
fdev_minor = int(HeaderOut[22], 16)
|
|
1713
|
+
fdev_major = int(HeaderOut[23], 16)
|
|
1714
|
+
fseeknextfile = HeaderOut[24]
|
|
1715
|
+
fextrasize = int(HeaderOut[25], 16)
|
|
1716
|
+
fextrafields = int(HeaderOut[26], 16)
|
|
1712
1717
|
extrafieldslist = []
|
|
1713
|
-
extrastart =
|
|
1718
|
+
extrastart = 27
|
|
1714
1719
|
extraend = extrastart + fextrafields
|
|
1715
1720
|
extrafieldslist = []
|
|
1716
1721
|
if(extrastart < extraend):
|
|
@@ -1779,8 +1784,8 @@ def ReadFileHeaderDataBySizeWithContentToArray(fp, listonly=False, contentasfile
|
|
|
1779
1784
|
fcontents.seek(0, 0)
|
|
1780
1785
|
if(not contentasfile):
|
|
1781
1786
|
fcontents = fcontents.read()
|
|
1782
|
-
catlist = {'fheadersize': fheadsize, 'fhstart': fheaderstart, 'fhend': fhend, 'ftype': ftype, '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,
|
|
1783
|
-
'
|
|
1787
|
+
catlist = {'fheadersize': fheadsize, 'fhstart': fheaderstart, 'fhend': fhend, 'ftype': ftype, '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,
|
|
1788
|
+
'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, 'fextralist': extrafieldslist, 'fheaderchecksum': fcs, 'fcontentchecksum': fccs, 'fhascontents': pyhascontents, 'fcontentstart': fcontentstart, 'fcontentend': fcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents}
|
|
1784
1789
|
return catlist
|
|
1785
1790
|
|
|
1786
1791
|
|
|
@@ -1821,15 +1826,14 @@ def ReadFileHeaderDataBySizeWithContentToList(fp, listonly=False, uncompress=Tru
|
|
|
1821
1826
|
fid = int(HeaderOut[18], 16)
|
|
1822
1827
|
finode = int(HeaderOut[19], 16)
|
|
1823
1828
|
flinkcount = int(HeaderOut[20], 16)
|
|
1824
|
-
|
|
1825
|
-
|
|
1826
|
-
|
|
1827
|
-
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
fextrafields = int(HeaderOut[27], 16)
|
|
1829
|
+
fdev = int(HeaderOut[21], 16)
|
|
1830
|
+
fdev_minor = int(HeaderOut[22], 16)
|
|
1831
|
+
fdev_major = int(HeaderOut[23], 16)
|
|
1832
|
+
fseeknextfile = HeaderOut[24]
|
|
1833
|
+
fextrasize = int(HeaderOut[25], 16)
|
|
1834
|
+
fextrafields = int(HeaderOut[26], 16)
|
|
1831
1835
|
extrafieldslist = []
|
|
1832
|
-
extrastart =
|
|
1836
|
+
extrastart = 27
|
|
1833
1837
|
extraend = extrastart + fextrafields
|
|
1834
1838
|
extrafieldslist = []
|
|
1835
1839
|
if(extrastart < extraend):
|
|
@@ -1896,7 +1900,7 @@ def ReadFileHeaderDataBySizeWithContentToList(fp, listonly=False, uncompress=Tru
|
|
|
1896
1900
|
else:
|
|
1897
1901
|
return False
|
|
1898
1902
|
catlist = [ftype, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression, fcsize, fuid, funame, fgid, fgname, fid,
|
|
1899
|
-
finode, flinkcount, fdev_minor, fdev_major,
|
|
1903
|
+
finode, flinkcount, fdev, fdev_minor, fdev_major, fseeknextfile, extrafieldslist, fheaderchecksumtype, fcontentchecksumtype, fcontents]
|
|
1900
1904
|
return catlist
|
|
1901
1905
|
|
|
1902
1906
|
|
|
@@ -1906,19 +1910,19 @@ def ReadFileDataBySizeWithContent(fp, listonly=False, uncompress=True, skipcheck
|
|
|
1906
1910
|
curloc = fp.tell()
|
|
1907
1911
|
if(curloc > 0):
|
|
1908
1912
|
fp.seek(0, 0)
|
|
1909
|
-
catheader = ReadFileHeaderData(fp,
|
|
1913
|
+
catheader = ReadFileHeaderData(fp, 5, delimiter)
|
|
1910
1914
|
if(curloc > 0):
|
|
1911
1915
|
fp.seek(curloc, 0)
|
|
1912
1916
|
headercheck = ValidateHeaderChecksum(
|
|
1913
|
-
catheader[:-1], catheader[
|
|
1914
|
-
newfcs = GetHeaderChecksum(catheader[:-2], catheader[
|
|
1917
|
+
catheader[:-1], catheader[3], catheader[4], formatspecs)
|
|
1918
|
+
newfcs = GetHeaderChecksum(catheader[:-2], catheader[3], True, formatspecs)
|
|
1915
1919
|
if(not headercheck and not skipchecksum):
|
|
1916
1920
|
VerbosePrintOut(
|
|
1917
1921
|
"File Header Checksum Error with file at offset " + str(0))
|
|
1918
1922
|
VerbosePrintOut("'" + str(newfcs) + "' != " +
|
|
1919
|
-
"'" + str(catheader[
|
|
1923
|
+
"'" + str(catheader[4]) + "'")
|
|
1920
1924
|
return False
|
|
1921
|
-
fnumfiles = int(catheader[
|
|
1925
|
+
fnumfiles = int(catheader[2], 16)
|
|
1922
1926
|
countnum = 0
|
|
1923
1927
|
flist = []
|
|
1924
1928
|
while(countnum < fnumfiles):
|
|
@@ -1937,25 +1941,25 @@ def ReadFileDataBySizeWithContentToArray(fp, seekstart=0, seekend=0, listonly=Fa
|
|
|
1937
1941
|
curloc = fp.tell()
|
|
1938
1942
|
if(curloc > 0):
|
|
1939
1943
|
fp.seek(0, 0)
|
|
1940
|
-
catheader = ReadFileHeaderData(fp,
|
|
1944
|
+
catheader = ReadFileHeaderData(fp, 5, delimiter)
|
|
1941
1945
|
if(curloc > 0):
|
|
1942
1946
|
fp.seek(curloc, 0)
|
|
1943
1947
|
headercheck = ValidateHeaderChecksum(
|
|
1944
|
-
catheader[:-1], catheader[
|
|
1945
|
-
newfcs = GetHeaderChecksum(catheader[:-2], catheader[
|
|
1948
|
+
catheader[:-1], catheader[3], catheader[4], formatspecs)
|
|
1949
|
+
newfcs = GetHeaderChecksum(catheader[:-2], catheader[3], True, formatspecs)
|
|
1946
1950
|
if(not headercheck and not skipchecksum):
|
|
1947
1951
|
VerbosePrintOut(
|
|
1948
1952
|
"File Header Checksum Error with file at offset " + str(0))
|
|
1949
1953
|
VerbosePrintOut("'" + str(newfcs) + "' != " +
|
|
1950
|
-
"'" + str(catheader[
|
|
1954
|
+
"'" + str(catheader[4]) + "'")
|
|
1951
1955
|
return False
|
|
1952
1956
|
catstring = catheader[0]
|
|
1953
1957
|
catversion = re.findall("([\\d]+)", catstring)
|
|
1954
1958
|
catversions = re.search('(.*?)(\\d+)', catstring).groups()
|
|
1955
|
-
fprenumfiles = catheader[
|
|
1959
|
+
fprenumfiles = catheader[2]
|
|
1956
1960
|
fnumfiles = int(fprenumfiles, 16)
|
|
1957
|
-
fprechecksumtype = catheader[
|
|
1958
|
-
fprechecksum = catheader[
|
|
1961
|
+
fprechecksumtype = catheader[3]
|
|
1962
|
+
fprechecksum = catheader[4]
|
|
1959
1963
|
catlist = {'fnumfiles': fnumfiles, 'fformat': catversions[0], 'fversion': catversions[1],
|
|
1960
1964
|
'fformatspecs': formatspecs, 'fchecksumtype': fprechecksumtype, 'fheaderchecksum': fprechecksum, 'ffilelist': []}
|
|
1961
1965
|
if(seekstart < 0 and seekstart > fnumfiles):
|
|
@@ -2040,25 +2044,25 @@ def ReadFileDataBySizeWithContentToList(fp, seekstart=0, seekend=0, listonly=Fal
|
|
|
2040
2044
|
curloc = fp.tell()
|
|
2041
2045
|
if(curloc > 0):
|
|
2042
2046
|
fp.seek(0, 0)
|
|
2043
|
-
catheader = ReadFileHeaderData(fp,
|
|
2047
|
+
catheader = ReadFileHeaderData(fp, 5, delimiter)
|
|
2044
2048
|
if(curloc > 0):
|
|
2045
2049
|
fp.seek(curloc, 0)
|
|
2046
2050
|
headercheck = ValidateHeaderChecksum(
|
|
2047
|
-
catheader[:-1], catheader[
|
|
2048
|
-
newfcs = GetHeaderChecksum(catheader[:-2], catheader[
|
|
2051
|
+
catheader[:-1], catheader[3], catheader[4], formatspecs)
|
|
2052
|
+
newfcs = GetHeaderChecksum(catheader[:-2], catheader[3], True, formatspecs)
|
|
2049
2053
|
if(not headercheck and not skipchecksum):
|
|
2050
2054
|
VerbosePrintOut(
|
|
2051
2055
|
"File Header Checksum Error with file at offset " + str(0))
|
|
2052
2056
|
VerbosePrintOut("'" + str(newfcs) + "' != " +
|
|
2053
|
-
"'" + str(catheader[
|
|
2057
|
+
"'" + str(catheader[4]) + "'")
|
|
2054
2058
|
return False
|
|
2055
2059
|
catstring = catheader[0]
|
|
2056
2060
|
catversion = re.findall("([\\d]+)", catstring)
|
|
2057
2061
|
catversions = re.search('(.*?)(\\d+)', catstring).groups()
|
|
2058
2062
|
fprenumfiles = catheader[1]
|
|
2059
2063
|
fnumfiles = int(fprenumfiles, 16)
|
|
2060
|
-
fprechecksumtype = catheader[
|
|
2061
|
-
fprechecksum = catheader[
|
|
2064
|
+
fprechecksumtype = catheader[3]
|
|
2065
|
+
fprechecksum = catheader[4]
|
|
2062
2066
|
catlist = []
|
|
2063
2067
|
if(seekstart < 0 and seekstart > fnumfiles):
|
|
2064
2068
|
seekstart = 0
|
|
@@ -2290,7 +2294,7 @@ def AppendFileHeader(fp, numfiles, checksumtype="crc32", formatspecs=__file_form
|
|
|
2290
2294
|
fp.write(fileheader.encode('UTF-8'))
|
|
2291
2295
|
fnumfiles = format(int(numfiles), 'x').lower()
|
|
2292
2296
|
fnumfilesa = AppendNullBytes(
|
|
2293
|
-
[fnumfiles, checksumtype], formatspecs['format_delimiter'])
|
|
2297
|
+
[platform.system(), fnumfiles, checksumtype], formatspecs['format_delimiter'])
|
|
2294
2298
|
catfileheadercshex = GetFileChecksum(
|
|
2295
2299
|
fileheader + fnumfilesa, checksumtype, True, formatspecs)
|
|
2296
2300
|
fnumfilesa = fnumfilesa + \
|
|
@@ -2533,14 +2537,6 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
2533
2537
|
getfdev = GetDevMajorMinor(fdev)
|
|
2534
2538
|
fdev_minor = getfdev[0]
|
|
2535
2539
|
fdev_major = getfdev[1]
|
|
2536
|
-
frdev = fstatinfo.st_dev
|
|
2537
|
-
if(hasattr(fstatinfo, "st_rdev")):
|
|
2538
|
-
frdev = fstatinfo.st_rdev
|
|
2539
|
-
else:
|
|
2540
|
-
frdev = fstatinfo.st_dev
|
|
2541
|
-
getfrdev = GetDevMajorMinor(frdev)
|
|
2542
|
-
frdev_minor = getfrdev[0]
|
|
2543
|
-
frdev_major = getfrdev[1]
|
|
2544
2540
|
if(ftype == 1 or ftype == 2 or ftype == 3 or ftype == 4 or ftype == 5 or ftype == 6):
|
|
2545
2541
|
fsize = format(int("0"), 'x').lower()
|
|
2546
2542
|
elif(ftype == 0 or ftype == 7):
|
|
@@ -2579,10 +2575,9 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
2579
2575
|
fgname = ""
|
|
2580
2576
|
except ImportError:
|
|
2581
2577
|
fgname = ""
|
|
2578
|
+
fdev = format(int(fdev), 'x').lower()
|
|
2582
2579
|
fdev_minor = format(int(fdev_minor), 'x').lower()
|
|
2583
2580
|
fdev_major = format(int(fdev_major), 'x').lower()
|
|
2584
|
-
frdev_minor = format(int(frdev_minor), 'x').lower()
|
|
2585
|
-
frdev_major = format(int(frdev_major), 'x').lower()
|
|
2586
2581
|
finode = format(int(finode), 'x').lower()
|
|
2587
2582
|
flinkcount = format(int(flinkcount), 'x').lower()
|
|
2588
2583
|
if(hasattr(fstatinfo, "st_file_attributes")):
|
|
@@ -2686,7 +2681,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
2686
2681
|
fcontents.seek(0, 0)
|
|
2687
2682
|
ftypehex = format(ftype, 'x').lower()
|
|
2688
2683
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
|
|
2689
|
-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
2684
|
+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+1"]
|
|
2690
2685
|
fp = AppendFileHeaderWithContent(
|
|
2691
2686
|
fp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
2692
2687
|
if(numfiles > 0):
|
|
@@ -2737,17 +2732,16 @@ def AppendListsWithContent(inlist, fp, dirlistfromtxt=False, filevalues=[], extr
|
|
|
2737
2732
|
fid = format(curfname[16], 'x').lower()
|
|
2738
2733
|
finode = format(curfname[17], 'x').lower()
|
|
2739
2734
|
flinkcount = format(curfname[18], 'x').lower()
|
|
2740
|
-
|
|
2741
|
-
|
|
2742
|
-
|
|
2743
|
-
|
|
2744
|
-
|
|
2745
|
-
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
fcontents = curfname[27]
|
|
2735
|
+
fdev = format(curfname[19], 'x').lower()
|
|
2736
|
+
fdev_minor = format(curfname[20], 'x').lower()
|
|
2737
|
+
fdev_major = format(curfname[21], 'x').lower()
|
|
2738
|
+
fseeknextfile = curfname[22]
|
|
2739
|
+
extradata = curfname[23]
|
|
2740
|
+
fheaderchecksumtype = curfname[24]
|
|
2741
|
+
fcontentchecksumtype = curfname[25]
|
|
2742
|
+
fcontents = curfname[26]
|
|
2749
2743
|
catoutlist = [ftype, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression, fcsize,
|
|
2750
|
-
fuid, funame, fgid, fgname, fid, finode, flinkcount, fdev_minor, fdev_major,
|
|
2744
|
+
fuid, funame, fgid, fgname, fid, finode, flinkcount, fdev, fdev_minor, fdev_major, fseeknextfile]
|
|
2751
2745
|
fcontents.seek(0, 0)
|
|
2752
2746
|
fp = AppendFileHeaderWithContent(
|
|
2753
2747
|
fp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
@@ -3131,13 +3125,6 @@ def UncompressArchiveFile(fp, formatspecs=__file_format_dict__):
|
|
|
3131
3125
|
if(compresscheck == "catfile" or compresscheck == formatspecs['format_lower']):
|
|
3132
3126
|
catfp = fp
|
|
3133
3127
|
if(not compresscheck):
|
|
3134
|
-
try:
|
|
3135
|
-
import lzma
|
|
3136
|
-
except ImportError:
|
|
3137
|
-
try:
|
|
3138
|
-
from backports import lzma
|
|
3139
|
-
except ImportError:
|
|
3140
|
-
return False
|
|
3141
3128
|
catfp = BytesIO()
|
|
3142
3129
|
with fp as fpcontent:
|
|
3143
3130
|
try:
|
|
@@ -3705,14 +3692,6 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
|
|
|
3705
3692
|
getfdev = GetDevMajorMinor(fdev)
|
|
3706
3693
|
fdev_minor = getfdev[0]
|
|
3707
3694
|
fdev_major = getfdev[1]
|
|
3708
|
-
frdev = fstatinfo.st_dev
|
|
3709
|
-
if(hasattr(fstatinfo, "st_rdev")):
|
|
3710
|
-
frdev = fstatinfo.st_rdev
|
|
3711
|
-
else:
|
|
3712
|
-
frdev = fstatinfo.st_dev
|
|
3713
|
-
getfrdev = GetDevMajorMinor(frdev)
|
|
3714
|
-
frdev_minor = getfrdev[0]
|
|
3715
|
-
frdev_major = getfrdev[1]
|
|
3716
3695
|
if(ftype == 1 or ftype == 2 or ftype == 3 or ftype == 4 or ftype == 5 or ftype == 6):
|
|
3717
3696
|
fsize = format(int("0"), 'x').lower()
|
|
3718
3697
|
elif(ftype == 0 or ftype == 7):
|
|
@@ -3751,10 +3730,9 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
|
|
|
3751
3730
|
fgname = ""
|
|
3752
3731
|
except ImportError:
|
|
3753
3732
|
fgname = ""
|
|
3733
|
+
fdev = format(int(fdev), 'x').lower()
|
|
3754
3734
|
fdev_minor = format(int(fdev_minor), 'x').lower()
|
|
3755
3735
|
fdev_major = format(int(fdev_major), 'x').lower()
|
|
3756
|
-
frdev_minor = format(int(frdev_minor), 'x').lower()
|
|
3757
|
-
frdev_major = format(int(frdev_major), 'x').lower()
|
|
3758
3736
|
finode = format(int(finode), 'x').lower()
|
|
3759
3737
|
flinkcount = format(int(flinkcount), 'x').lower()
|
|
3760
3738
|
if(hasattr(fstatinfo, "st_file_attributes")):
|
|
@@ -3857,7 +3835,7 @@ def PackArchiveFile(infiles, outfile, dirlistfromtxt=False, compression="auto",
|
|
|
3857
3835
|
fcontents.seek(0, 0)
|
|
3858
3836
|
ftypehex = format(ftype, 'x').lower()
|
|
3859
3837
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
|
|
3860
|
-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
3838
|
+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+1"]
|
|
3861
3839
|
catfp = AppendFileHeaderWithContent(
|
|
3862
3840
|
catfp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
3863
3841
|
fcontents.close()
|
|
@@ -4037,10 +4015,9 @@ def PackArchiveFileFromTarFile(infile, outfile, compression="auto", compresswhol
|
|
|
4037
4015
|
curfid = curfid + 1
|
|
4038
4016
|
if(ftype == 2):
|
|
4039
4017
|
flinkname = member.linkname
|
|
4018
|
+
fdev = format(int(os.makedev(member.devmajor, member.devminor)), 'x').lower()
|
|
4040
4019
|
fdev_minor = format(int(member.devminor), 'x').lower()
|
|
4041
4020
|
fdev_major = format(int(member.devmajor), 'x').lower()
|
|
4042
|
-
frdev_minor = format(int(member.devminor), 'x').lower()
|
|
4043
|
-
frdev_major = format(int(member.devmajor), 'x').lower()
|
|
4044
4021
|
if(ftype == 1 or ftype == 2 or ftype == 3 or ftype == 4 or ftype == 5 or ftype == 6):
|
|
4045
4022
|
fsize = format(int("0"), 'x').lower()
|
|
4046
4023
|
elif(ftype == 0 or ftype == 7):
|
|
@@ -4111,7 +4088,7 @@ def PackArchiveFileFromTarFile(infile, outfile, compression="auto", compresswhol
|
|
|
4111
4088
|
fcontents.seek(0, 0)
|
|
4112
4089
|
ftypehex = format(ftype, 'x').lower()
|
|
4113
4090
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
|
|
4114
|
-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
4091
|
+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+1"]
|
|
4115
4092
|
catfp = AppendFileHeaderWithContent(
|
|
4116
4093
|
catfp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
4117
4094
|
fcontents.close()
|
|
@@ -4247,10 +4224,9 @@ def PackArchiveFileFromZipFile(infile, outfile, compression="auto", compresswhol
|
|
|
4247
4224
|
fcurfid = format(int(curfid), 'x').lower()
|
|
4248
4225
|
fcurinode = format(int(curfid), 'x').lower()
|
|
4249
4226
|
curfid = curfid + 1
|
|
4227
|
+
fdev = format(int(0), 'x').lower()
|
|
4250
4228
|
fdev_minor = format(int(0), 'x').lower()
|
|
4251
4229
|
fdev_major = format(int(0), 'x').lower()
|
|
4252
|
-
frdev_minor = format(int(0), 'x').lower()
|
|
4253
|
-
frdev_major = format(int(0), 'x').lower()
|
|
4254
4230
|
if(ftype == 5):
|
|
4255
4231
|
fsize = format(int("0"), 'x').lower()
|
|
4256
4232
|
elif(ftype == 0):
|
|
@@ -4378,7 +4354,7 @@ def PackArchiveFileFromZipFile(infile, outfile, compression="auto", compresswhol
|
|
|
4378
4354
|
fcontents.seek(0, 0)
|
|
4379
4355
|
ftypehex = format(ftype, 'x').lower()
|
|
4380
4356
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
|
|
4381
|
-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
4357
|
+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+1"]
|
|
4382
4358
|
catfp = AppendFileHeaderWithContent(
|
|
4383
4359
|
catfp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
4384
4360
|
fcontents.close()
|
|
@@ -4542,10 +4518,9 @@ if(rarfile_support):
|
|
|
4542
4518
|
fcurfid = format(int(curfid), 'x').lower()
|
|
4543
4519
|
fcurinode = format(int(curfid), 'x').lower()
|
|
4544
4520
|
curfid = curfid + 1
|
|
4521
|
+
fdev = format(int(0), 'x').lower()
|
|
4545
4522
|
fdev_minor = format(int(0), 'x').lower()
|
|
4546
4523
|
fdev_major = format(int(0), 'x').lower()
|
|
4547
|
-
frdev_minor = format(int(0), 'x').lower()
|
|
4548
|
-
frdev_major = format(int(0), 'x').lower()
|
|
4549
4524
|
if(ftype == 5):
|
|
4550
4525
|
fsize = format(int("0"), 'x').lower()
|
|
4551
4526
|
elif(ftype == 0):
|
|
@@ -4675,7 +4650,7 @@ if(rarfile_support):
|
|
|
4675
4650
|
fcontents.seek(0, 0)
|
|
4676
4651
|
ftypehex = format(ftype, 'x').lower()
|
|
4677
4652
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
|
|
4678
|
-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
4653
|
+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+1"]
|
|
4679
4654
|
catfp = AppendFileHeaderWithContent(
|
|
4680
4655
|
catfp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
4681
4656
|
fcontents.close()
|
|
@@ -4798,10 +4773,9 @@ if(py7zr_support):
|
|
|
4798
4773
|
fcurfid = format(int(curfid), 'x').lower()
|
|
4799
4774
|
fcurinode = format(int(curfid), 'x').lower()
|
|
4800
4775
|
curfid = curfid + 1
|
|
4776
|
+
fdev = format(int(0), 'x').lower()
|
|
4801
4777
|
fdev_minor = format(int(0), 'x').lower()
|
|
4802
4778
|
fdev_major = format(int(0), 'x').lower()
|
|
4803
|
-
frdev_minor = format(int(0), 'x').lower()
|
|
4804
|
-
frdev_major = format(int(0), 'x').lower()
|
|
4805
4779
|
if(ftype == 5):
|
|
4806
4780
|
fsize = format(int("0"), 'x').lower()
|
|
4807
4781
|
fatime = format(int(member.creationtime.timestamp()), 'x').lower()
|
|
@@ -4905,7 +4879,7 @@ if(py7zr_support):
|
|
|
4905
4879
|
fcontents.seek(0, 0)
|
|
4906
4880
|
ftypehex = format(ftype, 'x').lower()
|
|
4907
4881
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression,
|
|
4908
|
-
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
4882
|
+
fcsize, fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, "+1"]
|
|
4909
4883
|
catfp = AppendFileHeaderWithContent(
|
|
4910
4884
|
catfp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
4911
4885
|
fcontents.close()
|
|
@@ -5072,14 +5046,15 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
|
|
|
5072
5046
|
return False
|
|
5073
5047
|
if(catdel != formatspecs['format_delimiter']):
|
|
5074
5048
|
return False
|
|
5075
|
-
catheader = ReadFileHeaderData(catfp,
|
|
5049
|
+
catheader = ReadFileHeaderData(catfp, 4, formatspecs['format_delimiter'])
|
|
5076
5050
|
if(curloc > 0):
|
|
5077
5051
|
catfp.seek(curloc, 0)
|
|
5078
5052
|
catversion = re.findall("([\\d]+)", catstring)
|
|
5079
|
-
|
|
5053
|
+
fostype = catheader[0]
|
|
5054
|
+
fprenumfiles = catheader[1]
|
|
5080
5055
|
fnumfiles = int(fprenumfiles, 16)
|
|
5081
|
-
fprechecksumtype = catheader[
|
|
5082
|
-
fprechecksum = catheader[
|
|
5056
|
+
fprechecksumtype = catheader[2]
|
|
5057
|
+
fprechecksum = catheader[3]
|
|
5083
5058
|
fileheader = AppendNullByte(catstring, formatspecs['format_delimiter'])
|
|
5084
5059
|
fnumfileshex = format(int(fnumfiles), 'x').lower()
|
|
5085
5060
|
fileheader = fileheader + \
|
|
@@ -5097,7 +5072,7 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
|
|
|
5097
5072
|
"'" + str(catfileheadercshex) + "'")
|
|
5098
5073
|
return False
|
|
5099
5074
|
catversions = re.search('(.*?)(\\d+)', catstring).groups()
|
|
5100
|
-
catlist = {'fnumfiles': fnumfiles, 'fformat': catversions[0], 'fversion': catversions[1],
|
|
5075
|
+
catlist = {'fnumfiles': fnumfiles, 'fformat': catversions[0], 'fversion': catversions[1], 'fostype': fostype,
|
|
5101
5076
|
'fformatspecs': formatspecs, 'fchecksumtype': fprechecksumtype, 'fheaderchecksum': fprechecksum, 'ffilelist': {}}
|
|
5102
5077
|
if(seekto >= fnumfiles):
|
|
5103
5078
|
seekto = fnumfiles - 1
|
|
@@ -5142,15 +5117,14 @@ def ArchiveFileSeekToFileNum(infile, seekto=0, listonly=False, contentasfile=Tru
|
|
|
5142
5117
|
fid = int(preheaderdata[18], 16)
|
|
5143
5118
|
finode = int(preheaderdata[19], 16)
|
|
5144
5119
|
flinkcount = int(preheaderdata[20], 16)
|
|
5145
|
-
|
|
5146
|
-
|
|
5147
|
-
|
|
5148
|
-
|
|
5149
|
-
|
|
5150
|
-
|
|
5151
|
-
prefextrafields = int(preheaderdata[27], 16)
|
|
5120
|
+
prefdev = int(preheaderdata[21], 16)
|
|
5121
|
+
prefdev_minor = int(preheaderdata[22], 16)
|
|
5122
|
+
prefdev_major = int(preheaderdata[23], 16)
|
|
5123
|
+
prefseeknextfile = preheaderdata[24]
|
|
5124
|
+
prefextrasize = int(preheaderdata[25], 16)
|
|
5125
|
+
prefextrafields = int(preheaderdata[26], 16)
|
|
5152
5126
|
extrafieldslist = []
|
|
5153
|
-
extrastart =
|
|
5127
|
+
extrastart = 27
|
|
5154
5128
|
extraend = extrastart + prefextrafields
|
|
5155
5129
|
extrafieldslist = []
|
|
5156
5130
|
if(extrastart < extraend):
|
|
@@ -5330,14 +5304,15 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
|
|
|
5330
5304
|
return False
|
|
5331
5305
|
if(catdel != formatspecs['format_delimiter']):
|
|
5332
5306
|
return False
|
|
5333
|
-
catheader = ReadFileHeaderData(catfp,
|
|
5307
|
+
catheader = ReadFileHeaderData(catfp, 4, formatspecs['format_delimiter'])
|
|
5334
5308
|
if(curloc > 0):
|
|
5335
5309
|
catfp.seek(curloc, 0)
|
|
5336
5310
|
catversion = re.findall("([\\d]+)", catstring)
|
|
5337
|
-
|
|
5311
|
+
fostype = catheader[0]
|
|
5312
|
+
fprenumfiles = catheader[1]
|
|
5338
5313
|
fnumfiles = int(fprenumfiles, 16)
|
|
5339
|
-
fprechecksumtype = catheader[
|
|
5340
|
-
fprechecksum = catheader[
|
|
5314
|
+
fprechecksumtype = catheader[2]
|
|
5315
|
+
fprechecksum = catheader[3]
|
|
5341
5316
|
fileheader = AppendNullByte(catstring, formatspecs['format_delimiter'])
|
|
5342
5317
|
fnumfileshex = format(int(fnumfiles), 'x').lower()
|
|
5343
5318
|
fileheader = fileheader + \
|
|
@@ -5355,7 +5330,7 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
|
|
|
5355
5330
|
"'" + str(catfileheadercshex) + "'")
|
|
5356
5331
|
return False
|
|
5357
5332
|
catversions = re.search('(.*?)(\\d+)', catstring).groups()
|
|
5358
|
-
catlist = {'fnumfiles': fnumfiles, 'fformat': catversions[0], 'fversion': catversions[1],
|
|
5333
|
+
catlist = {'fnumfiles': fnumfiles, 'fformat': catversions[0], 'fversion': catversions[1], 'fostype': fostype,
|
|
5359
5334
|
'fformatspecs': formatspecs, 'fchecksumtype': fprechecksumtype, 'fheaderchecksum': fprechecksum, 'ffilelist': {}}
|
|
5360
5335
|
seekto = fnumfiles - 1
|
|
5361
5336
|
filefound = False
|
|
@@ -5398,15 +5373,14 @@ def ArchiveFileSeekToFileName(infile, seekfile=None, listonly=False, contentasfi
|
|
|
5398
5373
|
fid = int(preheaderdata[18], 16)
|
|
5399
5374
|
finode = int(preheaderdata[19], 16)
|
|
5400
5375
|
flinkcount = int(preheaderdata[20], 16)
|
|
5401
|
-
|
|
5402
|
-
|
|
5403
|
-
|
|
5404
|
-
|
|
5405
|
-
|
|
5406
|
-
|
|
5407
|
-
prefextrafields = int(preheaderdata[27], 16)
|
|
5376
|
+
prefdev = int(preheaderdata[21], 16)
|
|
5377
|
+
prefdev_minor = int(preheaderdata[22], 16)
|
|
5378
|
+
prefdev_major = int(preheaderdata[23], 16)
|
|
5379
|
+
prefseeknextfile = preheaderdata[24]
|
|
5380
|
+
prefextrasize = int(preheaderdata[25], 16)
|
|
5381
|
+
prefextrafields = int(preheaderdata[26], 16)
|
|
5408
5382
|
extrafieldslist = []
|
|
5409
|
-
extrastart =
|
|
5383
|
+
extrastart = 27
|
|
5410
5384
|
extraend = extrastart + prefextrafields
|
|
5411
5385
|
extrafieldslist = []
|
|
5412
5386
|
if(extrastart < extraend):
|
|
@@ -5601,19 +5575,20 @@ def ArchiveFileValidate(infile, formatspecs=__file_format_dict__, verbose=False,
|
|
|
5601
5575
|
return False
|
|
5602
5576
|
if(catdel != formatspecs['format_delimiter']):
|
|
5603
5577
|
return False
|
|
5604
|
-
catheader = ReadFileHeaderData(catfp,
|
|
5578
|
+
catheader = ReadFileHeaderData(catfp, 4, formatspecs['format_delimiter'])
|
|
5605
5579
|
if(curloc > 0):
|
|
5606
5580
|
catfp.seek(curloc, 0)
|
|
5607
5581
|
catversion = re.findall("([\\d]+)", catstring)
|
|
5608
|
-
|
|
5582
|
+
fostype = catheader[0]
|
|
5583
|
+
fprenumfiles = catheader[1]
|
|
5609
5584
|
fnumfiles = int(fprenumfiles, 16)
|
|
5610
|
-
fprechecksumtype = catheader[
|
|
5611
|
-
fprechecksum = catheader[
|
|
5585
|
+
fprechecksumtype = catheader[2]
|
|
5586
|
+
fprechecksum = catheader[3]
|
|
5612
5587
|
il = 0
|
|
5613
5588
|
fileheader = AppendNullByte(catstring, formatspecs['format_delimiter'])
|
|
5614
5589
|
fnumfileshex = format(int(fnumfiles), 'x').lower()
|
|
5615
5590
|
fileheader = fileheader + \
|
|
5616
|
-
AppendNullBytes([fnumfileshex, fprechecksumtype],
|
|
5591
|
+
AppendNullBytes([fostype, fnumfileshex, fprechecksumtype],
|
|
5617
5592
|
formatspecs['format_delimiter'])
|
|
5618
5593
|
catfileheadercshex = GetFileChecksum(
|
|
5619
5594
|
fileheader, fprechecksumtype, True, formatspecs)
|
|
@@ -5681,15 +5656,14 @@ def ArchiveFileValidate(infile, formatspecs=__file_format_dict__, verbose=False,
|
|
|
5681
5656
|
fid = int(catheaderdata[18], 16)
|
|
5682
5657
|
finode = int(catheaderdata[19], 16)
|
|
5683
5658
|
flinkcount = int(catheaderdata[20], 16)
|
|
5684
|
-
|
|
5685
|
-
|
|
5686
|
-
|
|
5687
|
-
|
|
5688
|
-
|
|
5689
|
-
|
|
5690
|
-
catfextrafields = int(catheaderdata[27], 16)
|
|
5659
|
+
catfdev = int(catheaderdata[21], 16)
|
|
5660
|
+
catfdev_minor = int(catheaderdata[22], 16)
|
|
5661
|
+
catfdev_major = int(catheaderdata[23], 16)
|
|
5662
|
+
catfseeknextfile = catheaderdata[24]
|
|
5663
|
+
catfextrasize = int(catheaderdata[25], 16)
|
|
5664
|
+
catfextrafields = int(catheaderdata[26], 16)
|
|
5691
5665
|
extrafieldslist = []
|
|
5692
|
-
extrastart =
|
|
5666
|
+
extrastart = 27
|
|
5693
5667
|
extraend = extrastart + catfextrafields
|
|
5694
5668
|
extrafieldslist = []
|
|
5695
5669
|
if(extrastart < extraend):
|
|
@@ -5879,18 +5853,19 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
|
|
|
5879
5853
|
return False
|
|
5880
5854
|
if(catdel != formatspecs['format_delimiter']):
|
|
5881
5855
|
return False
|
|
5882
|
-
catheader = ReadFileHeaderData(catfp,
|
|
5856
|
+
catheader = ReadFileHeaderData(catfp, 4, formatspecs['format_delimiter'])
|
|
5883
5857
|
if(curloc > 0):
|
|
5884
5858
|
catfp.seek(curloc, 0)
|
|
5885
5859
|
catversion = re.findall("([\\d]+)", catstring)
|
|
5886
|
-
|
|
5860
|
+
fostype = catheader[0]
|
|
5861
|
+
fprenumfiles = catheader[1]
|
|
5887
5862
|
fnumfiles = int(fprenumfiles, 16)
|
|
5888
|
-
fprechecksumtype = catheader[
|
|
5889
|
-
fprechecksum = catheader[
|
|
5863
|
+
fprechecksumtype = catheader[2]
|
|
5864
|
+
fprechecksum = catheader[3]
|
|
5890
5865
|
fileheader = AppendNullByte(catstring, formatspecs['format_delimiter'])
|
|
5891
5866
|
fnumfileshex = format(int(fnumfiles), 'x').lower()
|
|
5892
5867
|
fileheader = fileheader + \
|
|
5893
|
-
AppendNullBytes([fnumfileshex, fprechecksumtype],
|
|
5868
|
+
AppendNullBytes([fostype, fnumfileshex, fprechecksumtype],
|
|
5894
5869
|
formatspecs['format_delimiter'])
|
|
5895
5870
|
catfileheadercshex = GetFileChecksum(
|
|
5896
5871
|
fileheader, fprechecksumtype, True, formatspecs)
|
|
@@ -6030,15 +6005,14 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
|
|
|
6030
6005
|
catfid = int(catheaderdata[18], 16)
|
|
6031
6006
|
catfinode = int(catheaderdata[19], 16)
|
|
6032
6007
|
catflinkcount = int(catheaderdata[20], 16)
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
|
|
6037
|
-
|
|
6038
|
-
|
|
6039
|
-
catfextrafields = int(catheaderdata[27], 16)
|
|
6008
|
+
catfdev = int(catheaderdata[21], 16)
|
|
6009
|
+
catfdev_minor = int(catheaderdata[22], 16)
|
|
6010
|
+
catfdev_major = int(catheaderdata[23], 16)
|
|
6011
|
+
catfseeknextfile = catheaderdata[24]
|
|
6012
|
+
catfextrasize = int(catheaderdata[25], 16)
|
|
6013
|
+
catfextrafields = int(catheaderdata[26], 16)
|
|
6040
6014
|
extrafieldslist = []
|
|
6041
|
-
extrastart =
|
|
6015
|
+
extrastart = 27
|
|
6042
6016
|
extraend = extrastart + catfextrafields
|
|
6043
6017
|
extrafieldslist = []
|
|
6044
6018
|
if(extrastart < extraend):
|
|
@@ -6111,7 +6085,7 @@ def ArchiveFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentas
|
|
|
6111
6085
|
if(not contentasfile):
|
|
6112
6086
|
catfcontents = catfcontents.read()
|
|
6113
6087
|
catlist['ffilelist'].append({'fid': realidnum, 'fidalt': fileidnum, 'fheadersize': catfheadsize, 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': catftype, 'fname': catfname, 'fbasedir': catfbasedir, 'flinkname': catflinkname, 'fsize': catfsize, 'fatime': catfatime, 'fmtime': catfmtime, 'fctime': catfctime, 'fbtime': catfbtime, 'fmode': catfmode, 'fchmode': catfchmode, 'ftypemod': catftypemod, 'fwinattributes': catfwinattributes, 'fcompression': catfcompression, 'fcsize': catfcsize, 'fuid': catfuid, 'funame': catfuname, 'fgid': catfgid, 'fgname': catfgname, 'finode': catfinode, 'flinkcount': catflinkcount,
|
|
6114
|
-
'
|
|
6088
|
+
'fdev': catfdev, 'fminor': catfdev_minor, 'fmajor': catfdev_major, 'fseeknextfile': catfseeknextfile, 'fheaderchecksumtype': catheaderdata[-4], 'fcontentchecksumtype': catheaderdata[-3], 'fnumfields': catfnumfields + 2, 'frawheader': catheaderdata, 'fextrafields': catfextrafields, 'fextrafieldsize': catfextrasize, 'fextralist': extrafieldslist, 'fheaderchecksum': catfcs, 'fcontentchecksum': catfccs, 'fhascontents': pyhascontents, 'fcontentstart': catfcontentstart, 'fcontentend': catfcontentend, 'fcontentasfile': contentasfile, 'fcontents': catfcontents})
|
|
6115
6089
|
fileidnum = fileidnum + 1
|
|
6116
6090
|
realidnum = realidnum + 1
|
|
6117
6091
|
if(returnfp):
|
|
@@ -6328,14 +6302,6 @@ def ListDirToArrayAlt(infiles, dirlistfromtxt=False, followlink=False, listonly=
|
|
|
6328
6302
|
getfdev = GetDevMajorMinor(fdev)
|
|
6329
6303
|
fdev_minor = getfdev[0]
|
|
6330
6304
|
fdev_major = getfdev[1]
|
|
6331
|
-
frdev = fstatinfo.st_dev
|
|
6332
|
-
if(hasattr(fstatinfo, "st_rdev")):
|
|
6333
|
-
frdev = fstatinfo.st_rdev
|
|
6334
|
-
else:
|
|
6335
|
-
frdev = fstatinfo.st_dev
|
|
6336
|
-
getfrdev = GetDevMajorMinor(frdev)
|
|
6337
|
-
frdev_minor = getfrdev[0]
|
|
6338
|
-
frdev_major = getfrdev[1]
|
|
6339
6305
|
if(ftype == 1 or ftype == 2 or ftype == 3 or ftype == 4 or ftype == 5 or ftype == 6):
|
|
6340
6306
|
fsize = "0"
|
|
6341
6307
|
if(ftype == 0 or ftype == 7):
|
|
@@ -6372,11 +6338,6 @@ def ListDirToArrayAlt(infiles, dirlistfromtxt=False, followlink=False, listonly=
|
|
|
6372
6338
|
fgname = ""
|
|
6373
6339
|
except ImportError:
|
|
6374
6340
|
fgname = ""
|
|
6375
|
-
fdev_minor = fdev_minor
|
|
6376
|
-
fdev_major = fdev_major
|
|
6377
|
-
frdev_minor = frdev_minor
|
|
6378
|
-
frdev_major = frdev_major
|
|
6379
|
-
flinkcount = flinkcount
|
|
6380
6341
|
if(hasattr(fstatinfo, "st_file_attributes")):
|
|
6381
6342
|
fwinattributes = fstatinfo.st_file_attributes
|
|
6382
6343
|
else:
|
|
@@ -6404,7 +6365,7 @@ def ListDirToArrayAlt(infiles, dirlistfromtxt=False, followlink=False, listonly=
|
|
|
6404
6365
|
extrasizelen = len(extrasizestr)
|
|
6405
6366
|
extrasizelenhex = format(extrasizelen, 'x').lower()
|
|
6406
6367
|
catoutlist = [ftypehex, fname, flinkname, format(int(fsize), 'x').lower(), format(int(fatime), 'x').lower(), format(int(fmtime), 'x').lower(), format(int(fctime), 'x').lower(), format(int(fbtime), 'x').lower(), format(int(fmode), 'x').lower(), format(int(fwinattributes), 'x').lower(), fcompression, format(int(fcsize), 'x').lower(), format(int(fuid), 'x').lower(
|
|
6407
|
-
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(
|
|
6368
|
+
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(fdev), 'x').lower(), format(int(fdev_minor), 'x').lower(), format(int(fdev_major), 'x').lower(), "+1", extrasizelenhex, format(catfextrafields, 'x').lower()]
|
|
6408
6369
|
catoutlen = len(catoutlist) + len(extradata) + 3
|
|
6409
6370
|
catoutlenhex = format(catoutlen, 'x').lower()
|
|
6410
6371
|
catoutlist.insert(0, catoutlenhex)
|
|
@@ -6458,8 +6419,8 @@ def ListDirToArrayAlt(infiles, dirlistfromtxt=False, followlink=False, listonly=
|
|
|
6458
6419
|
fcontents.seek(0, 0)
|
|
6459
6420
|
if(not contentasfile):
|
|
6460
6421
|
fcontents = fcontents.read()
|
|
6461
|
-
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
6462
|
-
|
|
6422
|
+
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
6423
|
+
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': "+1", 'fheaderchecksumtype': checksumtype, 'fcontentchecksumtype': checksumtype, 'fnumfields': catfnumfields + 2, 'frawheader': catheaderdata, 'fextrafields': catfextrafields, 'fextrafieldsize': extrasizelen, 'fextralist': extrafieldslist, 'fheaderchecksum': int(catfileheadercshex, 16), 'fcontentchecksum': int(catfilecontentcshex, 16), 'fhascontents': pyhascontents, 'fcontentstart': catfcontentstart, 'fcontentend': catfcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents})
|
|
6463
6424
|
fileidnum = fileidnum + 1
|
|
6464
6425
|
return catlist
|
|
6465
6426
|
|
|
@@ -6573,10 +6534,9 @@ def TarFileToArrayAlt(infile, listonly=False, contentasfile=True, checksumtype="
|
|
|
6573
6534
|
curfid = curfid + 1
|
|
6574
6535
|
if(ftype == 2):
|
|
6575
6536
|
flinkname = member.linkname
|
|
6537
|
+
fdev = os.makedev(member.devmajor, member.devminor)
|
|
6576
6538
|
fdev_minor = member.devminor
|
|
6577
6539
|
fdev_major = member.devmajor
|
|
6578
|
-
frdev_minor = member.devminor
|
|
6579
|
-
frdev_major = member.devmajor
|
|
6580
6540
|
if(ftype == 1 or ftype == 2 or ftype == 3 or ftype == 4 or ftype == 5 or ftype == 6):
|
|
6581
6541
|
fsize = "0"
|
|
6582
6542
|
elif(ftype == 0 or ftype == 7):
|
|
@@ -6615,7 +6575,7 @@ def TarFileToArrayAlt(infile, listonly=False, contentasfile=True, checksumtype="
|
|
|
6615
6575
|
extrasizelen = len(extrasizestr)
|
|
6616
6576
|
extrasizelenhex = format(extrasizelen, 'x').lower()
|
|
6617
6577
|
catoutlist = [ftypehex, fname, flinkname, format(int(fsize), 'x').lower(), format(int(fatime), 'x').lower(), format(int(fmtime), 'x').lower(), format(int(fctime), 'x').lower(), format(int(fbtime), 'x').lower(), format(int(fmode), 'x').lower(), format(int(fwinattributes), 'x').lower(), fcompression, format(int(fcsize), 'x').lower(), format(int(fuid), 'x').lower(
|
|
6618
|
-
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(
|
|
6578
|
+
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(fdev), 'x').lower(), format(int(fdev_minor), 'x').lower(), format(int(fdev_major), 'x').lower(), "+1", extrasizelenhex, format(catfextrafields, 'x').lower()]
|
|
6619
6579
|
catoutlen = len(catoutlist) + len(extradata) + 3
|
|
6620
6580
|
catoutlenhex = format(catoutlen, 'x').lower()
|
|
6621
6581
|
catoutlist.insert(0, catoutlenhex)
|
|
@@ -6669,8 +6629,8 @@ def TarFileToArrayAlt(infile, listonly=False, contentasfile=True, checksumtype="
|
|
|
6669
6629
|
fcontents.seek(0, 0)
|
|
6670
6630
|
if(not contentasfile):
|
|
6671
6631
|
fcontents = fcontents.read()
|
|
6672
|
-
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
6673
|
-
'
|
|
6632
|
+
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
6633
|
+
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': "+1", 'fheaderchecksumtype': checksumtype, 'fcontentchecksumtype': checksumtype, 'fnumfields': catfnumfields + 2, 'frawheader': catheaderdata, 'fextrafields': catfextrafields, 'fextrafieldsize': extrasizelen, 'fextralist': extrafieldslist, 'fheaderchecksum': int(catfileheadercshex, 16), 'fcontentchecksum': int(catfilecontentcshex, 16), 'fhascontents': pyhascontents, 'fcontentstart': catfcontentstart, 'fcontentend': catfcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents})
|
|
6674
6634
|
fileidnum = fileidnum + 1
|
|
6675
6635
|
return catlist
|
|
6676
6636
|
|
|
@@ -6754,10 +6714,9 @@ def ZipFileToArrayAlt(infile, listonly=False, contentasfile=True, checksumtype="
|
|
|
6754
6714
|
fcurinode = curfid
|
|
6755
6715
|
finode = fcurinode
|
|
6756
6716
|
curfid = curfid + 1
|
|
6717
|
+
fdev = 0
|
|
6757
6718
|
fdev_minor = 0
|
|
6758
6719
|
fdev_major = 0
|
|
6759
|
-
frdev_minor = 0
|
|
6760
|
-
frdev_major = 0
|
|
6761
6720
|
if(ftype == 5):
|
|
6762
6721
|
fsize = "0"
|
|
6763
6722
|
elif(ftype == 0):
|
|
@@ -6851,7 +6810,7 @@ def ZipFileToArrayAlt(infile, listonly=False, contentasfile=True, checksumtype="
|
|
|
6851
6810
|
extrasizelen = len(extrasizestr)
|
|
6852
6811
|
extrasizelenhex = format(extrasizelen, 'x').lower()
|
|
6853
6812
|
catoutlist = [ftypehex, fname, flinkname, format(int(fsize), 'x').lower(), format(int(fatime), 'x').lower(), format(int(fmtime), 'x').lower(), format(int(fctime), 'x').lower(), format(int(fbtime), 'x').lower(), format(int(fmode), 'x').lower(), format(int(fwinattributes), 'x').lower(), fcompression, format(int(fcsize), 'x').lower(), format(int(fuid), 'x').lower(
|
|
6854
|
-
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(
|
|
6813
|
+
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(fdev), 'x').lower(), format(int(fdev_minor), 'x').lower(), format(int(fdev_major), 'x').lower(), "+1", extrasizelenhex, format(catfextrafields, 'x').lower()]
|
|
6855
6814
|
catoutlen = len(catoutlist) + len(extradata) + 3
|
|
6856
6815
|
catoutlenhex = format(catoutlen, 'x').lower()
|
|
6857
6816
|
catoutlist.insert(0, catoutlenhex)
|
|
@@ -6905,8 +6864,8 @@ def ZipFileToArrayAlt(infile, listonly=False, contentasfile=True, checksumtype="
|
|
|
6905
6864
|
fcontents.seek(0, 0)
|
|
6906
6865
|
if(not contentasfile):
|
|
6907
6866
|
fcontents = fcontents.read()
|
|
6908
|
-
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
6909
|
-
'
|
|
6867
|
+
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
6868
|
+
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': "+1", 'fheaderchecksumtype': checksumtype, 'fcontentchecksumtype': checksumtype, 'fnumfields': catfnumfields + 2, 'frawheader': catheaderdata, 'fextrafields': catfextrafields, 'fextrafieldsize': extrasizelen, 'fextralist': extrafieldslist, 'fheaderchecksum': int(catfileheadercshex, 16), 'fcontentchecksum': int(catfilecontentcshex, 16), 'fhascontents': pyhascontents, 'fcontentstart': catfcontentstart, 'fcontentend': catfcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents})
|
|
6910
6869
|
fileidnum = fileidnum + 1
|
|
6911
6870
|
return catlist
|
|
6912
6871
|
|
|
@@ -7009,10 +6968,9 @@ if(rarfile_support):
|
|
|
7009
6968
|
fcurinode = curfid
|
|
7010
6969
|
finode = fcurinode
|
|
7011
6970
|
curfid = curfid + 1
|
|
6971
|
+
fdev = 0
|
|
7012
6972
|
fdev_minor = 0
|
|
7013
6973
|
fdev_major = 0
|
|
7014
|
-
frdev_minor = 0
|
|
7015
|
-
frdev_major = 0
|
|
7016
6974
|
if(ftype == 5):
|
|
7017
6975
|
fsize = "0"
|
|
7018
6976
|
if(ftype == 0):
|
|
@@ -7100,7 +7058,7 @@ if(rarfile_support):
|
|
|
7100
7058
|
extrasizelen = len(extrasizestr)
|
|
7101
7059
|
extrasizelenhex = format(extrasizelen, 'x').lower()
|
|
7102
7060
|
catoutlist = [ftypehex, fname, flinkname, format(int(fsize), 'x').lower(), format(int(fatime), 'x').lower(), format(int(fmtime), 'x').lower(), format(int(fctime), 'x').lower(), format(int(fbtime), 'x').lower(), format(int(fmode), 'x').lower(), format(int(fwinattributes), 'x').lower(), fcompression, format(int(fcsize), 'x').lower(), format(int(fuid), 'x').lower(
|
|
7103
|
-
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(
|
|
7061
|
+
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(fdev), 'x').lower(), format(int(fdev_minor), 'x').lower(), format(int(fdev_major), 'x').lower(), "+1", extrasizelenhex, format(catfextrafields, 'x').lower()]
|
|
7104
7062
|
catoutlen = len(catoutlist) + len(extradata) + 3
|
|
7105
7063
|
catoutlenhex = format(catoutlen, 'x').lower()
|
|
7106
7064
|
catoutlist.insert(0, catoutlenhex)
|
|
@@ -7154,8 +7112,8 @@ if(rarfile_support):
|
|
|
7154
7112
|
fcontents.seek(0, 0)
|
|
7155
7113
|
if(not contentasfile):
|
|
7156
7114
|
fcontents = fcontents.read()
|
|
7157
|
-
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
7158
|
-
'
|
|
7115
|
+
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
7116
|
+
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': "+1", 'fheaderchecksumtype': checksumtype, 'fcontentchecksumtype': checksumtype, 'fnumfields': catfnumfields + 2, 'frawheader': catheaderdata, 'fextrafields': catfextrafields, 'fextrafieldsize': extrasizelen, 'fextralist': extrafieldslist, 'fheaderchecksum': int(catfileheadercshex, 16), 'fcontentchecksum': int(catfilecontentcshex, 16), 'fhascontents': pyhascontents, 'fcontentstart': catfcontentstart, 'fcontentend': catfcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents})
|
|
7159
7117
|
fileidnum = fileidnum + 1
|
|
7160
7118
|
return catlist
|
|
7161
7119
|
|
|
@@ -7222,10 +7180,9 @@ if(py7zr_support):
|
|
|
7222
7180
|
fcurinode = curfid
|
|
7223
7181
|
finode = fcurinode
|
|
7224
7182
|
curfid = curfid + 1
|
|
7183
|
+
fdev = 0
|
|
7225
7184
|
fdev_minor = 0
|
|
7226
7185
|
fdev_major = 0
|
|
7227
|
-
frdev_minor = 0
|
|
7228
|
-
frdev_major = 0
|
|
7229
7186
|
if(ftype == 5):
|
|
7230
7187
|
fsize = "0"
|
|
7231
7188
|
fatime = int(member.creationtime.timestamp())
|
|
@@ -7293,7 +7250,7 @@ if(py7zr_support):
|
|
|
7293
7250
|
extrasizelen = len(extrasizestr)
|
|
7294
7251
|
extrasizelenhex = format(extrasizelen, 'x').lower()
|
|
7295
7252
|
catoutlist = [ftypehex, fname, flinkname, format(int(fsize), 'x').lower(), format(int(fatime), 'x').lower(), format(int(fmtime), 'x').lower(), format(int(fctime), 'x').lower(), format(int(fbtime), 'x').lower(), format(int(fmode), 'x').lower(), format(int(fwinattributes), 'x').lower(), fcompression, format(int(fcsize), 'x').lower(), format(int(fuid), 'x').lower(
|
|
7296
|
-
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(
|
|
7253
|
+
), funame, format(int(fgid), 'x').lower(), fgname, format(int(fcurfid), 'x').lower(), format(int(fcurinode), 'x').lower(), format(int(flinkcount), 'x').lower(), format(int(fdev), 'x').lower(), format(int(fdev_minor), 'x').lower(), format(int(fdev_major), 'x').lower(), "+1", extrasizelenhex, format(catfextrafields, 'x').lower()]
|
|
7297
7254
|
catoutlen = len(catoutlist) + len(extradata) + 3
|
|
7298
7255
|
catoutlenhex = format(catoutlen, 'x').lower()
|
|
7299
7256
|
catoutlist.insert(0, catoutlenhex)
|
|
@@ -7347,8 +7304,8 @@ if(py7zr_support):
|
|
|
7347
7304
|
fcontents.seek(0, 0)
|
|
7348
7305
|
if(not contentasfile):
|
|
7349
7306
|
fcontents = fcontents.read()
|
|
7350
|
-
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
7351
|
-
'
|
|
7307
|
+
catlist['ffilelist'].append({'fid': fileidnum, 'fidalt': fileidnum, 'fheadersize': int(catheaersize, 16), 'fhstart': catfhstart, 'fhend': catfhend, 'ftype': ftype, '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,
|
|
7308
|
+
'fdev': fdev, 'fminor': fdev_minor, 'fmajor': fdev_major, 'fseeknextfile': "+1", 'fheaderchecksumtype': checksumtype, 'fcontentchecksumtype': checksumtype, 'fnumfields': catfnumfields + 2, 'frawheader': catheaderdata, 'fextrafields': catfextrafields, 'fextrafieldsize': extrasizelen, 'fextralist': extrafieldslist, 'fheaderchecksum': int(catfileheadercshex, 16), 'fcontentchecksum': int(catfilecontentcshex, 16), 'fhascontents': pyhascontents, 'fcontentstart': catfcontentstart, 'fcontentend': catfcontentend, 'fcontentasfile': contentasfile, 'fcontents': fcontents})
|
|
7352
7309
|
fileidnum = fileidnum + 1
|
|
7353
7310
|
return catlist
|
|
7354
7311
|
|
|
@@ -7556,14 +7513,12 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru
|
|
|
7556
7513
|
fcompression = listcatfiles['ffilelist'][reallcfi]['fcompression']
|
|
7557
7514
|
fcsize = format(
|
|
7558
7515
|
int(listcatfiles['ffilelist'][reallcfi]['fcsize']), 'x').lower()
|
|
7516
|
+
fdev = format(
|
|
7517
|
+
int(listcatfiles['ffilelist'][reallcfi]['fdev']), 'x').lower()
|
|
7559
7518
|
fdev_minor = format(
|
|
7560
7519
|
int(listcatfiles['ffilelist'][reallcfi]['fminor']), 'x').lower()
|
|
7561
7520
|
fdev_major = format(
|
|
7562
7521
|
int(listcatfiles['ffilelist'][reallcfi]['fmajor']), 'x').lower()
|
|
7563
|
-
frdev_minor = format(
|
|
7564
|
-
int(listcatfiles['ffilelist'][reallcfi]['frminor']), 'x').lower()
|
|
7565
|
-
frdev_major = format(
|
|
7566
|
-
int(listcatfiles['ffilelist'][reallcfi]['frmajor']), 'x').lower()
|
|
7567
7522
|
fseeknextfile = listcatfiles['ffilelist'][reallcfi]['fseeknextfile']
|
|
7568
7523
|
if(len(listcatfiles['ffilelist'][reallcfi]['fextralist']) > listcatfiles['ffilelist'][reallcfi]['fextrafields'] and len(listcatfiles['ffilelist'][reallcfi]['fextralist']) > 0):
|
|
7569
7524
|
listcatfiles['ffilelist'][reallcfi]['fextrafields'] = len(
|
|
@@ -7640,10 +7595,9 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru
|
|
|
7640
7595
|
int(flinkinfo['fwinattributes']), 'x').lower()
|
|
7641
7596
|
fcompression = flinkinfo['fcompression']
|
|
7642
7597
|
fcsize = format(int(flinkinfo['fcsize']), 'x').lower()
|
|
7598
|
+
fdev = format(int(flinkinfo['fdev']), 'x').lower()
|
|
7643
7599
|
fdev_minor = format(int(flinkinfo['fminor']), 'x').lower()
|
|
7644
7600
|
fdev_major = format(int(flinkinfo['fmajor']), 'x').lower()
|
|
7645
|
-
frdev_minor = format(int(flinkinfo['frminor']), 'x').lower()
|
|
7646
|
-
frdev_major = format(int(flinkinfo['frmajor']), 'x').lower()
|
|
7647
7601
|
fseeknextfile = flinkinfo['fseeknextfile']
|
|
7648
7602
|
if(len(flinkinfo['fextralist']) > flinkinfo['fextrafields'] and len(flinkinfo['fextralist']) > 0):
|
|
7649
7603
|
flinkinfo['fextrafields'] = len(flinkinfo['fextralist'])
|
|
@@ -7672,7 +7626,7 @@ def RePackArchiveFile(infile, outfile, compression="auto", compresswholefile=Tru
|
|
|
7672
7626
|
if(fcompression == "none"):
|
|
7673
7627
|
fcompression = ""
|
|
7674
7628
|
catoutlist = [ftypehex, fname, flinkname, fsize, fatime, fmtime, fctime, fbtime, fmode, fwinattributes, fcompression, fcsize,
|
|
7675
|
-
fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev_minor, fdev_major,
|
|
7629
|
+
fuid, funame, fgid, fgname, fcurfid, fcurinode, flinkcount, fdev, fdev_minor, fdev_major, fseeknextfile]
|
|
7676
7630
|
catfp = AppendFileHeaderWithContent(
|
|
7677
7631
|
catfp, catoutlist, extradata, fcontents.read(), checksumtype, formatspecs)
|
|
7678
7632
|
fcontents.close()
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|