PyCatFile 0.21.2__py3-none-any.whl → 0.21.4__py3-none-any.whl
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.21.2.data → pycatfile-0.21.4.data}/scripts/catfile.py +1 -1
- {pycatfile-0.21.2.data → pycatfile-0.21.4.data}/scripts/neocatfile.py +1 -1
- {pycatfile-0.21.2.dist-info → pycatfile-0.21.4.dist-info}/METADATA +4 -4
- pycatfile-0.21.4.dist-info/RECORD +10 -0
- pycatfile.py +447 -353
- pycatfile-0.21.2.dist-info/RECORD +0 -10
- {pycatfile-0.21.2.data → pycatfile-0.21.4.data}/scripts/catneofile.py +0 -0
- {pycatfile-0.21.2.dist-info → pycatfile-0.21.4.dist-info}/WHEEL +0 -0
- {pycatfile-0.21.2.dist-info → pycatfile-0.21.4.dist-info}/licenses/LICENSE +0 -0
- {pycatfile-0.21.2.dist-info → pycatfile-0.21.4.dist-info}/top_level.txt +0 -0
- {pycatfile-0.21.2.dist-info → pycatfile-0.21.4.dist-info}/zip-safe +0 -0
pycatfile.py
CHANGED
|
@@ -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: 8/
|
|
17
|
+
$FileInfo: pycatfile.py - Last Update: 8/26/2025 Ver. 0.21.4 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
|
|
@@ -32,10 +32,12 @@ import socket
|
|
|
32
32
|
import hashlib
|
|
33
33
|
import inspect
|
|
34
34
|
import datetime
|
|
35
|
+
import tempfile
|
|
35
36
|
import logging
|
|
36
37
|
import zipfile
|
|
37
38
|
import binascii
|
|
38
39
|
import platform
|
|
40
|
+
from io import StringIO, BytesIO
|
|
39
41
|
try:
|
|
40
42
|
from backports import tempfile
|
|
41
43
|
except ImportError:
|
|
@@ -243,17 +245,6 @@ except ImportError:
|
|
|
243
245
|
from urllib2 import Request, build_opener, HTTPBasicAuthHandler
|
|
244
246
|
from urlparse import urlparse
|
|
245
247
|
|
|
246
|
-
# StringIO and BytesIO
|
|
247
|
-
try:
|
|
248
|
-
from io import StringIO, BytesIO
|
|
249
|
-
except ImportError:
|
|
250
|
-
try:
|
|
251
|
-
from cStringIO import StringIO
|
|
252
|
-
from cStringIO import StringIO as BytesIO
|
|
253
|
-
except ImportError:
|
|
254
|
-
from StringIO import StringIO
|
|
255
|
-
from StringIO import StringIO as BytesIO
|
|
256
|
-
|
|
257
248
|
def get_importing_script_path():
|
|
258
249
|
# Inspect the stack and get the frame of the caller
|
|
259
250
|
stack = inspect.stack()
|
|
@@ -275,22 +266,6 @@ def get_default_threads():
|
|
|
275
266
|
|
|
276
267
|
|
|
277
268
|
__use_pysftp__ = False
|
|
278
|
-
__use_alt_format__ = False
|
|
279
|
-
__use_env_file__ = True
|
|
280
|
-
__use_ini_file__ = True
|
|
281
|
-
__use_ini_name__ = "catfile.ini"
|
|
282
|
-
if('PYCATFILE_CONFIG_FILE' in os.environ and os.path.exists(os.environ['PYCATFILE_CONFIG_FILE']) and __use_env_file__):
|
|
283
|
-
scriptconf = os.environ['PYCATFILE_CONFIG_FILE']
|
|
284
|
-
else:
|
|
285
|
-
prescriptpath = get_importing_script_path()
|
|
286
|
-
if(prescriptpath is not None):
|
|
287
|
-
scriptconf = os.path.join(os.path.dirname(prescriptpath), __use_ini_name__)
|
|
288
|
-
else:
|
|
289
|
-
scriptconf = ""
|
|
290
|
-
if os.path.exists(scriptconf):
|
|
291
|
-
__config_file__ = scriptconf
|
|
292
|
-
else:
|
|
293
|
-
__config_file__ = os.path.join(os.path.dirname(os.path.realpath(__file__)), __use_ini_name__)
|
|
294
269
|
if(not havepysftp):
|
|
295
270
|
__use_pysftp__ = False
|
|
296
271
|
__use_http_lib__ = "httpx"
|
|
@@ -328,7 +303,25 @@ def is_only_nonprintable(var):
|
|
|
328
303
|
__file_format_multi_dict__ = {}
|
|
329
304
|
__file_format_default__ = "CatFile"
|
|
330
305
|
__include_defaults__ = True
|
|
306
|
+
__use_inmemfile__ = False
|
|
331
307
|
__program_name__ = "Py"+__file_format_default__
|
|
308
|
+
__use_env_file__ = True
|
|
309
|
+
__use_ini_file__ = True
|
|
310
|
+
__use_ini_name__ = "catfile.ini"
|
|
311
|
+
__use_json_file__ = False
|
|
312
|
+
__use_json_name__ = "catfile.json"
|
|
313
|
+
if('PYCATFILE_CONFIG_FILE' in os.environ and os.path.exists(os.environ['PYCATFILE_CONFIG_FILE']) and __use_env_file__):
|
|
314
|
+
scriptconf = os.environ['PYCATFILE_CONFIG_FILE']
|
|
315
|
+
else:
|
|
316
|
+
prescriptpath = get_importing_script_path()
|
|
317
|
+
if(prescriptpath is not None):
|
|
318
|
+
scriptconf = os.path.join(os.path.dirname(prescriptpath), __use_ini_name__)
|
|
319
|
+
else:
|
|
320
|
+
scriptconf = ""
|
|
321
|
+
if os.path.exists(scriptconf):
|
|
322
|
+
__config_file__ = scriptconf
|
|
323
|
+
else:
|
|
324
|
+
__config_file__ = os.path.join(os.path.dirname(os.path.realpath(__file__)), __use_ini_name__)
|
|
332
325
|
if __use_ini_file__ and os.path.exists(__config_file__):
|
|
333
326
|
config = configparser.ConfigParser()
|
|
334
327
|
config.read(__config_file__)
|
|
@@ -340,6 +333,7 @@ if __use_ini_file__ and os.path.exists(__config_file__):
|
|
|
340
333
|
__file_format_default__ = decode_unicode_escape(config.get('config', 'default'))
|
|
341
334
|
__program_name__ = decode_unicode_escape(config.get('config', 'proname'))
|
|
342
335
|
__include_defaults__ = config.getboolean('config', 'includedef')
|
|
336
|
+
__use_inmemfile__ = config.getboolean('config', 'inmemfile')
|
|
343
337
|
# Loop through all sections
|
|
344
338
|
for section in config.sections():
|
|
345
339
|
required_keys = [
|
|
@@ -391,12 +385,12 @@ __file_format_extension__ = __file_format_multi_dict__[__file_format_default__][
|
|
|
391
385
|
__file_format_dict__ = __file_format_multi_dict__[__file_format_default__]
|
|
392
386
|
__project__ = __program_name__
|
|
393
387
|
__project_url__ = "https://github.com/GameMaker2k/PyCatFile"
|
|
394
|
-
__version_info__ = (0, 21,
|
|
395
|
-
__version_date_info__ = (2025, 9,
|
|
388
|
+
__version_info__ = (0, 21, 4, "RC 1", 1)
|
|
389
|
+
__version_date_info__ = (2025, 9, 26, "RC 1", 1)
|
|
396
390
|
__version_date__ = str(__version_date_info__[0]) + "." + str(
|
|
397
391
|
__version_date_info__[1]).zfill(2) + "." + str(__version_date_info__[2]).zfill(2)
|
|
398
392
|
__revision__ = __version_info__[3]
|
|
399
|
-
__revision_id__ = "$Id:
|
|
393
|
+
__revision_id__ = "$Id: 4b73b24d1d9cb1fb5011cf0090b2e853058cd6fe $"
|
|
400
394
|
if(__version_info__[4] is not None):
|
|
401
395
|
__version_date_plusrc__ = __version_date__ + \
|
|
402
396
|
"-" + str(__version_date_info__[4])
|
|
@@ -586,6 +580,105 @@ def VerbosePrintOutReturn(dbgtxt, outtype="log", dbgenable=True, dgblevel=20):
|
|
|
586
580
|
return dbgtxt
|
|
587
581
|
|
|
588
582
|
|
|
583
|
+
# --- Helpers ---
|
|
584
|
+
def _normalize_initial_data(data, isbytes, encoding):
|
|
585
|
+
"""Return data in the correct type for write(): bytes (if isbytes) or text (if not)."""
|
|
586
|
+
if data is None:
|
|
587
|
+
return None
|
|
588
|
+
|
|
589
|
+
if isbytes:
|
|
590
|
+
# Want bytes
|
|
591
|
+
if isinstance(data, bytes):
|
|
592
|
+
return data
|
|
593
|
+
# Py2: str is already bytes, unicode needs encode
|
|
594
|
+
if sys.version_info[0] == 2:
|
|
595
|
+
try:
|
|
596
|
+
unicode # noqa: F821
|
|
597
|
+
except NameError:
|
|
598
|
+
pass
|
|
599
|
+
else:
|
|
600
|
+
if isinstance(data, unicode): # noqa: F821
|
|
601
|
+
return data.encode(encoding)
|
|
602
|
+
# Py3 str -> encode
|
|
603
|
+
return str(data).encode(encoding)
|
|
604
|
+
else:
|
|
605
|
+
# Want text (unicode/str)
|
|
606
|
+
if sys.version_info[0] == 2:
|
|
607
|
+
try:
|
|
608
|
+
unicode # noqa: F821
|
|
609
|
+
if isinstance(data, unicode): # noqa: F821
|
|
610
|
+
return data
|
|
611
|
+
# bytes/str -> decode
|
|
612
|
+
return data.decode(encoding) if isinstance(data, str) else unicode(data) # noqa: F821
|
|
613
|
+
except NameError:
|
|
614
|
+
# Very defensive; shouldn't happen
|
|
615
|
+
return data
|
|
616
|
+
else:
|
|
617
|
+
# Py3: want str
|
|
618
|
+
if isinstance(data, bytes):
|
|
619
|
+
return data.decode(encoding)
|
|
620
|
+
return str(data)
|
|
621
|
+
|
|
622
|
+
|
|
623
|
+
def MkTempFile(data=None, inmem=__use_inmemfile__, isbytes=True, prefix=__project__,
|
|
624
|
+
delete=True, encoding="utf-8"):
|
|
625
|
+
"""
|
|
626
|
+
Return a file-like handle.
|
|
627
|
+
- If inmem=True: returns StringIO (text) or BytesIO (bytes).
|
|
628
|
+
- If inmem=False: returns a NamedTemporaryFile opened in text or binary mode.
|
|
629
|
+
Args:
|
|
630
|
+
data: optional initial content; if provided, it's written and the handle is seek(0)
|
|
631
|
+
inmem: bool — return in-memory handle if True
|
|
632
|
+
isbytes: bool — choose bytes (True) or text (False)
|
|
633
|
+
prefix: str — tempfile prefix
|
|
634
|
+
delete: bool — whether the tempfile is deleted on close (NamedTemporaryFile)
|
|
635
|
+
encoding: str — used for text mode (and for conversions when needed)
|
|
636
|
+
"""
|
|
637
|
+
init = _normalize_initial_data(data, isbytes, encoding)
|
|
638
|
+
|
|
639
|
+
if inmem:
|
|
640
|
+
buf = BytesIO() if isbytes else StringIO()
|
|
641
|
+
if init is not None:
|
|
642
|
+
buf.write(init)
|
|
643
|
+
buf.seek(0)
|
|
644
|
+
return buf
|
|
645
|
+
|
|
646
|
+
mode = "wb+" if isbytes else "w+"
|
|
647
|
+
kwargs = {"prefix": prefix or "", "delete": delete, "mode": mode}
|
|
648
|
+
|
|
649
|
+
# Only Python 3's text-mode files accept encoding/newline explicitly
|
|
650
|
+
if not isbytes and sys.version_info[0] >= 3:
|
|
651
|
+
kwargs["encoding"] = encoding
|
|
652
|
+
kwargs["newline"] = ""
|
|
653
|
+
|
|
654
|
+
f = tempfile.NamedTemporaryFile(**kwargs)
|
|
655
|
+
|
|
656
|
+
if init is not None:
|
|
657
|
+
f.write(init)
|
|
658
|
+
f.seek(0)
|
|
659
|
+
return f
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
def MkTempFileSmart(data=None, isbytes=True, prefix=__project__, max_mem=1024*1024, encoding="utf-8"):
|
|
663
|
+
"""
|
|
664
|
+
Spooled temp file: starts in memory and spills to disk past max_mem.
|
|
665
|
+
Behaves like BytesIO/StringIO for small data, with the same preload+seek(0) behavior.
|
|
666
|
+
"""
|
|
667
|
+
mode = "wb+" if isbytes else "w+"
|
|
668
|
+
kwargs = {"mode": mode, "max_size": max_mem, "prefix": prefix or ""}
|
|
669
|
+
if not isbytes and sys.version_info[0] >= 3:
|
|
670
|
+
kwargs["encoding"] = encoding
|
|
671
|
+
kwargs["newline"] = ""
|
|
672
|
+
|
|
673
|
+
f = tempfile.SpooledTemporaryFile(**kwargs)
|
|
674
|
+
|
|
675
|
+
init = _normalize_initial_data(data, isbytes, encoding)
|
|
676
|
+
if init is not None:
|
|
677
|
+
f.write(init)
|
|
678
|
+
f.seek(0)
|
|
679
|
+
return f
|
|
680
|
+
|
|
681
|
+
|
|
589
682
|
def RemoveWindowsPath(dpath):
|
|
590
683
|
"""
|
|
591
684
|
Normalize a path by converting backslashes to forward slashes
|
|
@@ -1722,9 +1815,9 @@ def GetFileChecksum(instr, checksumtype="crc32", encodedata=True, formatspecs=__
|
|
|
1722
1815
|
|
|
1723
1816
|
|
|
1724
1817
|
def ValidateHeaderChecksum(inlist=[], checksumtype="crc32", inchecksum="0", formatspecs=__file_format_dict__):
|
|
1725
|
-
|
|
1818
|
+
catfileheadercshex = GetHeaderChecksum(
|
|
1726
1819
|
inlist, checksumtype, True, formatspecs).lower()
|
|
1727
|
-
return inchecksum.lower() ==
|
|
1820
|
+
return inchecksum.lower() == catfileheadercshex
|
|
1728
1821
|
|
|
1729
1822
|
|
|
1730
1823
|
def ValidateFileChecksum(infile, checksumtype="crc32", inchecksum="0", formatspecs=__file_format_dict__):
|
|
@@ -1922,7 +2015,7 @@ def ReadFileHeaderDataBySize(fp, delimiter=__file_format_dict__['format_delimite
|
|
|
1922
2015
|
headersize = int(preheaderdata[0], 16)
|
|
1923
2016
|
if(headersize <= 0):
|
|
1924
2017
|
return []
|
|
1925
|
-
subfp =
|
|
2018
|
+
subfp = MkTempFile()
|
|
1926
2019
|
subfp.write(fp.read(headersize))
|
|
1927
2020
|
fp.seek(len(delimiter), 1)
|
|
1928
2021
|
subfp.seek(0, 0)
|
|
@@ -2006,7 +2099,7 @@ def ReadFileHeaderDataWithContent(fp, listonly=False, uncompress=True, skipcheck
|
|
|
2006
2099
|
return False
|
|
2007
2100
|
fhend = fp.tell() - 1
|
|
2008
2101
|
fcontentstart = fp.tell()
|
|
2009
|
-
fcontents =
|
|
2102
|
+
fcontents = MkTempFile()
|
|
2010
2103
|
if(fsize > 0 and not listonly):
|
|
2011
2104
|
if(fcompression == "none" or fcompression == "" or fcompression == "auto"):
|
|
2012
2105
|
fcontents.write(fp.read(fsize))
|
|
@@ -2033,7 +2126,7 @@ def ReadFileHeaderDataWithContent(fp, listonly=False, uncompress=True, skipcheck
|
|
|
2033
2126
|
if(uncompress):
|
|
2034
2127
|
cfcontents = UncompressFileAlt(fcontents, formatspecs)
|
|
2035
2128
|
cfcontents.seek(0, 0)
|
|
2036
|
-
fcontents =
|
|
2129
|
+
fcontents = MkTempFile()
|
|
2037
2130
|
shutil.copyfileobj(cfcontents, fcontents)
|
|
2038
2131
|
cfcontents.close()
|
|
2039
2132
|
fcontents.seek(0, 0)
|
|
@@ -2147,7 +2240,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
|
|
|
2147
2240
|
fjsoncontent = {}
|
|
2148
2241
|
elif(fjsontype=="list"):
|
|
2149
2242
|
fprejsoncontent = fp.read(fjsonsize).decode("UTF-8")
|
|
2150
|
-
flisttmp =
|
|
2243
|
+
flisttmp = MkTempFile()
|
|
2151
2244
|
flisttmp.write(fprejsoncontent.encode())
|
|
2152
2245
|
flisttmp.seek(0)
|
|
2153
2246
|
fjsoncontent = ReadFileHeaderData(flisttmp, fjsonlen, delimiter)
|
|
@@ -2183,7 +2276,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
|
|
|
2183
2276
|
return False
|
|
2184
2277
|
fhend = fp.tell() - 1
|
|
2185
2278
|
fcontentstart = fp.tell()
|
|
2186
|
-
fcontents =
|
|
2279
|
+
fcontents = MkTempFile()
|
|
2187
2280
|
pyhascontents = False
|
|
2188
2281
|
if(fsize > 0 and not listonly):
|
|
2189
2282
|
if(fcompression == "none" or fcompression == "" or fcompression == "auto"):
|
|
@@ -2214,7 +2307,7 @@ def ReadFileHeaderDataWithContentToArray(fp, listonly=False, contentasfile=True,
|
|
|
2214
2307
|
cfcontents = UncompressFileAlt(
|
|
2215
2308
|
fcontents, formatspecs)
|
|
2216
2309
|
cfcontents.seek(0, 0)
|
|
2217
|
-
fcontents =
|
|
2310
|
+
fcontents = MkTempFile()
|
|
2218
2311
|
shutil.copyfileobj(cfcontents, fcontents)
|
|
2219
2312
|
cfcontents.close()
|
|
2220
2313
|
fcontents.seek(0, 0)
|
|
@@ -2333,7 +2426,7 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
|
|
|
2333
2426
|
fjsoncontent = {}
|
|
2334
2427
|
elif(fjsontype=="list"):
|
|
2335
2428
|
fprejsoncontent = fp.read(fjsonsize).decode("UTF-8")
|
|
2336
|
-
flisttmp =
|
|
2429
|
+
flisttmp = MkTempFile()
|
|
2337
2430
|
flisttmp.write(fprejsoncontent.encode())
|
|
2338
2431
|
flisttmp.seek(0)
|
|
2339
2432
|
fjsoncontent = ReadFileHeaderData(flisttmp, fjsonlen, delimiter)
|
|
@@ -2368,7 +2461,7 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
|
|
|
2368
2461
|
return False
|
|
2369
2462
|
fhend = fp.tell() - 1
|
|
2370
2463
|
fcontentstart = fp.tell()
|
|
2371
|
-
fcontents =
|
|
2464
|
+
fcontents = MkTempFile()
|
|
2372
2465
|
pyhascontents = False
|
|
2373
2466
|
if(fsize > 0 and not listonly):
|
|
2374
2467
|
if(fcompression == "none" or fcompression == "" or fcompression == "auto"):
|
|
@@ -2398,7 +2491,7 @@ def ReadFileHeaderDataWithContentToList(fp, listonly=False, contentasfile=False,
|
|
|
2398
2491
|
cfcontents = UncompressFileAlt(
|
|
2399
2492
|
fcontents, formatspecs)
|
|
2400
2493
|
cfcontents.seek(0, 0)
|
|
2401
|
-
fcontents =
|
|
2494
|
+
fcontents = MkTempFile()
|
|
2402
2495
|
shutil.copyfileobj(cfcontents, fcontents)
|
|
2403
2496
|
cfcontents.close()
|
|
2404
2497
|
fcontents.seek(0, 0)
|
|
@@ -2598,7 +2691,7 @@ def ReadFileDataWithContentToArray(fp, seekstart=0, seekend=0, listonly=False, c
|
|
|
2598
2691
|
invalid_archive = True
|
|
2599
2692
|
prefhend = fp.tell() - 1
|
|
2600
2693
|
prefcontentstart = fp.tell()
|
|
2601
|
-
prefcontents =
|
|
2694
|
+
prefcontents = MkTempFile()
|
|
2602
2695
|
pyhascontents = False
|
|
2603
2696
|
if(prefsize > 0):
|
|
2604
2697
|
prefcontents.write(fp.read(prefsize))
|
|
@@ -2866,7 +2959,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", seekstart=0, seekend=0,
|
|
|
2866
2959
|
return False
|
|
2867
2960
|
fp.seek(0, 0)
|
|
2868
2961
|
elif(infile == "-"):
|
|
2869
|
-
fp =
|
|
2962
|
+
fp = MkTempFile()
|
|
2870
2963
|
if(hasattr(sys.stdin, "buffer")):
|
|
2871
2964
|
shutil.copyfileobj(sys.stdin.buffer, fp)
|
|
2872
2965
|
else:
|
|
@@ -2887,7 +2980,7 @@ def ReadInFileWithContentToArray(infile, fmttype="auto", seekstart=0, seekend=0,
|
|
|
2887
2980
|
return False
|
|
2888
2981
|
fp.seek(0, 0)
|
|
2889
2982
|
elif(isinstance(infile, bytes) and sys.version_info[0] >= 3):
|
|
2890
|
-
fp =
|
|
2983
|
+
fp = MkTempFile()
|
|
2891
2984
|
fp.write(infile)
|
|
2892
2985
|
fp.seek(0, 0)
|
|
2893
2986
|
fp = UncompressFileAlt(fp, formatspecs)
|
|
@@ -3054,7 +3147,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", seekstart=0, seekend=0,
|
|
|
3054
3147
|
return False
|
|
3055
3148
|
fp.seek(0, 0)
|
|
3056
3149
|
elif(infile == "-"):
|
|
3057
|
-
fp =
|
|
3150
|
+
fp = MkTempFile()
|
|
3058
3151
|
if(hasattr(sys.stdin, "buffer")):
|
|
3059
3152
|
shutil.copyfileobj(sys.stdin.buffer, fp)
|
|
3060
3153
|
else:
|
|
@@ -3075,7 +3168,7 @@ def ReadInFileWithContentToList(infile, fmttype="auto", seekstart=0, seekend=0,
|
|
|
3075
3168
|
return False
|
|
3076
3169
|
fp.seek(0, 0)
|
|
3077
3170
|
elif(isinstance(infile, bytes) and sys.version_info[0] >= 3):
|
|
3078
|
-
fp =
|
|
3171
|
+
fp = MkTempFile()
|
|
3079
3172
|
fp.write(infile)
|
|
3080
3173
|
fp.seek(0, 0)
|
|
3081
3174
|
fp = UncompressFileAlt(fp, formatspecs)
|
|
@@ -3279,7 +3372,7 @@ def MakeEmptyFilePointer(fp, fmttype=__file_format_default__, checksumtype="crc3
|
|
|
3279
3372
|
return fp
|
|
3280
3373
|
|
|
3281
3374
|
|
|
3282
|
-
def
|
|
3375
|
+
def MakeEmptyCatFilePointer(fp, fmttype=__file_format_default__, checksumtype="crc32", formatspecs=__file_format_multi_dict__):
|
|
3283
3376
|
return MakeEmptyFilePointer(fp, fmttype, checksumtype, formatspecs)
|
|
3284
3377
|
|
|
3285
3378
|
|
|
@@ -3310,11 +3403,11 @@ def MakeEmptyFile(outfile, fmttype="auto", compression="auto", compresswholefile
|
|
|
3310
3403
|
pass
|
|
3311
3404
|
if(outfile == "-" or outfile is None):
|
|
3312
3405
|
verbose = False
|
|
3313
|
-
fp =
|
|
3406
|
+
fp = MkTempFile()
|
|
3314
3407
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
3315
3408
|
fp = outfile
|
|
3316
3409
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
3317
|
-
fp =
|
|
3410
|
+
fp = MkTempFile()
|
|
3318
3411
|
else:
|
|
3319
3412
|
fbasename = os.path.splitext(outfile)[0]
|
|
3320
3413
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -3362,7 +3455,7 @@ def MakeEmptyFile(outfile, fmttype="auto", compression="auto", compresswholefile
|
|
|
3362
3455
|
return True
|
|
3363
3456
|
|
|
3364
3457
|
|
|
3365
|
-
def
|
|
3458
|
+
def MakeEmptyCatFile(outfile, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype="crc32", formatspecs=__file_format_dict__, returnfp=False):
|
|
3366
3459
|
return MakeEmptyFile(outfile, "auto", compression, compresswholefile, compressionlevel, compressionuselist, checksumtype, formatspecs, returnfp)
|
|
3367
3460
|
|
|
3368
3461
|
|
|
@@ -3646,7 +3739,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
3646
3739
|
fwinattributes = format(int(0), 'x').lower()
|
|
3647
3740
|
fcompression = ""
|
|
3648
3741
|
fcsize = format(int(0), 'x').lower()
|
|
3649
|
-
fcontents =
|
|
3742
|
+
fcontents = MkTempFile()
|
|
3650
3743
|
chunk_size = 1024
|
|
3651
3744
|
fcencoding = "UTF-8"
|
|
3652
3745
|
curcompression = "none"
|
|
@@ -3665,7 +3758,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
3665
3758
|
ilmin = 0
|
|
3666
3759
|
ilcsize = []
|
|
3667
3760
|
while(ilmin < ilsize):
|
|
3668
|
-
cfcontents =
|
|
3761
|
+
cfcontents = MkTempFile()
|
|
3669
3762
|
fcontents.seek(0, 0)
|
|
3670
3763
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
3671
3764
|
fcontents.seek(0, 0)
|
|
@@ -3682,7 +3775,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
3682
3775
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
3683
3776
|
curcompression = compressionuselist[ilcmin]
|
|
3684
3777
|
fcontents.seek(0, 0)
|
|
3685
|
-
cfcontents =
|
|
3778
|
+
cfcontents = MkTempFile()
|
|
3686
3779
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
3687
3780
|
cfcontents.seek(0, 0)
|
|
3688
3781
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -3712,7 +3805,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
3712
3805
|
ilmin = 0
|
|
3713
3806
|
ilcsize = []
|
|
3714
3807
|
while(ilmin < ilsize):
|
|
3715
|
-
cfcontents =
|
|
3808
|
+
cfcontents = MkTempFile()
|
|
3716
3809
|
fcontents.seek(0, 0)
|
|
3717
3810
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
3718
3811
|
fcontents.seek(0, 0)
|
|
@@ -3729,7 +3822,7 @@ def AppendFilesWithContent(infiles, fp, dirlistfromtxt=False, filevalues=[], ext
|
|
|
3729
3822
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
3730
3823
|
curcompression = compressionuselist[ilcmin]
|
|
3731
3824
|
fcontents.seek(0, 0)
|
|
3732
|
-
cfcontents =
|
|
3825
|
+
cfcontents = MkTempFile()
|
|
3733
3826
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
3734
3827
|
cfcontents.seek(0, 0)
|
|
3735
3828
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -3859,11 +3952,11 @@ def AppendFilesWithContentToOutFile(infiles, outfile, dirlistfromtxt=False, fmtt
|
|
|
3859
3952
|
pass
|
|
3860
3953
|
if(outfile == "-" or outfile is None):
|
|
3861
3954
|
verbose = False
|
|
3862
|
-
fp =
|
|
3955
|
+
fp = MkTempFile()
|
|
3863
3956
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
3864
3957
|
fp = outfile
|
|
3865
3958
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
3866
|
-
fp =
|
|
3959
|
+
fp = MkTempFile()
|
|
3867
3960
|
else:
|
|
3868
3961
|
fbasename = os.path.splitext(outfile)[0]
|
|
3869
3962
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -3939,11 +4032,11 @@ def AppendListsWithContentToOutFile(inlist, outfile, dirlistfromtxt=False, fmtty
|
|
|
3939
4032
|
pass
|
|
3940
4033
|
if(outfile == "-" or outfile is None):
|
|
3941
4034
|
verbose = False
|
|
3942
|
-
fp =
|
|
4035
|
+
fp = MkTempFile()
|
|
3943
4036
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
3944
4037
|
fp = outfile
|
|
3945
4038
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
3946
|
-
fp =
|
|
4039
|
+
fp = MkTempFile()
|
|
3947
4040
|
else:
|
|
3948
4041
|
fbasename = os.path.splitext(outfile)[0]
|
|
3949
4042
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -4060,7 +4153,7 @@ def GzipCompressData(data, compresslevel=9):
|
|
|
4060
4153
|
compressed_data = gzip.compress(data, compresslevel=compresslevel)
|
|
4061
4154
|
except AttributeError:
|
|
4062
4155
|
# Fallback to older method for Python 2.x and older 3.x versions
|
|
4063
|
-
out =
|
|
4156
|
+
out = MkTempFile()
|
|
4064
4157
|
with gzip.GzipFile(fileobj=out, mode="wb", compresslevel=compresslevel) as f:
|
|
4065
4158
|
f.write(data)
|
|
4066
4159
|
compressed_data = out.getvalue()
|
|
@@ -4073,7 +4166,7 @@ def GzipDecompressData(compressed_data):
|
|
|
4073
4166
|
decompressed_data = gzip.decompress(compressed_data)
|
|
4074
4167
|
except AttributeError:
|
|
4075
4168
|
# Fallback to older method for Python 2.x and older 3.x versions
|
|
4076
|
-
inp =
|
|
4169
|
+
inp = MkTempFile(compressed_data)
|
|
4077
4170
|
with gzip.GzipFile(fileobj=inp, mode="rb") as f:
|
|
4078
4171
|
decompressed_data = f.read()
|
|
4079
4172
|
return decompressed_data
|
|
@@ -4206,9 +4299,9 @@ def GetFileEncoding(infile, closefp=True):
|
|
|
4206
4299
|
|
|
4207
4300
|
def GetFileEncodingFromString(instring, closefp=True):
|
|
4208
4301
|
try:
|
|
4209
|
-
instringsfile =
|
|
4302
|
+
instringsfile = MkTempFile(instring)
|
|
4210
4303
|
except TypeError:
|
|
4211
|
-
instringsfile =
|
|
4304
|
+
instringsfile = MkTempFile(instring.encode("UTF-8"))
|
|
4212
4305
|
return GetFileEncoding(instringsfile, closefp)
|
|
4213
4306
|
|
|
4214
4307
|
|
|
@@ -4471,17 +4564,17 @@ def CheckCompressionSubType(infile, formatspecs=__file_format_multi_dict__, clos
|
|
|
4471
4564
|
|
|
4472
4565
|
def CheckCompressionTypeFromString(instring, formatspecs=__file_format_multi_dict__, closefp=True):
|
|
4473
4566
|
try:
|
|
4474
|
-
instringsfile =
|
|
4567
|
+
instringsfile = MkTempFile(instring)
|
|
4475
4568
|
except TypeError:
|
|
4476
|
-
instringsfile =
|
|
4569
|
+
instringsfile = MkTempFile(instring.encode("UTF-8"))
|
|
4477
4570
|
return CheckCompressionType(instringsfile, formatspecs, closefp)
|
|
4478
4571
|
|
|
4479
4572
|
|
|
4480
4573
|
def CheckCompressionTypeFromBytes(instring, formatspecs=__file_format_multi_dict__, closefp=True):
|
|
4481
4574
|
try:
|
|
4482
|
-
instringsfile =
|
|
4575
|
+
instringsfile = MkTempFile(instring)
|
|
4483
4576
|
except TypeError:
|
|
4484
|
-
instringsfile =
|
|
4577
|
+
instringsfile = MkTempFile(instring.decode("UTF-8"))
|
|
4485
4578
|
return CheckCompressionType(instringsfile, formatspecs, closefp)
|
|
4486
4579
|
|
|
4487
4580
|
|
|
@@ -4648,7 +4741,7 @@ def UncompressBytes(infile, formatspecs=__file_format_multi_dict__):
|
|
|
4648
4741
|
|
|
4649
4742
|
|
|
4650
4743
|
def UncompressBytesAlt(inbytes, formatspecs=__file_format_multi_dict__):
|
|
4651
|
-
filefp =
|
|
4744
|
+
filefp = MkTempFile()
|
|
4652
4745
|
outstring = UncompressBytes(inbytes, formatspecs)
|
|
4653
4746
|
filefp.write(outstring)
|
|
4654
4747
|
filefp.seek(0, 0)
|
|
@@ -4664,7 +4757,7 @@ def UncompressBytesAltFP(fp, formatspecs=__file_format_multi_dict__):
|
|
|
4664
4757
|
fp.seek(0, 0)
|
|
4665
4758
|
if(prechck!="zstd"):
|
|
4666
4759
|
return UncompressFileAlt(fp, formatspecs)
|
|
4667
|
-
filefp =
|
|
4760
|
+
filefp = MkTempFile()
|
|
4668
4761
|
fp.seek(0, 0)
|
|
4669
4762
|
outstring = UncompressBytes(fp.read(), formatspecs)
|
|
4670
4763
|
filefp.write(outstring)
|
|
@@ -4681,7 +4774,7 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4681
4774
|
if(compression not in compressionuselist and compression is None):
|
|
4682
4775
|
compression = "auto"
|
|
4683
4776
|
if(compression == "gzip" and compression in compressionsupport):
|
|
4684
|
-
bytesfp =
|
|
4777
|
+
bytesfp = MkTempFile()
|
|
4685
4778
|
if(compressionlevel is None):
|
|
4686
4779
|
compressionlevel = 9
|
|
4687
4780
|
else:
|
|
@@ -4689,7 +4782,7 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4689
4782
|
bytesfp.write(GzipCompressData(
|
|
4690
4783
|
fp.read(), compresslevel=compressionlevel))
|
|
4691
4784
|
elif(compression == "bzip2" and compression in compressionsupport):
|
|
4692
|
-
bytesfp =
|
|
4785
|
+
bytesfp = MkTempFile()
|
|
4693
4786
|
if(compressionlevel is None):
|
|
4694
4787
|
compressionlevel = 9
|
|
4695
4788
|
else:
|
|
@@ -4697,7 +4790,7 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4697
4790
|
bytesfp.write(BzipCompressData(
|
|
4698
4791
|
fp.read(), compresslevel=compressionlevel))
|
|
4699
4792
|
elif(compression == "lz4" and compression in compressionsupport):
|
|
4700
|
-
bytesfp =
|
|
4793
|
+
bytesfp = MkTempFile()
|
|
4701
4794
|
if(compressionlevel is None):
|
|
4702
4795
|
compressionlevel = 9
|
|
4703
4796
|
else:
|
|
@@ -4705,14 +4798,14 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4705
4798
|
bytesfp.write(lz4.frame.compress(
|
|
4706
4799
|
fp.read(), compression_level=compressionlevel))
|
|
4707
4800
|
elif((compression == "lzo" or compression == "lzop") and compression in compressionsupport):
|
|
4708
|
-
bytesfp =
|
|
4801
|
+
bytesfp = MkTempFile()
|
|
4709
4802
|
if(compressionlevel is None):
|
|
4710
4803
|
compressionlevel = 9
|
|
4711
4804
|
else:
|
|
4712
4805
|
compressionlevel = int(compressionlevel)
|
|
4713
4806
|
bytesfp.write(lzo.compress(fp.read(), compressionlevel))
|
|
4714
4807
|
elif(compression == "zstd" and compression in compressionsupport):
|
|
4715
|
-
bytesfp =
|
|
4808
|
+
bytesfp = MkTempFile()
|
|
4716
4809
|
if(compressionlevel is None):
|
|
4717
4810
|
compressionlevel = 9
|
|
4718
4811
|
else:
|
|
@@ -4720,7 +4813,7 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4720
4813
|
compressor = zstandard.ZstdCompressor(compressionlevel, threads=get_default_threads())
|
|
4721
4814
|
bytesfp.write(compressor.compress(fp.read()))
|
|
4722
4815
|
elif(compression == "lzma" and compression in compressionsupport):
|
|
4723
|
-
bytesfp =
|
|
4816
|
+
bytesfp = MkTempFile()
|
|
4724
4817
|
if(compressionlevel is None):
|
|
4725
4818
|
compressionlevel = 9
|
|
4726
4819
|
else:
|
|
@@ -4730,7 +4823,7 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4730
4823
|
except (NotImplementedError, lzma.LZMAError):
|
|
4731
4824
|
bytesfp.write(lzma.compress(fp.read(), format=lzma.FORMAT_ALONE))
|
|
4732
4825
|
elif(compression == "xz" and compression in compressionsupport):
|
|
4733
|
-
bytesfp =
|
|
4826
|
+
bytesfp = MkTempFile()
|
|
4734
4827
|
if(compressionlevel is None):
|
|
4735
4828
|
compressionlevel = 9
|
|
4736
4829
|
else:
|
|
@@ -4740,7 +4833,7 @@ def CompressOpenFileAlt(fp, compression="auto", compressionlevel=None, compressi
|
|
|
4740
4833
|
except (NotImplementedError, lzma.LZMAError):
|
|
4741
4834
|
bytesfp.write(lzma.compress(fp.read(), format=lzma.FORMAT_XZ))
|
|
4742
4835
|
elif(compression == "zlib" and compression in compressionsupport):
|
|
4743
|
-
bytesfp =
|
|
4836
|
+
bytesfp = MkTempFile()
|
|
4744
4837
|
if(compressionlevel is None):
|
|
4745
4838
|
compressionlevel = 9
|
|
4746
4839
|
else:
|
|
@@ -4910,11 +5003,11 @@ def PackCatFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compress
|
|
|
4910
5003
|
pass
|
|
4911
5004
|
if(outfile == "-" or outfile is None):
|
|
4912
5005
|
verbose = False
|
|
4913
|
-
fp =
|
|
5006
|
+
fp = MkTempFile()
|
|
4914
5007
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
4915
5008
|
fp = outfile
|
|
4916
5009
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
4917
|
-
fp =
|
|
5010
|
+
fp = MkTempFile()
|
|
4918
5011
|
else:
|
|
4919
5012
|
fbasename = os.path.splitext(outfile)[0]
|
|
4920
5013
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -5109,7 +5202,7 @@ def PackCatFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compress
|
|
|
5109
5202
|
fwinattributes = format(int(0), 'x').lower()
|
|
5110
5203
|
fcompression = ""
|
|
5111
5204
|
fcsize = format(int(0), 'x').lower()
|
|
5112
|
-
fcontents =
|
|
5205
|
+
fcontents = MkTempFile()
|
|
5113
5206
|
fcencoding = "UTF-8"
|
|
5114
5207
|
curcompression = "none"
|
|
5115
5208
|
if not followlink and ftype in data_types:
|
|
@@ -5127,7 +5220,7 @@ def PackCatFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compress
|
|
|
5127
5220
|
ilmin = 0
|
|
5128
5221
|
ilcsize = []
|
|
5129
5222
|
while(ilmin < ilsize):
|
|
5130
|
-
cfcontents =
|
|
5223
|
+
cfcontents = MkTempFile()
|
|
5131
5224
|
fcontents.seek(0, 0)
|
|
5132
5225
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5133
5226
|
fcontents.seek(0, 0)
|
|
@@ -5144,7 +5237,7 @@ def PackCatFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compress
|
|
|
5144
5237
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
5145
5238
|
curcompression = compressionuselist[ilcmin]
|
|
5146
5239
|
fcontents.seek(0, 0)
|
|
5147
|
-
cfcontents =
|
|
5240
|
+
cfcontents = MkTempFile()
|
|
5148
5241
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5149
5242
|
cfcontents.seek(0, 0)
|
|
5150
5243
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -5174,7 +5267,7 @@ def PackCatFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compress
|
|
|
5174
5267
|
ilmin = 0
|
|
5175
5268
|
ilcsize = []
|
|
5176
5269
|
while(ilmin < ilsize):
|
|
5177
|
-
cfcontents =
|
|
5270
|
+
cfcontents = MkTempFile()
|
|
5178
5271
|
fcontents.seek(0, 0)
|
|
5179
5272
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5180
5273
|
fcontents.seek(0, 0)
|
|
@@ -5191,7 +5284,7 @@ def PackCatFile(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compress
|
|
|
5191
5284
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
5192
5285
|
curcompression = compressionuselist[ilcmin]
|
|
5193
5286
|
fcontents.seek(0, 0)
|
|
5194
|
-
cfcontents =
|
|
5287
|
+
cfcontents = MkTempFile()
|
|
5195
5288
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5196
5289
|
cfcontents.seek(0, 0)
|
|
5197
5290
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -5294,11 +5387,11 @@ def PackCatFileFromTarFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5294
5387
|
pass
|
|
5295
5388
|
if(outfile == "-" or outfile is None):
|
|
5296
5389
|
verbose = False
|
|
5297
|
-
fp =
|
|
5390
|
+
fp = MkTempFile()
|
|
5298
5391
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
5299
5392
|
fp = outfile
|
|
5300
5393
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
5301
|
-
fp =
|
|
5394
|
+
fp = MkTempFile()
|
|
5302
5395
|
else:
|
|
5303
5396
|
fbasename = os.path.splitext(outfile)[0]
|
|
5304
5397
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -5317,7 +5410,7 @@ def PackCatFileFromTarFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5317
5410
|
filetoinode = {}
|
|
5318
5411
|
inodetoforminode = {}
|
|
5319
5412
|
if(infile == "-"):
|
|
5320
|
-
infile =
|
|
5413
|
+
infile = MkTempFile()
|
|
5321
5414
|
if(hasattr(sys.stdin, "buffer")):
|
|
5322
5415
|
shutil.copyfileobj(sys.stdin.buffer, infile)
|
|
5323
5416
|
else:
|
|
@@ -5456,13 +5549,13 @@ def PackCatFileFromTarFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5456
5549
|
fwinattributes = format(int(0), 'x').lower()
|
|
5457
5550
|
fcompression = ""
|
|
5458
5551
|
fcsize = format(int(0), 'x').lower()
|
|
5459
|
-
fcontents =
|
|
5552
|
+
fcontents = MkTempFile()
|
|
5460
5553
|
fcencoding = "UTF-8"
|
|
5461
5554
|
curcompression = "none"
|
|
5462
5555
|
if ftype in data_types:
|
|
5463
5556
|
fpc = tarfp.extractfile(member)
|
|
5464
|
-
fpc.close()
|
|
5465
5557
|
shutil.copyfileobj(fpc, fcontents)
|
|
5558
|
+
fpc.close()
|
|
5466
5559
|
typechecktest = CheckCompressionType(fcontents, closefp=False)
|
|
5467
5560
|
fcontents.seek(0, 0)
|
|
5468
5561
|
fcencoding = GetFileEncoding(fcontents, False)
|
|
@@ -5475,7 +5568,7 @@ def PackCatFileFromTarFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5475
5568
|
ilmin = 0
|
|
5476
5569
|
ilcsize = []
|
|
5477
5570
|
while(ilmin < ilsize):
|
|
5478
|
-
cfcontents =
|
|
5571
|
+
cfcontents = MkTempFile()
|
|
5479
5572
|
fcontents.seek(0, 0)
|
|
5480
5573
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5481
5574
|
fcontents.seek(0, 0)
|
|
@@ -5492,7 +5585,7 @@ def PackCatFileFromTarFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5492
5585
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
5493
5586
|
curcompression = compressionuselist[ilcmin]
|
|
5494
5587
|
fcontents.seek(0, 0)
|
|
5495
|
-
cfcontents =
|
|
5588
|
+
cfcontents = MkTempFile()
|
|
5496
5589
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5497
5590
|
cfcontents.seek(0, 0)
|
|
5498
5591
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -5591,11 +5684,11 @@ def PackCatFileFromZipFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5591
5684
|
pass
|
|
5592
5685
|
if(outfile == "-" or outfile is None):
|
|
5593
5686
|
verbose = False
|
|
5594
|
-
fp =
|
|
5687
|
+
fp = MkTempFile()
|
|
5595
5688
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
5596
5689
|
fp = outfile
|
|
5597
5690
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
5598
|
-
fp =
|
|
5691
|
+
fp = MkTempFile()
|
|
5599
5692
|
else:
|
|
5600
5693
|
fbasename = os.path.splitext(outfile)[0]
|
|
5601
5694
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -5614,7 +5707,7 @@ def PackCatFileFromZipFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5614
5707
|
filetoinode = {}
|
|
5615
5708
|
inodetoforminode = {}
|
|
5616
5709
|
if(infile == "-"):
|
|
5617
|
-
infile =
|
|
5710
|
+
infile = MkTempFile()
|
|
5618
5711
|
if(hasattr(sys.stdin, "buffer")):
|
|
5619
5712
|
shutil.copyfileobj(sys.stdin.buffer, infile)
|
|
5620
5713
|
else:
|
|
@@ -5755,7 +5848,7 @@ def PackCatFileFromZipFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5755
5848
|
fgname = ""
|
|
5756
5849
|
except ImportError:
|
|
5757
5850
|
fgname = ""
|
|
5758
|
-
fcontents =
|
|
5851
|
+
fcontents = MkTempFile()
|
|
5759
5852
|
fcencoding = "UTF-8"
|
|
5760
5853
|
curcompression = "none"
|
|
5761
5854
|
if ftype == 0:
|
|
@@ -5772,7 +5865,7 @@ def PackCatFileFromZipFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5772
5865
|
ilmin = 0
|
|
5773
5866
|
ilcsize = []
|
|
5774
5867
|
while(ilmin < ilsize):
|
|
5775
|
-
cfcontents =
|
|
5868
|
+
cfcontents = MkTempFile()
|
|
5776
5869
|
fcontents.seek(0, 0)
|
|
5777
5870
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5778
5871
|
fcontents.seek(0, 0)
|
|
@@ -5786,7 +5879,7 @@ def PackCatFileFromZipFile(infile, outfile, fmttype="auto", compression="auto",
|
|
|
5786
5879
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
5787
5880
|
curcompression = compressionuselist[ilcmin]
|
|
5788
5881
|
fcontents.seek(0, 0)
|
|
5789
|
-
cfcontents =
|
|
5882
|
+
cfcontents = MkTempFile()
|
|
5790
5883
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
5791
5884
|
cfcontents.seek(0, 0)
|
|
5792
5885
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -5890,11 +5983,11 @@ if(rarfile_support):
|
|
|
5890
5983
|
pass
|
|
5891
5984
|
if(outfile == "-" or outfile is None):
|
|
5892
5985
|
verbose = False
|
|
5893
|
-
fp =
|
|
5986
|
+
fp = MkTempFile()
|
|
5894
5987
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
5895
5988
|
fp = outfile
|
|
5896
5989
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
5897
|
-
fp =
|
|
5990
|
+
fp = MkTempFile()
|
|
5898
5991
|
else:
|
|
5899
5992
|
fbasename = os.path.splitext(outfile)[0]
|
|
5900
5993
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -6072,7 +6165,7 @@ if(rarfile_support):
|
|
|
6072
6165
|
fgname = ""
|
|
6073
6166
|
except ImportError:
|
|
6074
6167
|
fgname = ""
|
|
6075
|
-
fcontents =
|
|
6168
|
+
fcontents = MkTempFile()
|
|
6076
6169
|
fcencoding = "UTF-8"
|
|
6077
6170
|
curcompression = "none"
|
|
6078
6171
|
if ftype == 0:
|
|
@@ -6089,7 +6182,7 @@ if(rarfile_support):
|
|
|
6089
6182
|
ilmin = 0
|
|
6090
6183
|
ilcsize = []
|
|
6091
6184
|
while(ilmin < ilsize):
|
|
6092
|
-
cfcontents =
|
|
6185
|
+
cfcontents = MkTempFile()
|
|
6093
6186
|
fcontents.seek(0, 0)
|
|
6094
6187
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
6095
6188
|
fcontents.seek(0, 0)
|
|
@@ -6106,7 +6199,7 @@ if(rarfile_support):
|
|
|
6106
6199
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
6107
6200
|
curcompression = compressionuselist[ilcmin]
|
|
6108
6201
|
fcontents.seek(0, 0)
|
|
6109
|
-
cfcontents =
|
|
6202
|
+
cfcontents = MkTempFile()
|
|
6110
6203
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
6111
6204
|
cfcontents.seek(0, 0)
|
|
6112
6205
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -6210,11 +6303,11 @@ if(py7zr_support):
|
|
|
6210
6303
|
pass
|
|
6211
6304
|
if(outfile == "-" or outfile is None):
|
|
6212
6305
|
verbose = False
|
|
6213
|
-
fp =
|
|
6306
|
+
fp = MkTempFile()
|
|
6214
6307
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
6215
6308
|
fp = outfile
|
|
6216
6309
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
6217
|
-
fp =
|
|
6310
|
+
fp = MkTempFile()
|
|
6218
6311
|
else:
|
|
6219
6312
|
fbasename = os.path.splitext(outfile)[0]
|
|
6220
6313
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -6323,7 +6416,7 @@ if(py7zr_support):
|
|
|
6323
6416
|
fgname = ""
|
|
6324
6417
|
except ImportError:
|
|
6325
6418
|
fgname = ""
|
|
6326
|
-
fcontents =
|
|
6419
|
+
fcontents = MkTempFile()
|
|
6327
6420
|
fcencoding = "UTF-8"
|
|
6328
6421
|
curcompression = "none"
|
|
6329
6422
|
if ftype == 0:
|
|
@@ -6343,7 +6436,7 @@ if(py7zr_support):
|
|
|
6343
6436
|
ilmin = 0
|
|
6344
6437
|
ilcsize = []
|
|
6345
6438
|
while(ilmin < ilsize):
|
|
6346
|
-
cfcontents =
|
|
6439
|
+
cfcontents = MkTempFile()
|
|
6347
6440
|
fcontents.seek(0, 0)
|
|
6348
6441
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
6349
6442
|
fcontents.seek(0, 0)
|
|
@@ -6360,7 +6453,7 @@ if(py7zr_support):
|
|
|
6360
6453
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
6361
6454
|
curcompression = compressionuselist[ilcmin]
|
|
6362
6455
|
fcontents.seek(0, 0)
|
|
6363
|
-
cfcontents =
|
|
6456
|
+
cfcontents = MkTempFile()
|
|
6364
6457
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
6365
6458
|
cfcontents.seek(0, 0)
|
|
6366
6459
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -6475,7 +6568,7 @@ def CatFileSeekToFileNum(infile, fmttype="auto", seekto=0, listonly=False, conte
|
|
|
6475
6568
|
return False
|
|
6476
6569
|
fp.seek(0, 0)
|
|
6477
6570
|
elif(infile == "-"):
|
|
6478
|
-
fp =
|
|
6571
|
+
fp = MkTempFile()
|
|
6479
6572
|
if(hasattr(sys.stdin, "buffer")):
|
|
6480
6573
|
shutil.copyfileobj(sys.stdin.buffer, fp)
|
|
6481
6574
|
else:
|
|
@@ -6489,7 +6582,7 @@ def CatFileSeekToFileNum(infile, fmttype="auto", seekto=0, listonly=False, conte
|
|
|
6489
6582
|
return False
|
|
6490
6583
|
fp.seek(0, 0)
|
|
6491
6584
|
elif(isinstance(infile, bytes) and sys.version_info[0] >= 3):
|
|
6492
|
-
fp =
|
|
6585
|
+
fp = MkTempFile()
|
|
6493
6586
|
fp.write(infile)
|
|
6494
6587
|
fp.seek(0, 0)
|
|
6495
6588
|
fp = UncompressFileAlt(fp, formatspecs)
|
|
@@ -6790,7 +6883,7 @@ def CatFileSeekToFileName(infile, fmttype="auto", seekfile=None, listonly=False,
|
|
|
6790
6883
|
return False
|
|
6791
6884
|
fp.seek(0, 0)
|
|
6792
6885
|
elif(infile == "-"):
|
|
6793
|
-
fp =
|
|
6886
|
+
fp = MkTempFile()
|
|
6794
6887
|
if(hasattr(sys.stdin, "buffer")):
|
|
6795
6888
|
shutil.copyfileobj(sys.stdin.buffer, fp)
|
|
6796
6889
|
else:
|
|
@@ -6804,7 +6897,7 @@ def CatFileSeekToFileName(infile, fmttype="auto", seekfile=None, listonly=False,
|
|
|
6804
6897
|
return False
|
|
6805
6898
|
fp.seek(0, 0)
|
|
6806
6899
|
elif(isinstance(infile, bytes) and sys.version_info[0] >= 3):
|
|
6807
|
-
fp =
|
|
6900
|
+
fp = MkTempFile()
|
|
6808
6901
|
fp.write(infile)
|
|
6809
6902
|
fp.seek(0, 0)
|
|
6810
6903
|
fp = UncompressFileAlt(fp, formatspecs)
|
|
@@ -7111,7 +7204,7 @@ def CatFileValidate(infile, fmttype="auto", formatspecs=__file_format_multi_dict
|
|
|
7111
7204
|
return False
|
|
7112
7205
|
fp.seek(0, 0)
|
|
7113
7206
|
elif(infile == "-"):
|
|
7114
|
-
fp =
|
|
7207
|
+
fp = MkTempFile()
|
|
7115
7208
|
if(hasattr(sys.stdin, "buffer")):
|
|
7116
7209
|
shutil.copyfileobj(sys.stdin.buffer, fp)
|
|
7117
7210
|
else:
|
|
@@ -7125,7 +7218,7 @@ def CatFileValidate(infile, fmttype="auto", formatspecs=__file_format_multi_dict
|
|
|
7125
7218
|
return False
|
|
7126
7219
|
fp.seek(0, 0)
|
|
7127
7220
|
elif(isinstance(infile, bytes) and sys.version_info[0] >= 3):
|
|
7128
|
-
fp =
|
|
7221
|
+
fp = MkTempFile()
|
|
7129
7222
|
fp.write(infile)
|
|
7130
7223
|
fp.seek(0, 0)
|
|
7131
7224
|
fp = UncompressFileAlt(fp, formatspecs)
|
|
@@ -7463,7 +7556,7 @@ def CatFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=Fals
|
|
|
7463
7556
|
return False
|
|
7464
7557
|
fp.seek(0, 0)
|
|
7465
7558
|
elif(infile == "-"):
|
|
7466
|
-
fp =
|
|
7559
|
+
fp = MkTempFile()
|
|
7467
7560
|
if(hasattr(sys.stdin, "buffer")):
|
|
7468
7561
|
shutil.copyfileobj(sys.stdin.buffer, fp)
|
|
7469
7562
|
else:
|
|
@@ -7477,7 +7570,7 @@ def CatFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=Fals
|
|
|
7477
7570
|
return False
|
|
7478
7571
|
fp.seek(0, 0)
|
|
7479
7572
|
elif(isinstance(infile, bytes) and sys.version_info[0] >= 3):
|
|
7480
|
-
fp =
|
|
7573
|
+
fp = MkTempFile()
|
|
7481
7574
|
fp.write(infile)
|
|
7482
7575
|
fp.seek(0, 0)
|
|
7483
7576
|
fp = UncompressFileAlt(fp, formatspecs)
|
|
@@ -7777,7 +7870,7 @@ def CatFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=Fals
|
|
|
7777
7870
|
outfjsoncontent = {}
|
|
7778
7871
|
elif(outfjsontype=="list"):
|
|
7779
7872
|
outfprejsoncontent = fp.read(outfjsonsize).decode("UTF-8")
|
|
7780
|
-
flisttmp =
|
|
7873
|
+
flisttmp = MkTempFile()
|
|
7781
7874
|
flisttmp.write(outfprejsoncontent.encode())
|
|
7782
7875
|
flisttmp.seek(0)
|
|
7783
7876
|
outfjsoncontent = ReadFileHeaderData(flisttmp, outfjsonlen, formatspecs['format_delimiter'])
|
|
@@ -7830,7 +7923,7 @@ def CatFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=Fals
|
|
|
7830
7923
|
VerbosePrintOut("'" + outfjsonchecksum + "' != " + "'" + injsonfcs + "'")
|
|
7831
7924
|
return False
|
|
7832
7925
|
outfcontentstart = fp.tell()
|
|
7833
|
-
outfcontents =
|
|
7926
|
+
outfcontents = MkTempFile()
|
|
7834
7927
|
pyhascontents = False
|
|
7835
7928
|
if(outfsize > 0 and not listonly):
|
|
7836
7929
|
if(outfcompression == "none" or outfcompression == "" or outfcompression == "auto"):
|
|
@@ -7855,7 +7948,7 @@ def CatFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=Fals
|
|
|
7855
7948
|
cfcontents = UncompressFileAlt(
|
|
7856
7949
|
outfcontents, formatspecs)
|
|
7857
7950
|
cfcontents.seek(0, 0)
|
|
7858
|
-
outfcontents =
|
|
7951
|
+
outfcontents = MkTempFile()
|
|
7859
7952
|
shutil.copyfileobj(cfcontents, outfcontents)
|
|
7860
7953
|
cfcontents.close()
|
|
7861
7954
|
outfcontents.seek(0, 0)
|
|
@@ -7905,7 +7998,7 @@ def MultipleCatFileToArray(infile, fmttype="auto", seekstart=0, seekend=0, listo
|
|
|
7905
7998
|
infile = [infile]
|
|
7906
7999
|
outretval = {}
|
|
7907
8000
|
for curfname in infile:
|
|
7908
|
-
curretfile[curfname] =
|
|
8001
|
+
curretfile[curfname] = CatFileToArray(curfname, fmttype, seekstart, seekend, listonly, contentasfile, uncompress, skipchecksum, formatspecs, seektoend, returnfp)
|
|
7909
8002
|
return outretval
|
|
7910
8003
|
|
|
7911
8004
|
def MultipleCatFilesToArray(infile, fmttype="auto", seekstart=0, seekend=0, listonly=False, contentasfile=True, uncompress=True, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, returnfp=False):
|
|
@@ -7916,31 +8009,31 @@ def CatFileStringToArray(instr, seekstart=0, seekend=0, listonly=False, contenta
|
|
|
7916
8009
|
checkcompressfile = CheckCompressionSubType(infile, formatspecs, True)
|
|
7917
8010
|
if(IsNestedDict(formatspecs) and checkcompressfile in formatspecs):
|
|
7918
8011
|
formatspecs = formatspecs[checkcompressfile]
|
|
7919
|
-
fp =
|
|
7920
|
-
|
|
7921
|
-
return
|
|
8012
|
+
fp = MkTempFile(instr)
|
|
8013
|
+
listcatfiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8014
|
+
return listcatfiles
|
|
7922
8015
|
|
|
7923
8016
|
|
|
7924
8017
|
def TarFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentasfile=True, skipchecksum=False, formatspecs=__file_format_dict__, seektoend=False, returnfp=False):
|
|
7925
8018
|
checkcompressfile = CheckCompressionSubType(infile, formatspecs, True)
|
|
7926
8019
|
if(IsNestedDict(formatspecs) and checkcompressfile in formatspecs):
|
|
7927
8020
|
formatspecs = formatspecs[checkcompressfile]
|
|
7928
|
-
fp =
|
|
8021
|
+
fp = MkTempFile()
|
|
7929
8022
|
fp = PackCatFileFromTarFile(
|
|
7930
8023
|
infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
|
|
7931
|
-
|
|
7932
|
-
return
|
|
8024
|
+
listcatfiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8025
|
+
return listcatfiles
|
|
7933
8026
|
|
|
7934
8027
|
|
|
7935
8028
|
def ZipFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentasfile=True, skipchecksum=False, formatspecs=__file_format_dict__, seektoend=False, returnfp=False):
|
|
7936
8029
|
checkcompressfile = CheckCompressionSubType(infile, formatspecs, True)
|
|
7937
8030
|
if(IsNestedDict(formatspecs) and checkcompressfile in formatspecs):
|
|
7938
8031
|
formatspecs = formatspecs[checkcompressfile]
|
|
7939
|
-
fp =
|
|
8032
|
+
fp = MkTempFile()
|
|
7940
8033
|
fp = PackCatFileFromZipFile(
|
|
7941
8034
|
infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
|
|
7942
|
-
|
|
7943
|
-
return
|
|
8035
|
+
listcatfiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8036
|
+
return listcatfiles
|
|
7944
8037
|
|
|
7945
8038
|
|
|
7946
8039
|
if(not rarfile_support):
|
|
@@ -7952,11 +8045,11 @@ if(rarfile_support):
|
|
|
7952
8045
|
checkcompressfile = CheckCompressionSubType(infile, formatspecs, True)
|
|
7953
8046
|
if(IsNestedDict(formatspecs) and checkcompressfile in formatspecs):
|
|
7954
8047
|
formatspecs = formatspecs[checkcompressfile]
|
|
7955
|
-
fp =
|
|
8048
|
+
fp = MkTempFile()
|
|
7956
8049
|
fp = PackCatFileFromRarFile(
|
|
7957
8050
|
infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
|
|
7958
|
-
|
|
7959
|
-
return
|
|
8051
|
+
listcatfiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8052
|
+
return listcatfiles
|
|
7960
8053
|
|
|
7961
8054
|
if(not py7zr_support):
|
|
7962
8055
|
def SevenZipFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentasfile=True, skipchecksum=False, formatspecs=__file_format_dict__, seektoend=False, returnfp=False):
|
|
@@ -7967,11 +8060,11 @@ if(py7zr_support):
|
|
|
7967
8060
|
checkcompressfile = CheckCompressionSubType(infile, formatspecs, True)
|
|
7968
8061
|
if(IsNestedDict(formatspecs) and checkcompressfile in formatspecs):
|
|
7969
8062
|
formatspecs = formatspecs[checkcompressfile]
|
|
7970
|
-
fp =
|
|
8063
|
+
fp = MkTempFile()
|
|
7971
8064
|
fp = PackCatFileFromSevenZipFile(
|
|
7972
8065
|
infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
|
|
7973
|
-
|
|
7974
|
-
return
|
|
8066
|
+
listcatfiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8067
|
+
return listcatfiles
|
|
7975
8068
|
|
|
7976
8069
|
|
|
7977
8070
|
def InFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentasfile=True, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, returnfp=False):
|
|
@@ -7994,71 +8087,71 @@ def InFileToArray(infile, seekstart=0, seekend=0, listonly=False, contentasfile=
|
|
|
7994
8087
|
|
|
7995
8088
|
|
|
7996
8089
|
def ListDirToArray(infiles, dirlistfromtxt=False, fmttype=__file_format_default__, compression="auto", compresswholefile=True, compressionlevel=None, followlink=False, seekstart=0, seekend=0, listonly=False, skipchecksum=False, checksumtype=["crc32", "crc32", "crc32"], extradata=[], formatspecs=__file_format_dict__, verbose=False, seektoend=False, returnfp=False):
|
|
7997
|
-
outarray =
|
|
8090
|
+
outarray = MkTempFile()
|
|
7998
8091
|
packform = PackCatFile(infiles, outarray, dirlistfromtxt, fmttype, compression, compresswholefile,
|
|
7999
8092
|
compressionlevel, followlink, checksumtype, extradata, formatspecs, verbose, True)
|
|
8000
|
-
|
|
8001
|
-
return
|
|
8093
|
+
listcatfiles = CatFileToArray(outarray, "auto", seekstart, seekend, listonly, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8094
|
+
return listcatfiles
|
|
8002
8095
|
|
|
8003
8096
|
|
|
8004
8097
|
def CatFileArrayToArrayIndex(inarray, returnfp=False):
|
|
8005
8098
|
if(isinstance(inarray, dict)):
|
|
8006
|
-
|
|
8099
|
+
listcatfiles = inarray
|
|
8007
8100
|
else:
|
|
8008
8101
|
return False
|
|
8009
|
-
if(not
|
|
8102
|
+
if(not listcatfiles):
|
|
8010
8103
|
return False
|
|
8011
|
-
outarray = {'list':
|
|
8104
|
+
outarray = {'list': listcatfiles, 'filetoid': {}, 'idtofile': {}, 'filetypes': {'directories': {'filetoid': {}, 'idtofile': {}}, 'files': {'filetoid': {}, 'idtofile': {}}, 'links': {'filetoid': {}, 'idtofile': {}}, 'symlinks': {'filetoid': {
|
|
8012
8105
|
}, 'idtofile': {}}, 'hardlinks': {'filetoid': {}, 'idtofile': {}}, 'character': {'filetoid': {}, 'idtofile': {}}, 'block': {'filetoid': {}, 'idtofile': {}}, 'fifo': {'filetoid': {}, 'idtofile': {}}, 'devices': {'filetoid': {}, 'idtofile': {}}}}
|
|
8013
8106
|
if(returnfp):
|
|
8014
|
-
outarray.update({'fp':
|
|
8015
|
-
lenlist = len(
|
|
8107
|
+
outarray.update({'fp': listcatfiles['fp']})
|
|
8108
|
+
lenlist = len(listcatfiles['ffilelist'])
|
|
8016
8109
|
lcfi = 0
|
|
8017
|
-
lcfx = int(
|
|
8018
|
-
if(lenlist >
|
|
8110
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8111
|
+
if(lenlist > listcatfiles['fnumfiles'] or lenlist < listcatfiles['fnumfiles']):
|
|
8019
8112
|
lcfx = int(lenlist)
|
|
8020
8113
|
else:
|
|
8021
|
-
lcfx = int(
|
|
8114
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8022
8115
|
while(lcfi < lcfx):
|
|
8023
|
-
filetoidarray = {
|
|
8024
|
-
['fname']:
|
|
8025
|
-
idtofilearray = {
|
|
8026
|
-
['fid']:
|
|
8116
|
+
filetoidarray = {listcatfiles['ffilelist'][lcfi]
|
|
8117
|
+
['fname']: listcatfiles['ffilelist'][lcfi]['fid']}
|
|
8118
|
+
idtofilearray = {listcatfiles['ffilelist'][lcfi]
|
|
8119
|
+
['fid']: listcatfiles['ffilelist'][lcfi]['fname']}
|
|
8027
8120
|
outarray['filetoid'].update(filetoidarray)
|
|
8028
8121
|
outarray['idtofile'].update(idtofilearray)
|
|
8029
|
-
if(
|
|
8122
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 0 or listcatfiles['ffilelist'][lcfi]['ftype'] == 7):
|
|
8030
8123
|
outarray['filetypes']['files']['filetoid'].update(filetoidarray)
|
|
8031
8124
|
outarray['filetypes']['files']['idtofile'].update(idtofilearray)
|
|
8032
|
-
if(
|
|
8125
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 1):
|
|
8033
8126
|
outarray['filetypes']['hardlinks']['filetoid'].update(
|
|
8034
8127
|
filetoidarray)
|
|
8035
8128
|
outarray['filetypes']['hardlinks']['idtofile'].update(
|
|
8036
8129
|
idtofilearray)
|
|
8037
8130
|
outarray['filetypes']['links']['filetoid'].update(filetoidarray)
|
|
8038
8131
|
outarray['filetypes']['links']['idtofile'].update(idtofilearray)
|
|
8039
|
-
if(
|
|
8132
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 2):
|
|
8040
8133
|
outarray['filetypes']['symlinks']['filetoid'].update(filetoidarray)
|
|
8041
8134
|
outarray['filetypes']['symlinks']['idtofile'].update(idtofilearray)
|
|
8042
8135
|
outarray['filetypes']['links']['filetoid'].update(filetoidarray)
|
|
8043
8136
|
outarray['filetypes']['links']['idtofile'].update(idtofilearray)
|
|
8044
|
-
if(
|
|
8137
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 3):
|
|
8045
8138
|
outarray['filetypes']['character']['filetoid'].update(
|
|
8046
8139
|
filetoidarray)
|
|
8047
8140
|
outarray['filetypes']['character']['idtofile'].update(
|
|
8048
8141
|
idtofilearray)
|
|
8049
8142
|
outarray['filetypes']['devices']['filetoid'].update(filetoidarray)
|
|
8050
8143
|
outarray['filetypes']['devices']['idtofile'].update(idtofilearray)
|
|
8051
|
-
if(
|
|
8144
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 4):
|
|
8052
8145
|
outarray['filetypes']['block']['filetoid'].update(filetoidarray)
|
|
8053
8146
|
outarray['filetypes']['block']['idtofile'].update(idtofilearray)
|
|
8054
8147
|
outarray['filetypes']['devices']['filetoid'].update(filetoidarray)
|
|
8055
8148
|
outarray['filetypes']['devices']['idtofile'].update(idtofilearray)
|
|
8056
|
-
if(
|
|
8149
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 5):
|
|
8057
8150
|
outarray['filetypes']['directories']['filetoid'].update(
|
|
8058
8151
|
filetoidarray)
|
|
8059
8152
|
outarray['filetypes']['directories']['idtofile'].update(
|
|
8060
8153
|
idtofilearray)
|
|
8061
|
-
if(
|
|
8154
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 6):
|
|
8062
8155
|
outarray['filetypes']['symlinks']['filetoid'].update(filetoidarray)
|
|
8063
8156
|
outarray['filetypes']['symlinks']['idtofile'].update(idtofilearray)
|
|
8064
8157
|
outarray['filetypes']['devices']['filetoid'].update(filetoidarray)
|
|
@@ -8069,11 +8162,11 @@ def CatFileArrayToArrayIndex(inarray, returnfp=False):
|
|
|
8069
8162
|
|
|
8070
8163
|
def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, followlink=False, seekstart=0, seekend=0, checksumtype=["crc32", "crc32", "crc32", "crc32"], skipchecksum=False, extradata=[], jsondata={}, formatspecs=__file_format_dict__, seektoend=False, verbose=False, returnfp=False):
|
|
8071
8164
|
if(isinstance(infile, dict)):
|
|
8072
|
-
|
|
8165
|
+
listcatfiles = infile
|
|
8073
8166
|
else:
|
|
8074
8167
|
if(infile != "-" and not isinstance(infile, bytes) and not hasattr(infile, "read") and not hasattr(infile, "write")):
|
|
8075
8168
|
infile = RemoveWindowsPath(infile)
|
|
8076
|
-
|
|
8169
|
+
listcatfiles = CatFileToArray(infile, "auto", seekstart, seekend, False, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8077
8170
|
if(IsNestedDict(formatspecs) and fmttype in formatspecs):
|
|
8078
8171
|
formatspecs = formatspecs[fmttype]
|
|
8079
8172
|
elif(IsNestedDict(formatspecs) and fmttype not in formatspecs):
|
|
@@ -8099,15 +8192,15 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8099
8192
|
os.unlink(outfile)
|
|
8100
8193
|
except OSError:
|
|
8101
8194
|
pass
|
|
8102
|
-
if(not
|
|
8195
|
+
if(not listcatfiles):
|
|
8103
8196
|
return False
|
|
8104
8197
|
if(outfile == "-" or outfile is None):
|
|
8105
8198
|
verbose = False
|
|
8106
|
-
fp =
|
|
8199
|
+
fp = MkTempFile()
|
|
8107
8200
|
elif(hasattr(outfile, "read") or hasattr(outfile, "write")):
|
|
8108
8201
|
fp = outfile
|
|
8109
8202
|
elif(re.findall("^(ftp|ftps|sftp):\\/\\/", outfile)):
|
|
8110
|
-
fp =
|
|
8203
|
+
fp = MkTempFile()
|
|
8111
8204
|
else:
|
|
8112
8205
|
fbasename = os.path.splitext(outfile)[0]
|
|
8113
8206
|
fextname = os.path.splitext(outfile)[1]
|
|
@@ -8119,19 +8212,19 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8119
8212
|
return False
|
|
8120
8213
|
formver = formatspecs['format_ver']
|
|
8121
8214
|
fileheaderver = str(int(formver.replace(".", "")))
|
|
8122
|
-
lenlist = len(
|
|
8123
|
-
fnumfiles = int(
|
|
8215
|
+
lenlist = len(listcatfiles['ffilelist'])
|
|
8216
|
+
fnumfiles = int(listcatfiles['fnumfiles'])
|
|
8124
8217
|
if(lenlist > fnumfiles or lenlist < fnumfiles):
|
|
8125
8218
|
fnumfiles = lenlist
|
|
8126
|
-
AppendFileHeader(fp, fnumfiles,
|
|
8127
|
-
lenlist = len(
|
|
8128
|
-
fnumfiles = int(
|
|
8219
|
+
AppendFileHeader(fp, fnumfiles, listcatfiles['fencoding'], [], checksumtype[0], formatspecs)
|
|
8220
|
+
lenlist = len(listcatfiles['ffilelist'])
|
|
8221
|
+
fnumfiles = int(listcatfiles['fnumfiles'])
|
|
8129
8222
|
lcfi = 0
|
|
8130
|
-
lcfx = int(
|
|
8131
|
-
if(lenlist >
|
|
8223
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8224
|
+
if(lenlist > listcatfiles['fnumfiles'] or lenlist < listcatfiles['fnumfiles']):
|
|
8132
8225
|
lcfx = int(lenlist)
|
|
8133
8226
|
else:
|
|
8134
|
-
lcfx = int(
|
|
8227
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8135
8228
|
curinode = 0
|
|
8136
8229
|
curfid = 0
|
|
8137
8230
|
inodelist = []
|
|
@@ -8139,63 +8232,63 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8139
8232
|
filetoinode = {}
|
|
8140
8233
|
reallcfi = 0
|
|
8141
8234
|
while(lcfi < lcfx):
|
|
8142
|
-
fencoding =
|
|
8143
|
-
fcencoding =
|
|
8144
|
-
if(re.findall("^[.|/]",
|
|
8145
|
-
fname =
|
|
8235
|
+
fencoding = listcatfiles['ffilelist'][reallcfi]['fencoding']
|
|
8236
|
+
fcencoding = listcatfiles['ffilelist'][reallcfi]['fencoding']
|
|
8237
|
+
if(re.findall("^[.|/]", listcatfiles['ffilelist'][reallcfi]['fname'])):
|
|
8238
|
+
fname = listcatfiles['ffilelist'][reallcfi]['fname']
|
|
8146
8239
|
else:
|
|
8147
|
-
fname = "./"+
|
|
8240
|
+
fname = "./"+listcatfiles['ffilelist'][reallcfi]['fname']
|
|
8148
8241
|
if(verbose):
|
|
8149
8242
|
VerbosePrintOut(fname)
|
|
8150
8243
|
fheadersize = format(
|
|
8151
|
-
int(
|
|
8244
|
+
int(listcatfiles['ffilelist'][reallcfi]['fheadersize']), 'x').lower()
|
|
8152
8245
|
fsize = format(
|
|
8153
|
-
int(
|
|
8154
|
-
flinkname =
|
|
8246
|
+
int(listcatfiles['ffilelist'][reallcfi]['fsize']), 'x').lower()
|
|
8247
|
+
flinkname = listcatfiles['ffilelist'][reallcfi]['flinkname']
|
|
8155
8248
|
fatime = format(
|
|
8156
|
-
int(
|
|
8249
|
+
int(listcatfiles['ffilelist'][reallcfi]['fatime']), 'x').lower()
|
|
8157
8250
|
fmtime = format(
|
|
8158
|
-
int(
|
|
8251
|
+
int(listcatfiles['ffilelist'][reallcfi]['fmtime']), 'x').lower()
|
|
8159
8252
|
fctime = format(
|
|
8160
|
-
int(
|
|
8253
|
+
int(listcatfiles['ffilelist'][reallcfi]['fctime']), 'x').lower()
|
|
8161
8254
|
fbtime = format(
|
|
8162
|
-
int(
|
|
8255
|
+
int(listcatfiles['ffilelist'][reallcfi]['fbtime']), 'x').lower()
|
|
8163
8256
|
fmode = format(
|
|
8164
|
-
int(
|
|
8257
|
+
int(listcatfiles['ffilelist'][reallcfi]['fmode']), 'x').lower()
|
|
8165
8258
|
fchmode = format(
|
|
8166
|
-
int(
|
|
8259
|
+
int(listcatfiles['ffilelist'][reallcfi]['fchmode']), 'x').lower()
|
|
8167
8260
|
fuid = format(
|
|
8168
|
-
int(
|
|
8169
|
-
funame =
|
|
8261
|
+
int(listcatfiles['ffilelist'][reallcfi]['fuid']), 'x').lower()
|
|
8262
|
+
funame = listcatfiles['ffilelist'][reallcfi]['funame']
|
|
8170
8263
|
fgid = format(
|
|
8171
|
-
int(
|
|
8172
|
-
fgname =
|
|
8264
|
+
int(listcatfiles['ffilelist'][reallcfi]['fgid']), 'x').lower()
|
|
8265
|
+
fgname = listcatfiles['ffilelist'][reallcfi]['fgname']
|
|
8173
8266
|
finode = format(
|
|
8174
|
-
int(
|
|
8267
|
+
int(listcatfiles['ffilelist'][reallcfi]['finode']), 'x').lower()
|
|
8175
8268
|
flinkcount = format(
|
|
8176
|
-
int(
|
|
8269
|
+
int(listcatfiles['ffilelist'][reallcfi]['flinkcount']), 'x').lower()
|
|
8177
8270
|
fwinattributes = format(
|
|
8178
|
-
int(
|
|
8179
|
-
fcompression =
|
|
8271
|
+
int(listcatfiles['ffilelist'][reallcfi]['fwinattributes']), 'x').lower()
|
|
8272
|
+
fcompression = listcatfiles['ffilelist'][reallcfi]['fcompression']
|
|
8180
8273
|
fcsize = format(
|
|
8181
|
-
int(
|
|
8274
|
+
int(listcatfiles['ffilelist'][reallcfi]['fcsize']), 'x').lower()
|
|
8182
8275
|
fdev = format(
|
|
8183
|
-
int(
|
|
8276
|
+
int(listcatfiles['ffilelist'][reallcfi]['fdev']), 'x').lower()
|
|
8184
8277
|
fdev_minor = format(
|
|
8185
|
-
int(
|
|
8278
|
+
int(listcatfiles['ffilelist'][reallcfi]['fminor']), 'x').lower()
|
|
8186
8279
|
fdev_major = format(
|
|
8187
|
-
int(
|
|
8188
|
-
fseeknextfile =
|
|
8189
|
-
if(len(
|
|
8190
|
-
|
|
8191
|
-
|
|
8280
|
+
int(listcatfiles['ffilelist'][reallcfi]['fmajor']), 'x').lower()
|
|
8281
|
+
fseeknextfile = listcatfiles['ffilelist'][reallcfi]['fseeknextfile']
|
|
8282
|
+
if(len(listcatfiles['ffilelist'][reallcfi]['fextralist']) > listcatfiles['ffilelist'][reallcfi]['fextrafields'] and len(listcatfiles['ffilelist'][reallcfi]['fextralist']) > 0):
|
|
8283
|
+
listcatfiles['ffilelist'][reallcfi]['fextrafields'] = len(
|
|
8284
|
+
listcatfiles['ffilelist'][reallcfi]['fextralist'])
|
|
8192
8285
|
if(not followlink and len(extradata) <= 0):
|
|
8193
|
-
extradata =
|
|
8286
|
+
extradata = listcatfiles['ffilelist'][reallcfi]['fextralist']
|
|
8194
8287
|
if(not followlink and len(jsondata) <= 0):
|
|
8195
|
-
jsondata =
|
|
8196
|
-
fcontents =
|
|
8197
|
-
if(not
|
|
8198
|
-
fcontents =
|
|
8288
|
+
jsondata = listcatfiles['ffilelist'][reallcfi]['fjsondata']
|
|
8289
|
+
fcontents = listcatfiles['ffilelist'][reallcfi]['fcontents']
|
|
8290
|
+
if(not listcatfiles['ffilelist'][reallcfi]['fcontentasfile']):
|
|
8291
|
+
fcontents = MkTempFile(fcontents)
|
|
8199
8292
|
typechecktest = CheckCompressionType(fcontents, closefp=False)
|
|
8200
8293
|
fcontents.seek(0, 0)
|
|
8201
8294
|
fcencoding = GetFileEncoding(fcontents, False)
|
|
@@ -8211,7 +8304,7 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8211
8304
|
ilmin = 0
|
|
8212
8305
|
ilcsize = []
|
|
8213
8306
|
while(ilmin < ilsize):
|
|
8214
|
-
cfcontents =
|
|
8307
|
+
cfcontents = MkTempFile()
|
|
8215
8308
|
fcontents.seek(0, 0)
|
|
8216
8309
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
8217
8310
|
fcontents.seek(0, 0)
|
|
@@ -8228,7 +8321,7 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8228
8321
|
ilcmin = ilcsize.index(min(ilcsize))
|
|
8229
8322
|
curcompression = compressionuselist[ilcmin]
|
|
8230
8323
|
fcontents.seek(0, 0)
|
|
8231
|
-
cfcontents =
|
|
8324
|
+
cfcontents = MkTempFile()
|
|
8232
8325
|
shutil.copyfileobj(fcontents, cfcontents)
|
|
8233
8326
|
cfcontents.seek(0, 0)
|
|
8234
8327
|
cfcontents = CompressOpenFileAlt(
|
|
@@ -8241,10 +8334,10 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8241
8334
|
fcontents.close()
|
|
8242
8335
|
fcontents = cfcontents
|
|
8243
8336
|
if followlink:
|
|
8244
|
-
if(
|
|
8245
|
-
getflinkpath =
|
|
8246
|
-
flinkid =
|
|
8247
|
-
flinkinfo =
|
|
8337
|
+
if(listcatfiles['ffilelist'][reallcfi]['ftype'] == 1 or listcatfiles['ffilelist'][reallcfi]['ftype'] == 2):
|
|
8338
|
+
getflinkpath = listcatfiles['ffilelist'][reallcfi]['flinkname']
|
|
8339
|
+
flinkid = prelistcatfiles['filetoid'][getflinkpath]
|
|
8340
|
+
flinkinfo = listcatfiles['ffilelist'][flinkid]
|
|
8248
8341
|
fheadersize = format(
|
|
8249
8342
|
int(flinkinfo['fheadersize']), 'x').lower()
|
|
8250
8343
|
fsize = format(int(flinkinfo['fsize']), 'x').lower()
|
|
@@ -8277,14 +8370,14 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8277
8370
|
extradata = flinkinfo['fjsondata']
|
|
8278
8371
|
fcontents = flinkinfo['fcontents']
|
|
8279
8372
|
if(not flinkinfo['fcontentasfile']):
|
|
8280
|
-
fcontents =
|
|
8373
|
+
fcontents = MkTempFile(fcontents)
|
|
8281
8374
|
ftypehex = format(flinkinfo['ftype'], 'x').lower()
|
|
8282
8375
|
else:
|
|
8283
8376
|
ftypehex = format(
|
|
8284
|
-
|
|
8377
|
+
listcatfiles['ffilelist'][reallcfi]['ftype'], 'x').lower()
|
|
8285
8378
|
fcurfid = format(curfid, 'x').lower()
|
|
8286
8379
|
if(not followlink and finode != 0):
|
|
8287
|
-
if(
|
|
8380
|
+
if(listcatfiles['ffilelist'][reallcfi]['ftype'] != 1):
|
|
8288
8381
|
fcurinode = format(int(curinode), 'x').lower()
|
|
8289
8382
|
inodetofile.update({curinode: fname})
|
|
8290
8383
|
filetoinode.update({fname: curinode})
|
|
@@ -8348,19 +8441,19 @@ def RePackCatFile(infile, outfile, fmttype="auto", compression="auto", compressw
|
|
|
8348
8441
|
|
|
8349
8442
|
|
|
8350
8443
|
def RePackCatFileFromString(instr, outfile, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype=["crc32", "crc32", "crc32"], skipchecksum=False, extradata=[], formatspecs=__file_format_dict__, verbose=False, returnfp=False):
|
|
8351
|
-
fp =
|
|
8352
|
-
|
|
8444
|
+
fp = MkTempFile(instr)
|
|
8445
|
+
listcatfiles = RePackCatFile(fp, outfile, fmttype, compression, compresswholefile, compressionlevel, compressionuselist,
|
|
8353
8446
|
checksumtype, skipchecksum, extradata, formatspecs, verbose, returnfp)
|
|
8354
|
-
return
|
|
8447
|
+
return listcatfiles
|
|
8355
8448
|
|
|
8356
8449
|
|
|
8357
8450
|
def PackCatFileFromListDir(infiles, outfile, dirlistfromtxt=False, fmttype="auto", compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, followlink=False, skipchecksum=False, checksumtype=["crc32", "crc32", "crc32"], extradata=[], formatspecs=__file_format_dict__, verbose=False, returnfp=False):
|
|
8358
|
-
outarray =
|
|
8451
|
+
outarray = MkTempFile()
|
|
8359
8452
|
packform = PackCatFile(infiles, outarray, dirlistfromtxt, fmttype, compression, compresswholefile,
|
|
8360
8453
|
compressionlevel, compressionuselist, followlink, checksumtype, extradata, formatspecs, verbose, True)
|
|
8361
|
-
|
|
8454
|
+
listcatfiles = RePackCatFile(outarray, outfile, fmttype, compression, compresswholefile,
|
|
8362
8455
|
compressionlevel, checksumtype, skipchecksum, extradata, formatspecs, verbose, returnfp)
|
|
8363
|
-
return
|
|
8456
|
+
return listcatfiles
|
|
8364
8457
|
|
|
8365
8458
|
|
|
8366
8459
|
def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, preservepermissions=True, preservetime=True, seektoend=False, verbose=False, returnfp=False):
|
|
@@ -8369,28 +8462,28 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8369
8462
|
if(verbose):
|
|
8370
8463
|
logging.basicConfig(format="%(message)s", stream=sys.stdout, level=logging.DEBUG)
|
|
8371
8464
|
if(isinstance(infile, dict)):
|
|
8372
|
-
|
|
8465
|
+
listcatfiles = infile
|
|
8373
8466
|
else:
|
|
8374
8467
|
if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not (sys.version_info[0] >= 3 and isinstance(infile, bytes))):
|
|
8375
8468
|
infile = RemoveWindowsPath(infile)
|
|
8376
|
-
|
|
8377
|
-
if(not
|
|
8469
|
+
listcatfiles = CatFileToArray(infile, "auto", seekstart, seekend, False, True, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8470
|
+
if(not listcatfiles):
|
|
8378
8471
|
return False
|
|
8379
|
-
lenlist = len(
|
|
8380
|
-
fnumfiles = int(
|
|
8472
|
+
lenlist = len(listcatfiles['ffilelist'])
|
|
8473
|
+
fnumfiles = int(listcatfiles['fnumfiles'])
|
|
8381
8474
|
lcfi = 0
|
|
8382
|
-
lcfx = int(
|
|
8383
|
-
if(lenlist >
|
|
8475
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8476
|
+
if(lenlist > listcatfiles['fnumfiles'] or lenlist < listcatfiles['fnumfiles']):
|
|
8384
8477
|
lcfx = int(lenlist)
|
|
8385
8478
|
else:
|
|
8386
|
-
lcfx = int(
|
|
8479
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8387
8480
|
while(lcfi < lcfx):
|
|
8388
8481
|
funame = ""
|
|
8389
8482
|
try:
|
|
8390
8483
|
import pwd
|
|
8391
8484
|
try:
|
|
8392
8485
|
userinfo = pwd.getpwuid(
|
|
8393
|
-
|
|
8486
|
+
listcatfiles['ffilelist'][lcfi]['fuid'])
|
|
8394
8487
|
funame = userinfo.pw_name
|
|
8395
8488
|
except KeyError:
|
|
8396
8489
|
funame = ""
|
|
@@ -8401,7 +8494,7 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8401
8494
|
import grp
|
|
8402
8495
|
try:
|
|
8403
8496
|
groupinfo = grp.getgrgid(
|
|
8404
|
-
|
|
8497
|
+
listcatfiles['ffilelist'][lcfi]['fgid'])
|
|
8405
8498
|
fgname = groupinfo.gr_name
|
|
8406
8499
|
except KeyError:
|
|
8407
8500
|
fgname = ""
|
|
@@ -8409,15 +8502,15 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8409
8502
|
fgname = ""
|
|
8410
8503
|
if(verbose):
|
|
8411
8504
|
VerbosePrintOut(PrependPath(
|
|
8412
|
-
outdir,
|
|
8413
|
-
if(
|
|
8414
|
-
with open(PrependPath(outdir,
|
|
8415
|
-
if(not
|
|
8416
|
-
|
|
8417
|
-
|
|
8418
|
-
|
|
8505
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8506
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 0 or listcatfiles['ffilelist'][lcfi]['ftype'] == 7):
|
|
8507
|
+
with open(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
|
|
8508
|
+
if(not listcatfiles['ffilelist'][lcfi]['fcontentasfile']):
|
|
8509
|
+
listcatfiles['ffilelist'][lcfi]['fcontents'] = MkTempFile(
|
|
8510
|
+
listcatfiles['ffilelist'][lcfi]['fcontents'])
|
|
8511
|
+
listcatfiles['ffilelist'][lcfi]['fcontents'].seek(0, 0)
|
|
8419
8512
|
shutil.copyfileobj(
|
|
8420
|
-
|
|
8513
|
+
listcatfiles['ffilelist'][lcfi]['fcontents'], fpc)
|
|
8421
8514
|
try:
|
|
8422
8515
|
fpc.flush()
|
|
8423
8516
|
if(hasattr(os, "sync")):
|
|
@@ -8428,20 +8521,20 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8428
8521
|
pass
|
|
8429
8522
|
except OSError:
|
|
8430
8523
|
pass
|
|
8431
|
-
if(hasattr(os, "chown") and funame ==
|
|
8432
|
-
os.chown(PrependPath(outdir,
|
|
8433
|
-
|
|
8524
|
+
if(hasattr(os, "chown") and funame == listcatfiles['ffilelist'][lcfi]['funame'] and fgname == listcatfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
|
|
8525
|
+
os.chown(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']),
|
|
8526
|
+
listcatfiles['ffilelist'][lcfi]['fuid'], listcatfiles['ffilelist'][lcfi]['fgid'])
|
|
8434
8527
|
if(preservepermissions):
|
|
8435
8528
|
os.chmod(PrependPath(
|
|
8436
|
-
outdir,
|
|
8529
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
|
|
8437
8530
|
if(preservetime):
|
|
8438
|
-
os.utime(PrependPath(outdir,
|
|
8439
|
-
|
|
8440
|
-
if(
|
|
8531
|
+
os.utime(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), (
|
|
8532
|
+
listcatfiles['ffilelist'][lcfi]['fatime'], listcatfiles['ffilelist'][lcfi]['fmtime']))
|
|
8533
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 1):
|
|
8441
8534
|
if(followlink):
|
|
8442
|
-
getflinkpath =
|
|
8443
|
-
flinkid =
|
|
8444
|
-
flinkinfo =
|
|
8535
|
+
getflinkpath = listcatfiles['ffilelist'][lcfi]['flinkname']
|
|
8536
|
+
flinkid = prelistcatfiles['filetoid'][getflinkpath]
|
|
8537
|
+
flinkinfo = listcatfiles['ffilelist'][flinkid]
|
|
8445
8538
|
funame = ""
|
|
8446
8539
|
try:
|
|
8447
8540
|
import pwd
|
|
@@ -8463,9 +8556,9 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8463
8556
|
except ImportError:
|
|
8464
8557
|
fgname = ""
|
|
8465
8558
|
if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
|
|
8466
|
-
with open(PrependPath(outdir,
|
|
8559
|
+
with open(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
|
|
8467
8560
|
if(not flinkinfo['fcontentasfile']):
|
|
8468
|
-
flinkinfo['fcontents'] =
|
|
8561
|
+
flinkinfo['fcontents'] = MkTempFile(
|
|
8469
8562
|
flinkinfo['fcontents'])
|
|
8470
8563
|
flinkinfo['fcontents'].seek(0, 0)
|
|
8471
8564
|
shutil.copyfileobj(flinkinfo['fcontents'], fpc)
|
|
@@ -8481,46 +8574,46 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8481
8574
|
pass
|
|
8482
8575
|
if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
|
|
8483
8576
|
os.chown(PrependPath(
|
|
8484
|
-
outdir,
|
|
8577
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
|
|
8485
8578
|
if(preservepermissions):
|
|
8486
8579
|
os.chmod(PrependPath(
|
|
8487
|
-
outdir,
|
|
8580
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8488
8581
|
if(preservetime):
|
|
8489
|
-
os.utime(PrependPath(outdir,
|
|
8582
|
+
os.utime(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), (
|
|
8490
8583
|
flinkinfo['fatime'], flinkinfo['fmtime']))
|
|
8491
8584
|
if(flinkinfo['ftype'] == 1):
|
|
8492
8585
|
os.link(flinkinfo['flinkname'], PrependPath(
|
|
8493
|
-
outdir,
|
|
8586
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8494
8587
|
if(flinkinfo['ftype'] == 2):
|
|
8495
8588
|
os.symlink(flinkinfo['flinkname'], PrependPath(
|
|
8496
|
-
outdir,
|
|
8589
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8497
8590
|
if(flinkinfo['ftype'] == 5):
|
|
8498
8591
|
if(preservepermissions):
|
|
8499
8592
|
os.mkdir(PrependPath(
|
|
8500
|
-
outdir,
|
|
8593
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8501
8594
|
else:
|
|
8502
8595
|
os.mkdir(PrependPath(
|
|
8503
|
-
outdir,
|
|
8596
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8504
8597
|
if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
|
|
8505
8598
|
os.chown(PrependPath(
|
|
8506
|
-
outdir,
|
|
8599
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
|
|
8507
8600
|
if(preservepermissions):
|
|
8508
8601
|
os.chmod(PrependPath(
|
|
8509
|
-
outdir,
|
|
8602
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8510
8603
|
if(preservetime):
|
|
8511
|
-
os.utime(PrependPath(outdir,
|
|
8604
|
+
os.utime(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), (
|
|
8512
8605
|
flinkinfo['fatime'], flinkinfo['fmtime']))
|
|
8513
8606
|
if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
|
|
8514
8607
|
os.mkfifo(PrependPath(
|
|
8515
|
-
outdir,
|
|
8608
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8516
8609
|
else:
|
|
8517
|
-
os.link(
|
|
8518
|
-
outdir,
|
|
8519
|
-
if(
|
|
8610
|
+
os.link(listcatfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
|
|
8611
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8612
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 2):
|
|
8520
8613
|
if(followlink):
|
|
8521
|
-
getflinkpath =
|
|
8522
|
-
flinkid =
|
|
8523
|
-
flinkinfo =
|
|
8614
|
+
getflinkpath = listcatfiles['ffilelist'][lcfi]['flinkname']
|
|
8615
|
+
flinkid = prelistcatfiles['filetoid'][getflinkpath]
|
|
8616
|
+
flinkinfo = listcatfiles['ffilelist'][flinkid]
|
|
8524
8617
|
funame = ""
|
|
8525
8618
|
try:
|
|
8526
8619
|
import pwd
|
|
@@ -8542,9 +8635,9 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8542
8635
|
except ImportError:
|
|
8543
8636
|
fgname = ""
|
|
8544
8637
|
if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
|
|
8545
|
-
with open(PrependPath(outdir,
|
|
8638
|
+
with open(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
|
|
8546
8639
|
if(not flinkinfo['fcontentasfile']):
|
|
8547
|
-
flinkinfo['fcontents'] =
|
|
8640
|
+
flinkinfo['fcontents'] = MkTempFile(
|
|
8548
8641
|
flinkinfo['fcontents'])
|
|
8549
8642
|
flinkinfo['fcontents'].seek(0, 0)
|
|
8550
8643
|
shutil.copyfileobj(flinkinfo['fcontents'], fpc)
|
|
@@ -8560,71 +8653,71 @@ def UnPackCatFile(infile, outdir=None, followlink=False, seekstart=0, seekend=0,
|
|
|
8560
8653
|
pass
|
|
8561
8654
|
if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
|
|
8562
8655
|
os.chown(PrependPath(
|
|
8563
|
-
outdir,
|
|
8656
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
|
|
8564
8657
|
if(preservepermissions):
|
|
8565
8658
|
os.chmod(PrependPath(
|
|
8566
|
-
outdir,
|
|
8659
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8567
8660
|
if(preservetime):
|
|
8568
|
-
os.utime(PrependPath(outdir,
|
|
8661
|
+
os.utime(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), (
|
|
8569
8662
|
flinkinfo['fatime'], flinkinfo['fmtime']))
|
|
8570
8663
|
if(flinkinfo['ftype'] == 1):
|
|
8571
8664
|
os.link(flinkinfo['flinkname'], PrependPath(
|
|
8572
|
-
outdir,
|
|
8665
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8573
8666
|
if(flinkinfo['ftype'] == 2):
|
|
8574
8667
|
os.symlink(flinkinfo['flinkname'], PrependPath(
|
|
8575
|
-
outdir,
|
|
8668
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8576
8669
|
if(flinkinfo['ftype'] == 5):
|
|
8577
8670
|
if(preservepermissions):
|
|
8578
8671
|
os.mkdir(PrependPath(
|
|
8579
|
-
outdir,
|
|
8672
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8580
8673
|
else:
|
|
8581
8674
|
os.mkdir(PrependPath(
|
|
8582
|
-
outdir,
|
|
8675
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8583
8676
|
if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
|
|
8584
8677
|
os.chown(PrependPath(
|
|
8585
|
-
outdir,
|
|
8678
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
|
|
8586
8679
|
if(preservepermissions):
|
|
8587
8680
|
os.chmod(PrependPath(
|
|
8588
|
-
outdir,
|
|
8681
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8589
8682
|
if(preservetime):
|
|
8590
|
-
os.utime(PrependPath(outdir,
|
|
8683
|
+
os.utime(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), (
|
|
8591
8684
|
flinkinfo['fatime'], flinkinfo['fmtime']))
|
|
8592
8685
|
if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
|
|
8593
8686
|
os.mkfifo(PrependPath(
|
|
8594
|
-
outdir,
|
|
8687
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
|
|
8595
8688
|
else:
|
|
8596
|
-
os.symlink(
|
|
8597
|
-
outdir,
|
|
8598
|
-
if(
|
|
8689
|
+
os.symlink(listcatfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
|
|
8690
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8691
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 5):
|
|
8599
8692
|
if(preservepermissions):
|
|
8600
8693
|
os.mkdir(PrependPath(
|
|
8601
|
-
outdir,
|
|
8694
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
|
|
8602
8695
|
else:
|
|
8603
8696
|
os.mkdir(PrependPath(
|
|
8604
|
-
outdir,
|
|
8605
|
-
if(hasattr(os, "chown") and funame ==
|
|
8606
|
-
os.chown(PrependPath(outdir,
|
|
8607
|
-
|
|
8697
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']))
|
|
8698
|
+
if(hasattr(os, "chown") and funame == listcatfiles['ffilelist'][lcfi]['funame'] and fgname == listcatfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
|
|
8699
|
+
os.chown(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']),
|
|
8700
|
+
listcatfiles['ffilelist'][lcfi]['fuid'], listcatfiles['ffilelist'][lcfi]['fgid'])
|
|
8608
8701
|
if(preservepermissions):
|
|
8609
8702
|
os.chmod(PrependPath(
|
|
8610
|
-
outdir,
|
|
8703
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
|
|
8611
8704
|
if(preservetime):
|
|
8612
|
-
os.utime(PrependPath(outdir,
|
|
8613
|
-
|
|
8614
|
-
if(
|
|
8705
|
+
os.utime(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), (
|
|
8706
|
+
listcatfiles['ffilelist'][lcfi]['fatime'], listcatfiles['ffilelist'][lcfi]['fmtime']))
|
|
8707
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 6 and hasattr(os, "mkfifo")):
|
|
8615
8708
|
os.mkfifo(PrependPath(
|
|
8616
|
-
outdir,
|
|
8709
|
+
outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
|
|
8617
8710
|
lcfi = lcfi + 1
|
|
8618
8711
|
if(returnfp):
|
|
8619
|
-
return
|
|
8712
|
+
return listcatfiles['ffilelist']['fp']
|
|
8620
8713
|
else:
|
|
8621
8714
|
return True
|
|
8622
8715
|
|
|
8623
8716
|
|
|
8624
8717
|
def UnPackCatFileString(instr, outdir=None, followlink=False, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, verbose=False, returnfp=False):
|
|
8625
|
-
fp =
|
|
8626
|
-
|
|
8627
|
-
return
|
|
8718
|
+
fp = MkTempFile(instr)
|
|
8719
|
+
listcatfiles = UnPackCatFile(fp, outdir, followlink, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, returnfp)
|
|
8720
|
+
return listcatfiles
|
|
8628
8721
|
|
|
8629
8722
|
def ftype_to_str(ftype):
|
|
8630
8723
|
mapping = {
|
|
@@ -8645,67 +8738,67 @@ def CatFileListFiles(infile, fmttype="auto", seekstart=0, seekend=0, skipchecksu
|
|
|
8645
8738
|
if(verbose):
|
|
8646
8739
|
logging.basicConfig(format="%(message)s", stream=sys.stdout, level=logging.DEBUG)
|
|
8647
8740
|
if(isinstance(infile, dict)):
|
|
8648
|
-
|
|
8741
|
+
listcatfiles = infile
|
|
8649
8742
|
else:
|
|
8650
8743
|
if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not (sys.version_info[0] >= 3 and isinstance(infile, bytes))):
|
|
8651
8744
|
infile = RemoveWindowsPath(infile)
|
|
8652
|
-
|
|
8653
|
-
if(not
|
|
8745
|
+
listcatfiles = CatFileToArray(infile, fmttype, seekstart, seekend, True, False, False, skipchecksum, formatspecs, seektoend, returnfp)
|
|
8746
|
+
if(not listcatfiles):
|
|
8654
8747
|
return False
|
|
8655
|
-
lenlist = len(
|
|
8656
|
-
fnumfiles = int(
|
|
8748
|
+
lenlist = len(listcatfiles['ffilelist'])
|
|
8749
|
+
fnumfiles = int(listcatfiles['fnumfiles'])
|
|
8657
8750
|
lcfi = 0
|
|
8658
|
-
lcfx = int(
|
|
8659
|
-
if(lenlist >
|
|
8751
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8752
|
+
if(lenlist > listcatfiles['fnumfiles'] or lenlist < listcatfiles['fnumfiles']):
|
|
8660
8753
|
lcfx = int(lenlist)
|
|
8661
8754
|
else:
|
|
8662
|
-
lcfx = int(
|
|
8755
|
+
lcfx = int(listcatfiles['fnumfiles'])
|
|
8663
8756
|
returnval = {}
|
|
8664
8757
|
while(lcfi < lcfx):
|
|
8665
|
-
returnval.update({lcfi:
|
|
8758
|
+
returnval.update({lcfi: listcatfiles['ffilelist'][lcfi]['fname']})
|
|
8666
8759
|
if(not verbose):
|
|
8667
|
-
VerbosePrintOut(
|
|
8760
|
+
VerbosePrintOut(listcatfiles['ffilelist'][lcfi]['fname'])
|
|
8668
8761
|
if(verbose):
|
|
8669
8762
|
permissions = {'access': {'0': ('---'), '1': ('--x'), '2': ('-w-'), '3': ('-wx'), '4': (
|
|
8670
8763
|
'r--'), '5': ('r-x'), '6': ('rw-'), '7': ('rwx')}, 'roles': {0: 'owner', 1: 'group', 2: 'other'}}
|
|
8671
|
-
printfname =
|
|
8672
|
-
if(
|
|
8673
|
-
printfname =
|
|
8674
|
-
" link to " +
|
|
8675
|
-
if(
|
|
8676
|
-
printfname =
|
|
8677
|
-
" -> " +
|
|
8678
|
-
fuprint =
|
|
8764
|
+
printfname = listcatfiles['ffilelist'][lcfi]['fname']
|
|
8765
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 1):
|
|
8766
|
+
printfname = listcatfiles['ffilelist'][lcfi]['fname'] + \
|
|
8767
|
+
" link to " + listcatfiles['ffilelist'][lcfi]['flinkname']
|
|
8768
|
+
if(listcatfiles['ffilelist'][lcfi]['ftype'] == 2):
|
|
8769
|
+
printfname = listcatfiles['ffilelist'][lcfi]['fname'] + \
|
|
8770
|
+
" -> " + listcatfiles['ffilelist'][lcfi]['flinkname']
|
|
8771
|
+
fuprint = listcatfiles['ffilelist'][lcfi]['funame']
|
|
8679
8772
|
if(len(fuprint) <= 0):
|
|
8680
|
-
fuprint =
|
|
8681
|
-
fgprint =
|
|
8773
|
+
fuprint = listcatfiles['ffilelist'][lcfi]['fuid']
|
|
8774
|
+
fgprint = listcatfiles['ffilelist'][lcfi]['fgname']
|
|
8682
8775
|
if(len(fgprint) <= 0):
|
|
8683
|
-
fgprint =
|
|
8776
|
+
fgprint = listcatfiles['ffilelist'][lcfi]['fgid']
|
|
8684
8777
|
if(newstyle):
|
|
8685
|
-
VerbosePrintOut(ftype_to_str(
|
|
8686
|
-
|
|
8778
|
+
VerbosePrintOut(ftype_to_str(listcatfiles['ffilelist'][lcfi]['ftype']) + "\t" + listcatfiles['ffilelist'][lcfi]['fcompression'] + "\t" + str(
|
|
8779
|
+
listcatfiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + printfname)
|
|
8687
8780
|
else:
|
|
8688
|
-
VerbosePrintOut(PrintPermissionString(
|
|
8689
|
-
|
|
8781
|
+
VerbosePrintOut(PrintPermissionString(listcatfiles['ffilelist'][lcfi]['fmode'], listcatfiles['ffilelist'][lcfi]['ftype']) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
|
|
8782
|
+
listcatfiles['ffilelist'][lcfi]['fsize']).rjust(15) + " " + datetime.datetime.utcfromtimestamp(listcatfiles['ffilelist'][lcfi]['fmtime']).strftime('%Y-%m-%d %H:%M') + " " + printfname)
|
|
8690
8783
|
lcfi = lcfi + 1
|
|
8691
8784
|
if(returnfp):
|
|
8692
|
-
return
|
|
8785
|
+
return listcatfiles['fp']
|
|
8693
8786
|
else:
|
|
8694
8787
|
return True
|
|
8695
8788
|
|
|
8696
8789
|
|
|
8697
8790
|
def CatFileStringListFiles(instr, seekstart=0, seekend=0, skipchecksum=False, formatspecs=__file_format_multi_dict__, seektoend=False, verbose=False, newstyle=False, returnfp=False):
|
|
8698
|
-
fp =
|
|
8699
|
-
|
|
8791
|
+
fp = MkTempFile(instr)
|
|
8792
|
+
listcatfiles = CatFileListFiles(
|
|
8700
8793
|
instr, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, newstyle, returnfp)
|
|
8701
|
-
return
|
|
8794
|
+
return listcatfiles
|
|
8702
8795
|
|
|
8703
8796
|
|
|
8704
8797
|
def TarFileListFiles(infile, verbose=False, returnfp=False):
|
|
8705
8798
|
if(verbose):
|
|
8706
8799
|
logging.basicConfig(format="%(message)s", stream=sys.stdout, level=logging.DEBUG)
|
|
8707
8800
|
if(infile == "-"):
|
|
8708
|
-
infile =
|
|
8801
|
+
infile = MkTempFile()
|
|
8709
8802
|
if(hasattr(sys.stdin, "buffer")):
|
|
8710
8803
|
shutil.copyfileobj(sys.stdin.buffer, infile)
|
|
8711
8804
|
else:
|
|
@@ -8821,7 +8914,7 @@ def TarFileListFiles(infile, verbose=False, returnfp=False):
|
|
|
8821
8914
|
member.size).rjust(15) + " " + datetime.datetime.utcfromtimestamp(member.mtime).strftime('%Y-%m-%d %H:%M') + " " + printfname)
|
|
8822
8915
|
lcfi = lcfi + 1
|
|
8823
8916
|
if(returnfp):
|
|
8824
|
-
return
|
|
8917
|
+
return listcatfiles['fp']
|
|
8825
8918
|
else:
|
|
8826
8919
|
return True
|
|
8827
8920
|
|
|
@@ -8830,7 +8923,7 @@ def ZipFileListFiles(infile, verbose=False, returnfp=False):
|
|
|
8830
8923
|
if(verbose):
|
|
8831
8924
|
logging.basicConfig(format="%(message)s", stream=sys.stdout, level=logging.DEBUG)
|
|
8832
8925
|
if(infile == "-"):
|
|
8833
|
-
infile =
|
|
8926
|
+
infile = MkTempFile()
|
|
8834
8927
|
if(hasattr(sys.stdin, "buffer")):
|
|
8835
8928
|
shutil.copyfileobj(sys.stdin.buffer, infile)
|
|
8836
8929
|
else:
|
|
@@ -8954,7 +9047,7 @@ def ZipFileListFiles(infile, verbose=False, returnfp=False):
|
|
|
8954
9047
|
15) + " " + datetime.datetime.utcfromtimestamp(int(time.mktime(member.date_time + (0, 0, -1)))).strftime('%Y-%m-%d %H:%M') + " " + printfname)
|
|
8955
9048
|
lcfi = lcfi + 1
|
|
8956
9049
|
if(returnfp):
|
|
8957
|
-
return
|
|
9050
|
+
return listcatfiles['fp']
|
|
8958
9051
|
else:
|
|
8959
9052
|
return True
|
|
8960
9053
|
|
|
@@ -9092,7 +9185,7 @@ if(rarfile_support):
|
|
|
9092
9185
|
member.file_size).rjust(15) + " " + member.mtime.strftime('%Y-%m-%d %H:%M') + " " + printfname)
|
|
9093
9186
|
lcfi = lcfi + 1
|
|
9094
9187
|
if(returnfp):
|
|
9095
|
-
return
|
|
9188
|
+
return listcatfiles['fp']
|
|
9096
9189
|
else:
|
|
9097
9190
|
return True
|
|
9098
9191
|
|
|
@@ -9199,7 +9292,7 @@ if(py7zr_support):
|
|
|
9199
9292
|
fsize).rjust(15) + " " + member.creationtime.strftime('%Y-%m-%d %H:%M') + " " + printfname)
|
|
9200
9293
|
lcfi = lcfi + 1
|
|
9201
9294
|
if(returnfp):
|
|
9202
|
-
return
|
|
9295
|
+
return listcatfiles['fp']
|
|
9203
9296
|
else:
|
|
9204
9297
|
return True
|
|
9205
9298
|
|
|
@@ -9226,12 +9319,12 @@ def InFileListFiles(infile, verbose=False, formatspecs=__file_format_multi_dict_
|
|
|
9226
9319
|
|
|
9227
9320
|
|
|
9228
9321
|
def ListDirListFiles(infiles, dirlistfromtxt=False, compression="auto", compresswholefile=True, compressionlevel=None, followlink=False, seekstart=0, seekend=0, skipchecksum=False, checksumtype=["crc32", "crc32", "crc32"], formatspecs=__file_format_dict__, seektoend=False, verbose=False, returnfp=False):
|
|
9229
|
-
outarray =
|
|
9322
|
+
outarray = MkTempFile()
|
|
9230
9323
|
packform = PackCatFile(infiles, outarray, dirlistfromtxt, compression, compresswholefile,
|
|
9231
9324
|
compressionlevel, followlink, checksumtype, formatspecs, False, True)
|
|
9232
|
-
|
|
9325
|
+
listcatfiles = CatFileListFiles(
|
|
9233
9326
|
outarray, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, returnfp)
|
|
9234
|
-
return
|
|
9327
|
+
return listcatfiles
|
|
9235
9328
|
|
|
9236
9329
|
"""
|
|
9237
9330
|
PyNeoFile compatibility layer
|
|
@@ -9244,32 +9337,32 @@ def make_empty_archive_file_pointer_neo(fp, fmttype=None, checksumtype='crc32',
|
|
|
9244
9337
|
return make_empty_file_pointer_neo(fp, fmttype, checksumtype, formatspecs, encoding)
|
|
9245
9338
|
|
|
9246
9339
|
def make_empty_file_neo(outfile=None, fmttype=None, checksumtype='crc32', formatspecs=__file_format_multi_dict__, encoding='UTF-8', returnfp=False):
|
|
9247
|
-
return MakeEmptyFile(outfile, fmttype, "auto", False, None, checksumtype, formatspecs, returnfp)
|
|
9340
|
+
return MakeEmptyFile(outfile, fmttype, "auto", False, None, compressionlistalt, checksumtype, formatspecs, returnfp)
|
|
9248
9341
|
|
|
9249
9342
|
def make_empty_archive_file_neo(outfile=None, fmttype=None, checksumtype='crc32', formatspecs=__file_format_multi_dict__, encoding='UTF-8', returnfp=False):
|
|
9250
9343
|
return make_empty_file_neo(outfile, fmttype, checksumtype, formatspecs, encoding, returnfp)
|
|
9251
9344
|
|
|
9252
9345
|
def pack_neo(infiles, outfile=None, formatspecs=__file_format_multi_dict__, checksumtypes=["crc32", "crc32", "crc32", "crc32"], encoding="UTF-8", compression="auto", compression_level=None, returnfp=False):
|
|
9253
|
-
return
|
|
9346
|
+
return PackArchiveFile(infiles, outfile, False, "auto", compression, False, compression_level, compressionlistalt, False, checksumtypes, [], {}, formatspecs, False, returnfp)
|
|
9254
9347
|
|
|
9255
9348
|
def archive_to_array_neo(infile, formatspecs=__file_format_multi_dict__, listonly=False, skipchecksum=False, uncompress=True, returnfp=False):
|
|
9256
|
-
return
|
|
9349
|
+
return ArchiveFileToArray(infile, "auto", 0, 0, listonly, True, uncompress, skipchecksum, formatspecs, False, returnfp)
|
|
9257
9350
|
|
|
9258
9351
|
def unpack_neo(infile, outdir='.', formatspecs=__file_format_multi_dict__, skipchecksum=False, uncompress=True, returnfp=False):
|
|
9259
|
-
return
|
|
9352
|
+
return UnPackArchiveFile(infile, outdir, False, 0, 0, skipchecksum, formatspecs, True, True, False, False, returnfp)
|
|
9260
9353
|
|
|
9261
9354
|
def repack_neo(infile, outfile=None, formatspecs=__file_format_dict__, checksumtypes=["crc32", "crc32", "crc32", "crc32"], compression="auto", compression_level=None, returnfp=False):
|
|
9262
|
-
return
|
|
9355
|
+
return RePackArchiveFile(infile, outfile, "auto", compression, False, compression_level, compressionlistalt, False, 0, 0, checksumtypes, False, [], {}, formatspecs, False, False, returnfp)
|
|
9263
9356
|
|
|
9264
9357
|
def archivefilevalidate_neo(infile, formatspecs=__file_format_multi_dict__, verbose=False, return_details=False, returnfp=False):
|
|
9265
|
-
return
|
|
9358
|
+
return ArchiveFileValidate(infile, "auto", formatspecs, False, verbose, returnfp)
|
|
9266
9359
|
|
|
9267
9360
|
def archivefilelistfiles_neo(infile, formatspecs=__file_format_multi_dict__, advanced=False, include_dirs=True, returnfp=False):
|
|
9268
|
-
return
|
|
9361
|
+
return ArchiveFileListFiles(infile, "auto", 0, 0, False, formatspecs, False, True, advanced, returnfp)
|
|
9269
9362
|
|
|
9270
9363
|
def convert_foreign_to_neo(infile, outfile=None, formatspecs=__file_format_multi_dict__, checksumtypes=["crc32", "crc32", "crc32", "crc32"], compression="auto", compression_level=None, returnfp=False):
|
|
9271
9364
|
intmp = InFileToArray(infile, 0, 0, False, True, False, formatspecs, False, False)
|
|
9272
|
-
return
|
|
9365
|
+
return RePackArchiveFile(intmp, outfile, "auto", compression, False, compression_level, compressionlistalt, False, 0, 0, checksumtypes, False, [], {}, formatspecs, False, False, returnfp)
|
|
9273
9366
|
|
|
9274
9367
|
def download_file_from_ftp_file(url):
|
|
9275
9368
|
urlparts = urlparse(url)
|
|
@@ -9312,7 +9405,7 @@ def download_file_from_ftp_file(url):
|
|
|
9312
9405
|
ftp.login(urlparts.username, urlparts.password)
|
|
9313
9406
|
if(urlparts.scheme == "ftps"):
|
|
9314
9407
|
ftp.prot_p()
|
|
9315
|
-
ftpfile =
|
|
9408
|
+
ftpfile = MkTempFile()
|
|
9316
9409
|
ftp.retrbinary("RETR "+urlparts.path, ftpfile.write)
|
|
9317
9410
|
#ftp.storbinary("STOR "+urlparts.path, ftpfile.write);
|
|
9318
9411
|
ftp.close()
|
|
@@ -9373,7 +9466,7 @@ def upload_file_to_ftp_file(ftpfile, url):
|
|
|
9373
9466
|
|
|
9374
9467
|
|
|
9375
9468
|
def upload_file_to_ftp_string(ftpstring, url):
|
|
9376
|
-
ftpfileo =
|
|
9469
|
+
ftpfileo = MkTempFile(ftpstring)
|
|
9377
9470
|
ftpfile = upload_file_to_ftp_file(ftpfileo, url)
|
|
9378
9471
|
ftpfileo.close()
|
|
9379
9472
|
return ftpfile
|
|
@@ -9425,7 +9518,7 @@ def download_file_from_http_file(url, headers=None, usehttp=__use_http_lib__):
|
|
|
9425
9518
|
return download_file_from_ftp_file(url)
|
|
9426
9519
|
|
|
9427
9520
|
# Create a temporary file object
|
|
9428
|
-
httpfile =
|
|
9521
|
+
httpfile = MkTempFile()
|
|
9429
9522
|
|
|
9430
9523
|
# 1) Requests branch
|
|
9431
9524
|
if usehttp == 'requests' and haverequests:
|
|
@@ -9533,7 +9626,7 @@ if(haveparamiko):
|
|
|
9533
9626
|
log.info("Error With URL "+url)
|
|
9534
9627
|
return False
|
|
9535
9628
|
sftp = ssh.open_sftp()
|
|
9536
|
-
sftpfile =
|
|
9629
|
+
sftpfile = MkTempFile()
|
|
9537
9630
|
sftp.getfo(urlparts.path, sftpfile)
|
|
9538
9631
|
sftp.close()
|
|
9539
9632
|
ssh.close()
|
|
@@ -9603,7 +9696,7 @@ else:
|
|
|
9603
9696
|
|
|
9604
9697
|
if(haveparamiko):
|
|
9605
9698
|
def upload_file_to_sftp_string(sftpstring, url):
|
|
9606
|
-
sftpfileo =
|
|
9699
|
+
sftpfileo = MkTempFile(sftpstring)
|
|
9607
9700
|
sftpfile = upload_file_to_sftp_files(sftpfileo, url)
|
|
9608
9701
|
sftpfileo.close()
|
|
9609
9702
|
return sftpfile
|
|
@@ -9649,7 +9742,7 @@ if(havepysftp):
|
|
|
9649
9742
|
log.info("Error With URL "+url)
|
|
9650
9743
|
return False
|
|
9651
9744
|
sftp = ssh.open_sftp()
|
|
9652
|
-
sftpfile =
|
|
9745
|
+
sftpfile = MkTempFile()
|
|
9653
9746
|
sftp.getfo(urlparts.path, sftpfile)
|
|
9654
9747
|
sftp.close()
|
|
9655
9748
|
ssh.close()
|
|
@@ -9716,7 +9809,7 @@ else:
|
|
|
9716
9809
|
|
|
9717
9810
|
if(havepysftp):
|
|
9718
9811
|
def upload_file_to_pysftp_string(sftpstring, url):
|
|
9719
|
-
sftpfileo =
|
|
9812
|
+
sftpfileo = MkTempFile(sftpstring)
|
|
9720
9813
|
sftpfile = upload_file_to_pysftp_file(ftpfileo, url)
|
|
9721
9814
|
sftpfileo.close()
|
|
9722
9815
|
return sftpfile
|
|
@@ -9794,7 +9887,7 @@ def upload_file_to_internet_file(ifp, url):
|
|
|
9794
9887
|
def upload_file_to_internet_compress_file(ifp, url, compression="auto", compressionlevel=None, compressionuselist=compressionlistalt, formatspecs=__file_format_dict__):
|
|
9795
9888
|
fp = CompressOpenFileAlt(
|
|
9796
9889
|
fp, compression, compressionlevel, compressionuselist, formatspecs)
|
|
9797
|
-
if(not
|
|
9890
|
+
if(not catfileout):
|
|
9798
9891
|
return False
|
|
9799
9892
|
fp.seek(0, 0)
|
|
9800
9893
|
upload_file_to_internet_file(fp, outfile)
|
|
@@ -9818,9 +9911,10 @@ def upload_file_to_internet_string(ifp, url):
|
|
|
9818
9911
|
|
|
9819
9912
|
|
|
9820
9913
|
def upload_file_to_internet_compress_string(ifp, url, compression="auto", compressionlevel=None, compressionuselist=compressionlistalt, formatspecs=__file_format_dict__):
|
|
9914
|
+
internetfileo = MkTempFile(ifp)
|
|
9821
9915
|
fp = CompressOpenFileAlt(
|
|
9822
|
-
|
|
9823
|
-
if(not
|
|
9916
|
+
internetfileo, compression, compressionlevel, compressionuselist, formatspecs)
|
|
9917
|
+
if(not catfileout):
|
|
9824
9918
|
return False
|
|
9825
9919
|
fp.seek(0, 0)
|
|
9826
9920
|
upload_file_to_internet_file(fp, outfile)
|