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.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/24/2025 Ver. 0.21.2 RC 1 - Author: cooldude2k $
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, 2, "RC 1", 1)
395
- __version_date_info__ = (2025, 9, 24, "RC 1", 1)
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: aa79a32fe42d54c127f8f31a24dc7b2be0fb1153 $"
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
- archivefileheadercshex = GetHeaderChecksum(
1818
+ catfileheadercshex = GetHeaderChecksum(
1726
1819
  inlist, checksumtype, True, formatspecs).lower()
1727
- return inchecksum.lower() == archivefileheadercshex
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 MakeEmptyArchiveFilePointer(fp, fmttype=__file_format_default__, checksumtype="crc32", formatspecs=__file_format_multi_dict__):
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 = BytesIO()
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 = BytesIO()
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 MakeEmptyArchiveFile(outfile, compression="auto", compresswholefile=True, compressionlevel=None, compressionuselist=compressionlistalt, checksumtype="crc32", formatspecs=__file_format_dict__, returnfp=False):
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO(compressed_data)
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 = BytesIO(instring)
4302
+ instringsfile = MkTempFile(instring)
4210
4303
  except TypeError:
4211
- instringsfile = BytesIO(instring.encode("UTF-8"))
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 = BytesIO(instring)
4567
+ instringsfile = MkTempFile(instring)
4475
4568
  except TypeError:
4476
- instringsfile = BytesIO(instring.encode("UTF-8"))
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 = BytesIO(instring)
4575
+ instringsfile = MkTempFile(instring)
4483
4576
  except TypeError:
4484
- instringsfile = BytesIO(instring.decode("UTF-8"))
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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 = BytesIO()
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] = ArchiveFileToArray(curfname, fmttype, seekstart, seekend, listonly, contentasfile, uncompress, skipchecksum, formatspecs, seektoend, returnfp)
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 = BytesIO(instr)
7920
- listarchivefiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
7921
- return listarchivefiles
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 = BytesIO()
8021
+ fp = MkTempFile()
7929
8022
  fp = PackCatFileFromTarFile(
7930
8023
  infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
7931
- listarchivefiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
7932
- return listarchivefiles
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 = BytesIO()
8032
+ fp = MkTempFile()
7940
8033
  fp = PackCatFileFromZipFile(
7941
8034
  infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
7942
- listarchivefiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
7943
- return listarchivefiles
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 = BytesIO()
8048
+ fp = MkTempFile()
7956
8049
  fp = PackCatFileFromRarFile(
7957
8050
  infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
7958
- listarchivefiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
7959
- return listarchivefiles
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 = BytesIO()
8063
+ fp = MkTempFile()
7971
8064
  fp = PackCatFileFromSevenZipFile(
7972
8065
  infile, fp, "auto", True, None, compressionlistalt, "crc32", [], formatspecs, False, True)
7973
- listarchivefiles = CatFileToArray(fp, "auto", seekstart, seekend, listonly, contentasfile, True, skipchecksum, formatspecs, seektoend, returnfp)
7974
- return listarchivefiles
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 = BytesIO()
8090
+ outarray = MkTempFile()
7998
8091
  packform = PackCatFile(infiles, outarray, dirlistfromtxt, fmttype, compression, compresswholefile,
7999
8092
  compressionlevel, followlink, checksumtype, extradata, formatspecs, verbose, True)
8000
- listarchivefiles = CatFileToArray(outarray, "auto", seekstart, seekend, listonly, True, skipchecksum, formatspecs, seektoend, returnfp)
8001
- return listarchivefiles
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
- listarchivefiles = inarray
8099
+ listcatfiles = inarray
8007
8100
  else:
8008
8101
  return False
8009
- if(not listarchivefiles):
8102
+ if(not listcatfiles):
8010
8103
  return False
8011
- outarray = {'list': listarchivefiles, 'filetoid': {}, 'idtofile': {}, 'filetypes': {'directories': {'filetoid': {}, 'idtofile': {}}, 'files': {'filetoid': {}, 'idtofile': {}}, 'links': {'filetoid': {}, 'idtofile': {}}, 'symlinks': {'filetoid': {
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': listarchivefiles['fp']})
8015
- lenlist = len(listarchivefiles['ffilelist'])
8107
+ outarray.update({'fp': listcatfiles['fp']})
8108
+ lenlist = len(listcatfiles['ffilelist'])
8016
8109
  lcfi = 0
8017
- lcfx = int(listarchivefiles['fnumfiles'])
8018
- if(lenlist > listarchivefiles['fnumfiles'] or lenlist < listarchivefiles['fnumfiles']):
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(listarchivefiles['fnumfiles'])
8114
+ lcfx = int(listcatfiles['fnumfiles'])
8022
8115
  while(lcfi < lcfx):
8023
- filetoidarray = {listarchivefiles['ffilelist'][lcfi]
8024
- ['fname']: listarchivefiles['ffilelist'][lcfi]['fid']}
8025
- idtofilearray = {listarchivefiles['ffilelist'][lcfi]
8026
- ['fid']: listarchivefiles['ffilelist'][lcfi]['fname']}
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 0 or listarchivefiles['ffilelist'][lcfi]['ftype'] == 7):
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 1):
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 2):
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 3):
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 4):
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 5):
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(listarchivefiles['ffilelist'][lcfi]['ftype'] == 6):
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
- listarchivefiles = infile
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
- listarchivefiles = CatFileToArray(infile, "auto", seekstart, seekend, False, True, skipchecksum, formatspecs, seektoend, returnfp)
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 listarchivefiles):
8195
+ if(not listcatfiles):
8103
8196
  return False
8104
8197
  if(outfile == "-" or outfile is None):
8105
8198
  verbose = False
8106
- fp = BytesIO()
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 = BytesIO()
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(listarchivefiles['ffilelist'])
8123
- fnumfiles = int(listarchivefiles['fnumfiles'])
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, listarchivefiles['fencoding'], [], checksumtype[0], formatspecs)
8127
- lenlist = len(listarchivefiles['ffilelist'])
8128
- fnumfiles = int(listarchivefiles['fnumfiles'])
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(listarchivefiles['fnumfiles'])
8131
- if(lenlist > listarchivefiles['fnumfiles'] or lenlist < listarchivefiles['fnumfiles']):
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(listarchivefiles['fnumfiles'])
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 = listarchivefiles['ffilelist'][reallcfi]['fencoding']
8143
- fcencoding = listarchivefiles['ffilelist'][reallcfi]['fencoding']
8144
- if(re.findall("^[.|/]", listarchivefiles['ffilelist'][reallcfi]['fname'])):
8145
- fname = listarchivefiles['ffilelist'][reallcfi]['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 = "./"+listarchivefiles['ffilelist'][reallcfi]['fname']
8240
+ fname = "./"+listcatfiles['ffilelist'][reallcfi]['fname']
8148
8241
  if(verbose):
8149
8242
  VerbosePrintOut(fname)
8150
8243
  fheadersize = format(
8151
- int(listarchivefiles['ffilelist'][reallcfi]['fheadersize']), 'x').lower()
8244
+ int(listcatfiles['ffilelist'][reallcfi]['fheadersize']), 'x').lower()
8152
8245
  fsize = format(
8153
- int(listarchivefiles['ffilelist'][reallcfi]['fsize']), 'x').lower()
8154
- flinkname = listarchivefiles['ffilelist'][reallcfi]['flinkname']
8246
+ int(listcatfiles['ffilelist'][reallcfi]['fsize']), 'x').lower()
8247
+ flinkname = listcatfiles['ffilelist'][reallcfi]['flinkname']
8155
8248
  fatime = format(
8156
- int(listarchivefiles['ffilelist'][reallcfi]['fatime']), 'x').lower()
8249
+ int(listcatfiles['ffilelist'][reallcfi]['fatime']), 'x').lower()
8157
8250
  fmtime = format(
8158
- int(listarchivefiles['ffilelist'][reallcfi]['fmtime']), 'x').lower()
8251
+ int(listcatfiles['ffilelist'][reallcfi]['fmtime']), 'x').lower()
8159
8252
  fctime = format(
8160
- int(listarchivefiles['ffilelist'][reallcfi]['fctime']), 'x').lower()
8253
+ int(listcatfiles['ffilelist'][reallcfi]['fctime']), 'x').lower()
8161
8254
  fbtime = format(
8162
- int(listarchivefiles['ffilelist'][reallcfi]['fbtime']), 'x').lower()
8255
+ int(listcatfiles['ffilelist'][reallcfi]['fbtime']), 'x').lower()
8163
8256
  fmode = format(
8164
- int(listarchivefiles['ffilelist'][reallcfi]['fmode']), 'x').lower()
8257
+ int(listcatfiles['ffilelist'][reallcfi]['fmode']), 'x').lower()
8165
8258
  fchmode = format(
8166
- int(listarchivefiles['ffilelist'][reallcfi]['fchmode']), 'x').lower()
8259
+ int(listcatfiles['ffilelist'][reallcfi]['fchmode']), 'x').lower()
8167
8260
  fuid = format(
8168
- int(listarchivefiles['ffilelist'][reallcfi]['fuid']), 'x').lower()
8169
- funame = listarchivefiles['ffilelist'][reallcfi]['funame']
8261
+ int(listcatfiles['ffilelist'][reallcfi]['fuid']), 'x').lower()
8262
+ funame = listcatfiles['ffilelist'][reallcfi]['funame']
8170
8263
  fgid = format(
8171
- int(listarchivefiles['ffilelist'][reallcfi]['fgid']), 'x').lower()
8172
- fgname = listarchivefiles['ffilelist'][reallcfi]['fgname']
8264
+ int(listcatfiles['ffilelist'][reallcfi]['fgid']), 'x').lower()
8265
+ fgname = listcatfiles['ffilelist'][reallcfi]['fgname']
8173
8266
  finode = format(
8174
- int(listarchivefiles['ffilelist'][reallcfi]['finode']), 'x').lower()
8267
+ int(listcatfiles['ffilelist'][reallcfi]['finode']), 'x').lower()
8175
8268
  flinkcount = format(
8176
- int(listarchivefiles['ffilelist'][reallcfi]['flinkcount']), 'x').lower()
8269
+ int(listcatfiles['ffilelist'][reallcfi]['flinkcount']), 'x').lower()
8177
8270
  fwinattributes = format(
8178
- int(listarchivefiles['ffilelist'][reallcfi]['fwinattributes']), 'x').lower()
8179
- fcompression = listarchivefiles['ffilelist'][reallcfi]['fcompression']
8271
+ int(listcatfiles['ffilelist'][reallcfi]['fwinattributes']), 'x').lower()
8272
+ fcompression = listcatfiles['ffilelist'][reallcfi]['fcompression']
8180
8273
  fcsize = format(
8181
- int(listarchivefiles['ffilelist'][reallcfi]['fcsize']), 'x').lower()
8274
+ int(listcatfiles['ffilelist'][reallcfi]['fcsize']), 'x').lower()
8182
8275
  fdev = format(
8183
- int(listarchivefiles['ffilelist'][reallcfi]['fdev']), 'x').lower()
8276
+ int(listcatfiles['ffilelist'][reallcfi]['fdev']), 'x').lower()
8184
8277
  fdev_minor = format(
8185
- int(listarchivefiles['ffilelist'][reallcfi]['fminor']), 'x').lower()
8278
+ int(listcatfiles['ffilelist'][reallcfi]['fminor']), 'x').lower()
8186
8279
  fdev_major = format(
8187
- int(listarchivefiles['ffilelist'][reallcfi]['fmajor']), 'x').lower()
8188
- fseeknextfile = listarchivefiles['ffilelist'][reallcfi]['fseeknextfile']
8189
- if(len(listarchivefiles['ffilelist'][reallcfi]['fextralist']) > listarchivefiles['ffilelist'][reallcfi]['fextrafields'] and len(listarchivefiles['ffilelist'][reallcfi]['fextralist']) > 0):
8190
- listarchivefiles['ffilelist'][reallcfi]['fextrafields'] = len(
8191
- listarchivefiles['ffilelist'][reallcfi]['fextralist'])
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 = listarchivefiles['ffilelist'][reallcfi]['fextralist']
8286
+ extradata = listcatfiles['ffilelist'][reallcfi]['fextralist']
8194
8287
  if(not followlink and len(jsondata) <= 0):
8195
- jsondata = listarchivefiles['ffilelist'][reallcfi]['fjsondata']
8196
- fcontents = listarchivefiles['ffilelist'][reallcfi]['fcontents']
8197
- if(not listarchivefiles['ffilelist'][reallcfi]['fcontentasfile']):
8198
- fcontents = BytesIO(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 = BytesIO()
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 = BytesIO()
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(listarchivefiles['ffilelist'][reallcfi]['ftype'] == 1 or listarchivefiles['ffilelist'][reallcfi]['ftype'] == 2):
8245
- getflinkpath = listarchivefiles['ffilelist'][reallcfi]['flinkname']
8246
- flinkid = prelistarchivefiles['filetoid'][getflinkpath]
8247
- flinkinfo = listarchivefiles['ffilelist'][flinkid]
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 = BytesIO(fcontents)
8373
+ fcontents = MkTempFile(fcontents)
8281
8374
  ftypehex = format(flinkinfo['ftype'], 'x').lower()
8282
8375
  else:
8283
8376
  ftypehex = format(
8284
- listarchivefiles['ffilelist'][reallcfi]['ftype'], 'x').lower()
8377
+ listcatfiles['ffilelist'][reallcfi]['ftype'], 'x').lower()
8285
8378
  fcurfid = format(curfid, 'x').lower()
8286
8379
  if(not followlink and finode != 0):
8287
- if(listarchivefiles['ffilelist'][reallcfi]['ftype'] != 1):
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 = BytesIO(instr)
8352
- listarchivefiles = RePackCatFile(fp, outfile, fmttype, compression, compresswholefile, compressionlevel, compressionuselist,
8444
+ fp = MkTempFile(instr)
8445
+ listcatfiles = RePackCatFile(fp, outfile, fmttype, compression, compresswholefile, compressionlevel, compressionuselist,
8353
8446
  checksumtype, skipchecksum, extradata, formatspecs, verbose, returnfp)
8354
- return listarchivefiles
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 = BytesIO()
8451
+ outarray = MkTempFile()
8359
8452
  packform = PackCatFile(infiles, outarray, dirlistfromtxt, fmttype, compression, compresswholefile,
8360
8453
  compressionlevel, compressionuselist, followlink, checksumtype, extradata, formatspecs, verbose, True)
8361
- listarchivefiles = RePackCatFile(outarray, outfile, fmttype, compression, compresswholefile,
8454
+ listcatfiles = RePackCatFile(outarray, outfile, fmttype, compression, compresswholefile,
8362
8455
  compressionlevel, checksumtype, skipchecksum, extradata, formatspecs, verbose, returnfp)
8363
- return listarchivefiles
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
- listarchivefiles = infile
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
- listarchivefiles = CatFileToArray(infile, "auto", seekstart, seekend, False, True, skipchecksum, formatspecs, seektoend, returnfp)
8377
- if(not listarchivefiles):
8469
+ listcatfiles = CatFileToArray(infile, "auto", seekstart, seekend, False, True, skipchecksum, formatspecs, seektoend, returnfp)
8470
+ if(not listcatfiles):
8378
8471
  return False
8379
- lenlist = len(listarchivefiles['ffilelist'])
8380
- fnumfiles = int(listarchivefiles['fnumfiles'])
8472
+ lenlist = len(listcatfiles['ffilelist'])
8473
+ fnumfiles = int(listcatfiles['fnumfiles'])
8381
8474
  lcfi = 0
8382
- lcfx = int(listarchivefiles['fnumfiles'])
8383
- if(lenlist > listarchivefiles['fnumfiles'] or lenlist < listarchivefiles['fnumfiles']):
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(listarchivefiles['fnumfiles'])
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
- listarchivefiles['ffilelist'][lcfi]['fuid'])
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
- listarchivefiles['ffilelist'][lcfi]['fgid'])
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, listarchivefiles['ffilelist'][lcfi]['fname']))
8413
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 0 or listarchivefiles['ffilelist'][lcfi]['ftype'] == 7):
8414
- with open(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
8415
- if(not listarchivefiles['ffilelist'][lcfi]['fcontentasfile']):
8416
- listarchivefiles['ffilelist'][lcfi]['fcontents'] = BytesIO(
8417
- listarchivefiles['ffilelist'][lcfi]['fcontents'])
8418
- listarchivefiles['ffilelist'][lcfi]['fcontents'].seek(0, 0)
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
- listarchivefiles['ffilelist'][lcfi]['fcontents'], fpc)
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 == listarchivefiles['ffilelist'][lcfi]['funame'] and fgname == listarchivefiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
8432
- os.chown(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']),
8433
- listarchivefiles['ffilelist'][lcfi]['fuid'], listarchivefiles['ffilelist'][lcfi]['fgid'])
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, listarchivefiles['ffilelist'][lcfi]['fname']), listarchivefiles['ffilelist'][lcfi]['fchmode'])
8529
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
8437
8530
  if(preservetime):
8438
- os.utime(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), (
8439
- listarchivefiles['ffilelist'][lcfi]['fatime'], listarchivefiles['ffilelist'][lcfi]['fmtime']))
8440
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 1):
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 = listarchivefiles['ffilelist'][lcfi]['flinkname']
8443
- flinkid = prelistarchivefiles['filetoid'][getflinkpath]
8444
- flinkinfo = listarchivefiles['ffilelist'][flinkid]
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, listarchivefiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
8559
+ with open(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
8467
8560
  if(not flinkinfo['fcontentasfile']):
8468
- flinkinfo['fcontents'] = BytesIO(
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, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8577
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8485
8578
  if(preservepermissions):
8486
8579
  os.chmod(PrependPath(
8487
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8580
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8488
8581
  if(preservetime):
8489
- os.utime(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), (
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, listarchivefiles['ffilelist'][lcfi]['fname']))
8586
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']))
8494
8587
  if(flinkinfo['ftype'] == 2):
8495
8588
  os.symlink(flinkinfo['flinkname'], PrependPath(
8496
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
8589
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']))
8497
8590
  if(flinkinfo['ftype'] == 5):
8498
8591
  if(preservepermissions):
8499
8592
  os.mkdir(PrependPath(
8500
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8593
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8501
8594
  else:
8502
8595
  os.mkdir(PrependPath(
8503
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
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, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8599
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8507
8600
  if(preservepermissions):
8508
8601
  os.chmod(PrependPath(
8509
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8602
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8510
8603
  if(preservetime):
8511
- os.utime(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), (
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, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8608
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8516
8609
  else:
8517
- os.link(listarchivefiles['ffilelist'][lcfi]['flinkname'], PrependPath(
8518
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
8519
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 2):
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 = listarchivefiles['ffilelist'][lcfi]['flinkname']
8522
- flinkid = prelistarchivefiles['filetoid'][getflinkpath]
8523
- flinkinfo = listarchivefiles['ffilelist'][flinkid]
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, listarchivefiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
8638
+ with open(PrependPath(outdir, listcatfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
8546
8639
  if(not flinkinfo['fcontentasfile']):
8547
- flinkinfo['fcontents'] = BytesIO(
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, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8656
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8564
8657
  if(preservepermissions):
8565
8658
  os.chmod(PrependPath(
8566
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8659
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8567
8660
  if(preservetime):
8568
- os.utime(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), (
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, listarchivefiles['ffilelist'][lcfi]['fname']))
8665
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']))
8573
8666
  if(flinkinfo['ftype'] == 2):
8574
8667
  os.symlink(flinkinfo['flinkname'], PrependPath(
8575
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
8668
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']))
8576
8669
  if(flinkinfo['ftype'] == 5):
8577
8670
  if(preservepermissions):
8578
8671
  os.mkdir(PrependPath(
8579
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8672
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8580
8673
  else:
8581
8674
  os.mkdir(PrependPath(
8582
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
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, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8678
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
8586
8679
  if(preservepermissions):
8587
8680
  os.chmod(PrependPath(
8588
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8681
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8589
8682
  if(preservetime):
8590
- os.utime(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), (
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, listarchivefiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8687
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
8595
8688
  else:
8596
- os.symlink(listarchivefiles['ffilelist'][lcfi]['flinkname'], PrependPath(
8597
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
8598
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 5):
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, listarchivefiles['ffilelist'][lcfi]['fname']), listarchivefiles['ffilelist'][lcfi]['fchmode'])
8694
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
8602
8695
  else:
8603
8696
  os.mkdir(PrependPath(
8604
- outdir, listarchivefiles['ffilelist'][lcfi]['fname']))
8605
- if(hasattr(os, "chown") and funame == listarchivefiles['ffilelist'][lcfi]['funame'] and fgname == listarchivefiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
8606
- os.chown(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']),
8607
- listarchivefiles['ffilelist'][lcfi]['fuid'], listarchivefiles['ffilelist'][lcfi]['fgid'])
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, listarchivefiles['ffilelist'][lcfi]['fname']), listarchivefiles['ffilelist'][lcfi]['fchmode'])
8703
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
8611
8704
  if(preservetime):
8612
- os.utime(PrependPath(outdir, listarchivefiles['ffilelist'][lcfi]['fname']), (
8613
- listarchivefiles['ffilelist'][lcfi]['fatime'], listarchivefiles['ffilelist'][lcfi]['fmtime']))
8614
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 6 and hasattr(os, "mkfifo")):
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, listarchivefiles['ffilelist'][lcfi]['fname']), listarchivefiles['ffilelist'][lcfi]['fchmode'])
8709
+ outdir, listcatfiles['ffilelist'][lcfi]['fname']), listcatfiles['ffilelist'][lcfi]['fchmode'])
8617
8710
  lcfi = lcfi + 1
8618
8711
  if(returnfp):
8619
- return listarchivefiles['ffilelist']['fp']
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 = BytesIO(instr)
8626
- listarchivefiles = UnPackCatFile(fp, outdir, followlink, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, returnfp)
8627
- return listarchivefiles
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
- listarchivefiles = infile
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
- listarchivefiles = CatFileToArray(infile, fmttype, seekstart, seekend, True, False, False, skipchecksum, formatspecs, seektoend, returnfp)
8653
- if(not listarchivefiles):
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(listarchivefiles['ffilelist'])
8656
- fnumfiles = int(listarchivefiles['fnumfiles'])
8748
+ lenlist = len(listcatfiles['ffilelist'])
8749
+ fnumfiles = int(listcatfiles['fnumfiles'])
8657
8750
  lcfi = 0
8658
- lcfx = int(listarchivefiles['fnumfiles'])
8659
- if(lenlist > listarchivefiles['fnumfiles'] or lenlist < listarchivefiles['fnumfiles']):
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(listarchivefiles['fnumfiles'])
8755
+ lcfx = int(listcatfiles['fnumfiles'])
8663
8756
  returnval = {}
8664
8757
  while(lcfi < lcfx):
8665
- returnval.update({lcfi: listarchivefiles['ffilelist'][lcfi]['fname']})
8758
+ returnval.update({lcfi: listcatfiles['ffilelist'][lcfi]['fname']})
8666
8759
  if(not verbose):
8667
- VerbosePrintOut(listarchivefiles['ffilelist'][lcfi]['fname'])
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 = listarchivefiles['ffilelist'][lcfi]['fname']
8672
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 1):
8673
- printfname = listarchivefiles['ffilelist'][lcfi]['fname'] + \
8674
- " link to " + listarchivefiles['ffilelist'][lcfi]['flinkname']
8675
- if(listarchivefiles['ffilelist'][lcfi]['ftype'] == 2):
8676
- printfname = listarchivefiles['ffilelist'][lcfi]['fname'] + \
8677
- " -> " + listarchivefiles['ffilelist'][lcfi]['flinkname']
8678
- fuprint = listarchivefiles['ffilelist'][lcfi]['funame']
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 = listarchivefiles['ffilelist'][lcfi]['fuid']
8681
- fgprint = listarchivefiles['ffilelist'][lcfi]['fgname']
8773
+ fuprint = listcatfiles['ffilelist'][lcfi]['fuid']
8774
+ fgprint = listcatfiles['ffilelist'][lcfi]['fgname']
8682
8775
  if(len(fgprint) <= 0):
8683
- fgprint = listarchivefiles['ffilelist'][lcfi]['fgid']
8776
+ fgprint = listcatfiles['ffilelist'][lcfi]['fgid']
8684
8777
  if(newstyle):
8685
- VerbosePrintOut(ftype_to_str(listarchivefiles['ffilelist'][lcfi]['ftype']) + "\t" + listarchivefiles['ffilelist'][lcfi]['fcompression'] + "\t" + str(
8686
- listarchivefiles['ffilelist'][lcfi]['fsize']).rjust(15) + "\t" + printfname)
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(listarchivefiles['ffilelist'][lcfi]['fmode'], listarchivefiles['ffilelist'][lcfi]['ftype']) + " " + str(fuprint) + "/" + str(fgprint) + " " + str(
8689
- listarchivefiles['ffilelist'][lcfi]['fsize']).rjust(15) + " " + datetime.datetime.utcfromtimestamp(listarchivefiles['ffilelist'][lcfi]['fmtime']).strftime('%Y-%m-%d %H:%M') + " " + printfname)
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 listarchivefiles['fp']
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 = BytesIO(instr)
8699
- listarchivefiles = CatFileListFiles(
8791
+ fp = MkTempFile(instr)
8792
+ listcatfiles = CatFileListFiles(
8700
8793
  instr, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, newstyle, returnfp)
8701
- return listarchivefiles
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 = BytesIO()
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 listarchivefiles['fp']
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 = BytesIO()
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 listarchivefiles['fp']
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 listarchivefiles['fp']
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 listarchivefiles['fp']
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 = BytesIO()
9322
+ outarray = MkTempFile()
9230
9323
  packform = PackCatFile(infiles, outarray, dirlistfromtxt, compression, compresswholefile,
9231
9324
  compressionlevel, followlink, checksumtype, formatspecs, False, True)
9232
- listarchivefiles = CatFileListFiles(
9325
+ listcatfiles = CatFileListFiles(
9233
9326
  outarray, seekstart, seekend, skipchecksum, formatspecs, seektoend, verbose, returnfp)
9234
- return listarchivefiles
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 PackCatFile(infiles, outfile, False, "auto", compression, False, compression_level, compressionlistalt, False, checksumtypes, [], {}, formatspecs, False, returnfp)
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 CatFileToArray(infile, "auto", 0, 0, listonly, True, uncompress, skipchecksum, formatspecs, False, returnfp)
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 UnPackCatFile(infile, outdir, False, 0, 0, skipchecksum, formatspecs, True, True, False, False, returnfp)
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 RePackCatFile(infile, outfile, "auto", compression, False, compression_level, compressionlistalt, False, 0, 0, checksumtypes, False, [], {}, formatspecs, False, False, returnfp)
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 CatFileValidate(infile, "auto", formatspecs, False, verbose, returnfp)
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 CatFileListFiles(infile, "auto", 0, 0, False, formatspecs, False, True, advanced, returnfp)
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 RePackCatFile(intmp, outfile, "auto", compression, False, compression_level, compressionlistalt, False, 0, 0, checksumtypes, False, [], {}, formatspecs, False, False, returnfp)
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 = BytesIO()
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 = BytesIO(ftpstring)
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 = BytesIO()
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 = BytesIO()
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 = BytesIO(sftpstring)
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 = BytesIO()
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 = BytesIO(sftpstring)
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 archivefileout):
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
- BytesIO(ifp), compression, compressionlevel, compressionuselist, formatspecs)
9823
- if(not archivefileout):
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)