PyCatFile 0.28.4__tar.gz → 0.28.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyCatFile
3
- Version: 0.28.4
3
+ Version: 0.28.6
4
4
  Summary: A tar like file format name archivefile.
5
5
  Home-page: https://github.com/GameMaker2k/PyCatFile
6
6
  Download-URL: https://github.com/GameMaker2k/PyCatFile/archive/master.tar.gz
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyCatFile
3
- Version: 0.28.4
3
+ Version: 0.28.6
4
4
  Summary: A tar like file format name archivefile.
5
5
  Home-page: https://github.com/GameMaker2k/PyCatFile
6
6
  Download-URL: https://github.com/GameMaker2k/PyCatFile/archive/master.tar.gz
@@ -14,7 +14,7 @@
14
14
  Copyright 2018-2026 Game Maker 2k - http://intdb.sourceforge.net/
15
15
  Copyright 2018-2026 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
16
16
 
17
- $FileInfo: catfile.py - Last Update: 2/6/2026 Ver. 0.28.4 RC 1 - Author: cooldude2k $
17
+ $FileInfo: catfile.py - Last Update: 2/6/2026 Ver. 0.28.6 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
@@ -203,7 +203,7 @@ if active_action:
203
203
  sys.exit(1)
204
204
  input_file = tempout
205
205
  pycatfile.UnPackCatFile(input_file, getargs.output, False, getargs.filestart, 0, 0, getargs.skipchecksum,
206
- fnamedict, getargs.verbose, getargs.preserve, getargs.preserve, False, False)
206
+ fnamedict, getargs.insecretkey, getargs.preserve, getargs.preserve, False, getargs.verbose, False)
207
207
  elif active_action == 'list':
208
208
  if getargs.convert:
209
209
  checkcompressfile = pycatfile.CheckCompressionSubType(
@@ -13,7 +13,7 @@
13
13
  Copyright 2018-2026 Game Maker 2k - http://intdb.sourceforge.net/
14
14
  Copyright 2018-2026 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
15
15
 
16
- $FileInfo: catfile_py3.py - Last Update: 2/6/2026 Ver. 0.28.4 RC 1 - Author: cooldude2k $
16
+ $FileInfo: catfile_py3.py - Last Update: 2/6/2026 Ver. 0.28.6 RC 1 - Author: cooldude2k $
17
17
  '''
18
18
 
19
19
  from __future__ import annotations
@@ -378,10 +378,11 @@ def main(argv: Optional[list[str]] = None) -> int:
378
378
  0,
379
379
  getargs.skipchecksum,
380
380
  fnamedict,
381
- getargs.verbose,
381
+ getargs.insecretkey,
382
382
  getargs.preserve,
383
383
  getargs.preserve,
384
384
  False,
385
+ getargs.verbose,
385
386
  False,
386
387
  )
387
388
 
@@ -14,7 +14,7 @@
14
14
  Copyright 2018-2026 Game Maker 2k - http://intdb.sourceforge.net/
15
15
  Copyright 2018-2026 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
16
16
 
17
- $FileInfo: pycatfile.py - Last Update: 2/6/2026 Ver. 0.28.4 RC 1 - Author: cooldude2k $
17
+ $FileInfo: pycatfile.py - Last Update: 2/4/2026 Ver. 0.28.2 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
@@ -661,12 +661,12 @@ __project__ = __program_name__
661
661
  __program_alt_name__ = __program_name__
662
662
  __project_url__ = "https://github.com/GameMaker2k/PyCatFile"
663
663
  __project_release_url__ = __project_url__+"/releases/latest"
664
- __version_info__ = (0, 28, 4, "RC 1", 1)
665
- __version_date_info__ = (2026, 2, 6, "RC 1", 1)
664
+ __version_info__ = (0, 28, 2, "RC 1", 1)
665
+ __version_date_info__ = (2026, 2, 4, "RC 1", 1)
666
666
  __version_date__ = str(__version_date_info__[0]) + "." + str(
667
667
  __version_date_info__[1]).zfill(2) + "." + str(__version_date_info__[2]).zfill(2)
668
668
  __revision__ = __version_info__[3]
669
- __revision_id__ = "$Id: a87c7aadb79d3eebf05d8e955d7294c74e99a96e $"
669
+ __revision_id__ = "$Id: f8886b7c437cd32b61d83c2d05b30b03e0e152bc $"
670
670
  if(__version_info__[4] is not None):
671
671
  __version_date_plusrc__ = __version_date__ + \
672
672
  "-" + str(__version_date_info__[4])
@@ -11419,238 +11419,250 @@ def UnPackCatFile(infile, outdir=None, followlink=False, filestart=0, seekstart=
11419
11419
  else:
11420
11420
  if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not (sys.version_info[0] >= 3 and isinstance(infile, bytes))):
11421
11421
  infile = RemoveWindowsPath(infile)
11422
- listarrayfiles = CatFileToArray(infile, "auto", filestart, seekstart, seekend, False, True, True, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
11423
- if(not listarrayfiles):
11422
+ listarrayfiles = ArchiveFileToArray(infile, "auto", filestart, seekstart, seekend, False, True, True, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
11423
+ if(not listarrayfilespre):
11424
11424
  return False
11425
- lenlist = len(listarrayfiles['ffilelist'])
11426
- fnumfiles = int(listarrayfiles['fnumfiles'])
11427
- lcfi = 0
11428
- lcfx = int(listarrayfiles['fnumfiles'])
11429
- if(lenlist > listarrayfiles['fnumfiles'] or lenlist < listarrayfiles['fnumfiles']):
11430
- lcfx = int(lenlist)
11431
- else:
11425
+ if(not isinstance(listarrayfilespre, list)):
11426
+ listarrayfilespre = [listarrayfilespre]
11427
+ fplist = []
11428
+ if os.path.exists(outdir) and os.path.isdir(outdir):
11429
+ pass
11430
+ elif os.path.exists(outdir) and os.path.isdir(outdir):
11431
+ return False
11432
+ elif not os.path.exists(outdir):
11433
+ os.makedirs(outdir)
11434
+ for listarrayfiles in listarrayfilespre:
11435
+ lenlist = len(listarrayfiles['ffilelist'])
11436
+ fnumfiles = int(listarrayfiles['fnumfiles'])
11437
+ lcfi = 0
11432
11438
  lcfx = int(listarrayfiles['fnumfiles'])
11433
- while(lcfi < lcfx):
11434
- funame = ""
11435
- try:
11436
- import pwd
11437
- try:
11438
- userinfo = pwd.getpwuid(
11439
- listarrayfiles['ffilelist'][lcfi]['fuid'])
11440
- funame = userinfo.pw_name
11441
- except KeyError:
11442
- funame = ""
11443
- except ImportError:
11439
+ if(lenlist > listarrayfiles['fnumfiles'] or lenlist < listarrayfiles['fnumfiles']):
11440
+ lcfx = int(lenlist)
11441
+ else:
11442
+ lcfx = int(listarrayfiles['fnumfiles'])
11443
+ while(lcfi < lcfx):
11444
11444
  funame = ""
11445
- fgname = ""
11446
- try:
11447
- import grp
11448
11445
  try:
11449
- groupinfo = grp.getgrgid(
11450
- listarrayfiles['ffilelist'][lcfi]['fgid'])
11451
- fgname = groupinfo.gr_name
11452
- except KeyError:
11453
- fgname = ""
11454
- except ImportError:
11455
- fgname = ""
11456
- if(verbose):
11457
- VerbosePrintOut(PrependPath(
11458
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11459
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 0 or listarrayfiles['ffilelist'][lcfi]['ftype'] == 7):
11460
- with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
11461
- if(not listarrayfiles['ffilelist'][lcfi]['fcontentasfile']):
11462
- listarrayfiles['ffilelist'][lcfi]['fcontents'] = MkTempFile(
11463
- listarrayfiles['ffilelist'][lcfi]['fcontents'])
11464
- listarrayfiles['ffilelist'][lcfi]['fcontents'].seek(0, 0)
11465
- shutil.copyfileobj(
11466
- listarrayfiles['ffilelist'][lcfi]['fcontents'], fpc, length=__filebuff_size__)
11446
+ import pwd
11467
11447
  try:
11468
- fpc.flush()
11469
- if(hasattr(os, "sync")):
11470
- os.fsync(fpc.fileno())
11471
- except (io.UnsupportedOperation, AttributeError, OSError):
11472
- pass
11473
- if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
11474
- os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
11475
- listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
11476
- if(preservepermissions):
11477
- os.chmod(PrependPath(
11478
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11479
- if(preservetime):
11480
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11481
- listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
11482
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 1):
11483
- if(followlink):
11484
- getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
11485
- flinkid = prelistarrayfiles['filetoid'][getflinkpath]
11486
- flinkinfo = listarrayfiles['ffilelist'][flinkid]
11448
+ userinfo = pwd.getpwuid(
11449
+ listarrayfiles['ffilelist'][lcfi]['fuid'])
11450
+ funame = userinfo.pw_name
11451
+ except KeyError:
11452
+ funame = ""
11453
+ except ImportError:
11487
11454
  funame = ""
11455
+ fgname = ""
11456
+ try:
11457
+ import grp
11488
11458
  try:
11489
- import pwd
11459
+ groupinfo = grp.getgrgid(
11460
+ listarrayfiles['ffilelist'][lcfi]['fgid'])
11461
+ fgname = groupinfo.gr_name
11462
+ except KeyError:
11463
+ fgname = ""
11464
+ except ImportError:
11465
+ fgname = ""
11466
+ if(verbose):
11467
+ VerbosePrintOut(PrependPath(
11468
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11469
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 0 or listarrayfiles['ffilelist'][lcfi]['ftype'] == 7):
11470
+ with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
11471
+ if(not listarrayfiles['ffilelist'][lcfi]['fcontentasfile']):
11472
+ listarrayfiles['ffilelist'][lcfi]['fcontents'] = MkTempFile(
11473
+ listarrayfiles['ffilelist'][lcfi]['fcontents'])
11474
+ listarrayfiles['ffilelist'][lcfi]['fcontents'].seek(0, 0)
11475
+ shutil.copyfileobj(
11476
+ listarrayfiles['ffilelist'][lcfi]['fcontents'], fpc, length=__filebuff_size__)
11490
11477
  try:
11491
- userinfo = pwd.getpwuid(flinkinfo['fuid'])
11492
- funame = userinfo.pw_name
11493
- except KeyError:
11494
- funame = ""
11495
- except ImportError:
11478
+ fpc.flush()
11479
+ if(hasattr(os, "sync")):
11480
+ os.fsync(fpc.fileno())
11481
+ except (io.UnsupportedOperation, AttributeError, OSError):
11482
+ pass
11483
+ if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
11484
+ os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
11485
+ listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
11486
+ if(preservepermissions):
11487
+ os.chmod(PrependPath(
11488
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11489
+ if(preservetime):
11490
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11491
+ listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
11492
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 1):
11493
+ if(followlink):
11494
+ getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
11495
+ flinkid = prelistarrayfiles['filetoid'][getflinkpath]
11496
+ flinkinfo = listarrayfiles['ffilelist'][flinkid]
11496
11497
  funame = ""
11497
- fgname = ""
11498
- try:
11499
- import grp
11500
11498
  try:
11501
- groupinfo = grp.getgrgid(flinkinfo['fgid'])
11502
- fgname = groupinfo.gr_name
11503
- except KeyError:
11504
- fgname = ""
11505
- except ImportError:
11499
+ import pwd
11500
+ try:
11501
+ userinfo = pwd.getpwuid(flinkinfo['fuid'])
11502
+ funame = userinfo.pw_name
11503
+ except KeyError:
11504
+ funame = ""
11505
+ except ImportError:
11506
+ funame = ""
11506
11507
  fgname = ""
11507
- if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
11508
- with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
11509
- if(not flinkinfo['fcontentasfile']):
11510
- flinkinfo['fcontents'] = MkTempFile(
11511
- flinkinfo['fcontents'])
11512
- flinkinfo['fcontents'].seek(0, 0)
11513
- shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
11508
+ try:
11509
+ import grp
11514
11510
  try:
11515
- fpc.flush()
11516
- if(hasattr(os, "sync")):
11517
- os.fsync(fpc.fileno())
11518
- except (io.UnsupportedOperation, AttributeError, OSError):
11519
- pass
11520
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11521
- os.chown(PrependPath(
11522
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11523
- if(preservepermissions):
11524
- os.chmod(PrependPath(
11525
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11526
- if(preservetime):
11527
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11528
- flinkinfo['fatime'], flinkinfo['fmtime']))
11529
- if(flinkinfo['ftype'] == 1):
11530
- os.link(flinkinfo['flinkname'], PrependPath(
11531
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11532
- if(flinkinfo['ftype'] == 2):
11533
- os.symlink(flinkinfo['flinkname'], PrependPath(
11534
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11535
- if(flinkinfo['ftype'] == 5):
11536
- if(preservepermissions):
11537
- os.mkdir(PrependPath(
11538
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11539
- else:
11540
- os.mkdir(PrependPath(
11511
+ groupinfo = grp.getgrgid(flinkinfo['fgid'])
11512
+ fgname = groupinfo.gr_name
11513
+ except KeyError:
11514
+ fgname = ""
11515
+ except ImportError:
11516
+ fgname = ""
11517
+ if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
11518
+ with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
11519
+ if(not flinkinfo['fcontentasfile']):
11520
+ flinkinfo['fcontents'] = MkTempFile(
11521
+ flinkinfo['fcontents'])
11522
+ flinkinfo['fcontents'].seek(0, 0)
11523
+ shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
11524
+ try:
11525
+ fpc.flush()
11526
+ if(hasattr(os, "sync")):
11527
+ os.fsync(fpc.fileno())
11528
+ except (io.UnsupportedOperation, AttributeError, OSError):
11529
+ pass
11530
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11531
+ os.chown(PrependPath(
11532
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11533
+ if(preservepermissions):
11534
+ os.chmod(PrependPath(
11535
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11536
+ if(preservetime):
11537
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11538
+ flinkinfo['fatime'], flinkinfo['fmtime']))
11539
+ if(flinkinfo['ftype'] == 1):
11540
+ os.link(flinkinfo['flinkname'], PrependPath(
11541
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11542
+ if(flinkinfo['ftype'] == 2):
11543
+ os.symlink(flinkinfo['flinkname'], PrependPath(
11541
11544
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11542
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11543
- os.chown(PrependPath(
11544
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11545
- if(preservepermissions):
11546
- os.chmod(PrependPath(
11545
+ if(flinkinfo['ftype'] == 5):
11546
+ if(preservepermissions):
11547
+ os.mkdir(PrependPath(
11548
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11549
+ else:
11550
+ os.mkdir(PrependPath(
11551
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11552
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11553
+ os.chown(PrependPath(
11554
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11555
+ if(preservepermissions):
11556
+ os.chmod(PrependPath(
11557
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11558
+ if(preservetime):
11559
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11560
+ flinkinfo['fatime'], flinkinfo['fmtime']))
11561
+ if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
11562
+ os.mkfifo(PrependPath(
11547
11563
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11548
- if(preservetime):
11549
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11550
- flinkinfo['fatime'], flinkinfo['fmtime']))
11551
- if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
11552
- os.mkfifo(PrependPath(
11553
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11554
- else:
11555
- os.link(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
11556
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11557
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 2):
11558
- if(followlink):
11559
- getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
11560
- flinkid = prelistarrayfiles['filetoid'][getflinkpath]
11561
- flinkinfo = listarrayfiles['ffilelist'][flinkid]
11562
- funame = ""
11563
- try:
11564
- import pwd
11565
- try:
11566
- userinfo = pwd.getpwuid(flinkinfo['fuid'])
11567
- funame = userinfo.pw_name
11568
- except KeyError:
11569
- funame = ""
11570
- except ImportError:
11564
+ else:
11565
+ os.link(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
11566
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11567
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 2):
11568
+ if(followlink):
11569
+ getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
11570
+ flinkid = prelistarrayfiles['filetoid'][getflinkpath]
11571
+ flinkinfo = listarrayfiles['ffilelist'][flinkid]
11571
11572
  funame = ""
11572
- fgname = ""
11573
- try:
11574
- import grp
11575
11573
  try:
11576
- groupinfo = grp.getgrgid(flinkinfo['fgid'])
11577
- fgname = groupinfo.gr_name
11578
- except KeyError:
11579
- fgname = ""
11580
- except ImportError:
11574
+ import pwd
11575
+ try:
11576
+ userinfo = pwd.getpwuid(flinkinfo['fuid'])
11577
+ funame = userinfo.pw_name
11578
+ except KeyError:
11579
+ funame = ""
11580
+ except ImportError:
11581
+ funame = ""
11581
11582
  fgname = ""
11582
- if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
11583
- with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
11584
- if(not flinkinfo['fcontentasfile']):
11585
- flinkinfo['fcontents'] = MkTempFile(
11586
- flinkinfo['fcontents'])
11587
- flinkinfo['fcontents'].seek(0, 0)
11588
- shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
11583
+ try:
11584
+ import grp
11589
11585
  try:
11590
- fpc.flush()
11591
- if(hasattr(os, "sync")):
11592
- os.fsync(fpc.fileno())
11593
- except (io.UnsupportedOperation, AttributeError, OSError):
11594
- pass
11595
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11596
- os.chown(PrependPath(
11597
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11598
- if(preservepermissions):
11599
- os.chmod(PrependPath(
11586
+ groupinfo = grp.getgrgid(flinkinfo['fgid'])
11587
+ fgname = groupinfo.gr_name
11588
+ except KeyError:
11589
+ fgname = ""
11590
+ except ImportError:
11591
+ fgname = ""
11592
+ if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
11593
+ with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
11594
+ if(not flinkinfo['fcontentasfile']):
11595
+ flinkinfo['fcontents'] = MkTempFile(
11596
+ flinkinfo['fcontents'])
11597
+ flinkinfo['fcontents'].seek(0, 0)
11598
+ shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
11599
+ try:
11600
+ fpc.flush()
11601
+ if(hasattr(os, "sync")):
11602
+ os.fsync(fpc.fileno())
11603
+ except (io.UnsupportedOperation, AttributeError, OSError):
11604
+ pass
11605
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11606
+ os.chown(PrependPath(
11607
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11608
+ if(preservepermissions):
11609
+ os.chmod(PrependPath(
11610
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11611
+ if(preservetime):
11612
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11613
+ flinkinfo['fatime'], flinkinfo['fmtime']))
11614
+ if(flinkinfo['ftype'] == 1):
11615
+ os.link(flinkinfo['flinkname'], PrependPath(
11616
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11617
+ if(flinkinfo['ftype'] == 2):
11618
+ os.symlink(flinkinfo['flinkname'], PrependPath(
11619
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11620
+ if(flinkinfo['ftype'] == 5):
11621
+ if(preservepermissions):
11622
+ os.mkdir(PrependPath(
11623
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11624
+ else:
11625
+ os.mkdir(PrependPath(
11626
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11627
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11628
+ os.chown(PrependPath(
11629
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11630
+ if(preservepermissions):
11631
+ os.chmod(PrependPath(
11632
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11633
+ if(preservetime):
11634
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11635
+ flinkinfo['fatime'], flinkinfo['fmtime']))
11636
+ if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
11637
+ os.mkfifo(PrependPath(
11600
11638
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11601
- if(preservetime):
11602
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11603
- flinkinfo['fatime'], flinkinfo['fmtime']))
11604
- if(flinkinfo['ftype'] == 1):
11605
- os.link(flinkinfo['flinkname'], PrependPath(
11639
+ else:
11640
+ os.symlink(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
11606
11641
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11607
- if(flinkinfo['ftype'] == 2):
11608
- os.symlink(flinkinfo['flinkname'], PrependPath(
11642
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 5):
11643
+ if(preservepermissions):
11644
+ os.mkdir(PrependPath(
11645
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11646
+ else:
11647
+ os.mkdir(PrependPath(
11609
11648
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11610
- if(flinkinfo['ftype'] == 5):
11611
- if(preservepermissions):
11612
- os.mkdir(PrependPath(
11613
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11614
- else:
11615
- os.mkdir(PrependPath(
11616
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11617
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
11618
- os.chown(PrependPath(
11619
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
11620
- if(preservepermissions):
11621
- os.chmod(PrependPath(
11622
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11623
- if(preservetime):
11624
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11625
- flinkinfo['fatime'], flinkinfo['fmtime']))
11626
- if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
11627
- os.mkfifo(PrependPath(
11628
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
11629
- else:
11630
- os.symlink(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
11631
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11632
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 5):
11633
- if(preservepermissions):
11634
- os.mkdir(PrependPath(
11635
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11636
- else:
11637
- os.mkdir(PrependPath(
11638
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
11639
- if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
11640
- os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
11641
- listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
11642
- if(preservepermissions):
11643
- os.chmod(PrependPath(
11649
+ if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
11650
+ os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
11651
+ listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
11652
+ if(preservepermissions):
11653
+ os.chmod(PrependPath(
11654
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11655
+ if(preservetime):
11656
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11657
+ listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
11658
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 6 and hasattr(os, "mkfifo")):
11659
+ os.mkfifo(PrependPath(
11644
11660
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11645
- if(preservetime):
11646
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
11647
- listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
11648
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 6 and hasattr(os, "mkfifo")):
11649
- os.mkfifo(PrependPath(
11650
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
11651
- lcfi = lcfi + 1
11661
+ if(returnfp):
11662
+ fplist.append(listarrayfiles['ffilelist'][lcfi]['fp'])
11663
+ lcfi = lcfi + 1
11652
11664
  if(returnfp):
11653
- return listarrayfiles['ffilelist']['fp']
11665
+ return fplist
11654
11666
  else:
11655
11667
  return True
11656
11668
 
@@ -14,7 +14,7 @@
14
14
  Copyright 2018-2026 Game Maker 2k - http://intdb.sourceforge.net/
15
15
  Copyright 2018-2026 Kazuki Przyborowski - https://github.com/KazukiPrzyborowski
16
16
 
17
- $FileInfo: pycatfile.py - Last Update: 2/6/2026 Ver. 0.28.4 RC 1 - Author: cooldude2k $
17
+ $FileInfo: pycatfile.py - Last Update: 2/6/2026 Ver. 0.28.6 RC 1 - Author: cooldude2k $
18
18
  '''
19
19
 
20
20
  import io
@@ -699,12 +699,12 @@ __project__ = __program_name__
699
699
  __program_alt_name__ = __program_name__
700
700
  __project_url__ = "https://github.com/GameMaker2k/PyCatFile"
701
701
  __project_release_url__ = __project_url__+"/releases/latest"
702
- __version_info__ = (0, 28, 4, "RC 1", 1)
702
+ __version_info__ = (0, 28, 6, "RC 1", 1)
703
703
  __version_date_info__ = (2026, 2, 6, "RC 1", 1)
704
704
  __version_date__ = str(__version_date_info__[0]) + "." + str(
705
705
  __version_date_info__[1]).zfill(2) + "." + str(__version_date_info__[2]).zfill(2)
706
706
  __revision__ = __version_info__[3]
707
- __revision_id__ = "$Id: 4b086b80d2e6455232a175c7074886caa6d1dff4 $"
707
+ __revision_id__ = "$Id: 28cf85ee56dff68917635a26b6aa12cbe5e348e2 $"
708
708
  if(__version_info__[4] is not None):
709
709
  __version_date_plusrc__ = __version_date__ + \
710
710
  "-" + str(__version_date_info__[4])
@@ -10682,242 +10682,254 @@ def UnPackCatFile(infile, outdir=None, followlink=False, filestart=0, seekstart=
10682
10682
  if(outdir is not None):
10683
10683
  outdir = RemoveWindowsPath(outdir)
10684
10684
  if(isinstance(infile, dict)):
10685
- listarrayfiles = infile
10685
+ listarrayfilespre = infile
10686
10686
  else:
10687
10687
  if(infile != "-" and not hasattr(infile, "read") and not hasattr(infile, "write") and not (sys.version_info[0] >= 3 and isinstance(infile, bytes))):
10688
10688
  infile = RemoveWindowsPath(infile)
10689
- listarrayfiles = CatFileToArray(infile, "auto", filestart, seekstart, seekend, False, True, True, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
10690
- if(not listarrayfiles):
10689
+ listarrayfilespre = ArchiveFileToArray(infile, "auto", filestart, seekstart, seekend, False, True, True, skipchecksum, formatspecs, saltkey, seektoend, returnfp)
10690
+ if(not listarrayfilespre):
10691
10691
  return False
10692
- lenlist = len(listarrayfiles['ffilelist'])
10693
- fnumfiles = int(listarrayfiles['fnumfiles'])
10694
- lcfi = 0
10695
- lcfx = int(listarrayfiles['fnumfiles'])
10696
- if(lenlist > listarrayfiles['fnumfiles'] or lenlist < listarrayfiles['fnumfiles']):
10697
- lcfx = int(lenlist)
10698
- else:
10692
+ if(not isinstance(listarrayfilespre, list)):
10693
+ listarrayfilespre = [listarrayfilespre]
10694
+ fplist = []
10695
+ if os.path.exists(outdir) and os.path.isdir(outdir):
10696
+ pass
10697
+ elif os.path.exists(outdir) and os.path.isdir(outdir):
10698
+ return False
10699
+ elif not os.path.exists(outdir):
10700
+ os.makedirs(outdir)
10701
+ for listarrayfiles in listarrayfilespre:
10702
+ lenlist = len(listarrayfiles['ffilelist'])
10703
+ fnumfiles = int(listarrayfiles['fnumfiles'])
10704
+ lcfi = 0
10699
10705
  lcfx = int(listarrayfiles['fnumfiles'])
10700
- while(lcfi < lcfx):
10701
- funame = ""
10702
- try:
10703
- import pwd
10704
- try:
10705
- userinfo = pwd.getpwuid(
10706
- listarrayfiles['ffilelist'][lcfi]['fuid'])
10707
- funame = userinfo.pw_name
10708
- except KeyError:
10709
- funame = ""
10710
- except ImportError:
10706
+ if(lenlist > listarrayfiles['fnumfiles'] or lenlist < listarrayfiles['fnumfiles']):
10707
+ lcfx = int(lenlist)
10708
+ else:
10709
+ lcfx = int(listarrayfiles['fnumfiles'])
10710
+ while(lcfi < lcfx):
10711
10711
  funame = ""
10712
- fgname = ""
10713
- try:
10714
- import grp
10715
10712
  try:
10716
- groupinfo = grp.getgrgid(
10717
- listarrayfiles['ffilelist'][lcfi]['fgid'])
10718
- fgname = groupinfo.gr_name
10719
- except KeyError:
10720
- fgname = ""
10721
- except ImportError:
10722
- fgname = ""
10723
- if(verbose):
10724
- VerbosePrintOut(PrependPath(
10725
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10726
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 0 or listarrayfiles['ffilelist'][lcfi]['ftype'] == 7):
10727
- with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
10728
- if(not listarrayfiles['ffilelist'][lcfi]['fcontentasfile']):
10729
- listarrayfiles['ffilelist'][lcfi]['fcontents'] = MkTempFile(
10730
- listarrayfiles['ffilelist'][lcfi]['fcontents'])
10731
- listarrayfiles['ffilelist'][lcfi]['fcontents'].seek(0, 0)
10732
- shutil.copyfileobj(
10733
- listarrayfiles['ffilelist'][lcfi]['fcontents'], fpc, length=__filebuff_size__)
10713
+ import pwd
10734
10714
  try:
10735
- fpc.flush()
10736
- if(hasattr(os, "sync")):
10737
- os.fsync(fpc.fileno())
10738
- except (io.UnsupportedOperation, AttributeError, OSError):
10739
- pass
10740
- if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
10741
- os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
10742
- listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
10743
- if(preservepermissions):
10744
- os.chmod(PrependPath(
10745
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10746
- if(preservetime):
10747
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10748
- listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
10749
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 1):
10750
- if(followlink):
10751
- getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
10752
- flinkid = prelistarrayfiles['filetoid'][getflinkpath]
10753
- flinkinfo = listarrayfiles['ffilelist'][flinkid]
10715
+ userinfo = pwd.getpwuid(
10716
+ listarrayfiles['ffilelist'][lcfi]['fuid'])
10717
+ funame = userinfo.pw_name
10718
+ except KeyError:
10719
+ funame = ""
10720
+ except ImportError:
10754
10721
  funame = ""
10722
+ fgname = ""
10723
+ try:
10724
+ import grp
10755
10725
  try:
10756
- import pwd
10726
+ groupinfo = grp.getgrgid(
10727
+ listarrayfiles['ffilelist'][lcfi]['fgid'])
10728
+ fgname = groupinfo.gr_name
10729
+ except KeyError:
10730
+ fgname = ""
10731
+ except ImportError:
10732
+ fgname = ""
10733
+ if(verbose):
10734
+ VerbosePrintOut(PrependPath(
10735
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10736
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 0 or listarrayfiles['ffilelist'][lcfi]['ftype'] == 7):
10737
+ with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
10738
+ if(not listarrayfiles['ffilelist'][lcfi]['fcontentasfile']):
10739
+ listarrayfiles['ffilelist'][lcfi]['fcontents'] = MkTempFile(
10740
+ listarrayfiles['ffilelist'][lcfi]['fcontents'])
10741
+ listarrayfiles['ffilelist'][lcfi]['fcontents'].seek(0, 0)
10742
+ shutil.copyfileobj(
10743
+ listarrayfiles['ffilelist'][lcfi]['fcontents'], fpc, length=__filebuff_size__)
10757
10744
  try:
10758
- userinfo = pwd.getpwuid(flinkinfo['fuid'])
10759
- funame = userinfo.pw_name
10760
- except KeyError:
10761
- funame = ""
10762
- except ImportError:
10745
+ fpc.flush()
10746
+ if(hasattr(os, "sync")):
10747
+ os.fsync(fpc.fileno())
10748
+ except (io.UnsupportedOperation, AttributeError, OSError):
10749
+ pass
10750
+ if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
10751
+ os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
10752
+ listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
10753
+ if(preservepermissions):
10754
+ os.chmod(PrependPath(
10755
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10756
+ if(preservetime):
10757
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10758
+ listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
10759
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 1):
10760
+ if(followlink):
10761
+ getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
10762
+ flinkid = prelistarrayfiles['filetoid'][getflinkpath]
10763
+ flinkinfo = listarrayfiles['ffilelist'][flinkid]
10763
10764
  funame = ""
10764
- fgname = ""
10765
- try:
10766
- import grp
10767
10765
  try:
10768
- groupinfo = grp.getgrgid(flinkinfo['fgid'])
10769
- fgname = groupinfo.gr_name
10770
- except KeyError:
10771
- fgname = ""
10772
- except ImportError:
10766
+ import pwd
10767
+ try:
10768
+ userinfo = pwd.getpwuid(flinkinfo['fuid'])
10769
+ funame = userinfo.pw_name
10770
+ except KeyError:
10771
+ funame = ""
10772
+ except ImportError:
10773
+ funame = ""
10773
10774
  fgname = ""
10774
- if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
10775
- with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
10776
- if(not flinkinfo['fcontentasfile']):
10777
- flinkinfo['fcontents'] = MkTempFile(
10778
- flinkinfo['fcontents'])
10779
- flinkinfo['fcontents'].seek(0, 0)
10780
- shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
10775
+ try:
10776
+ import grp
10781
10777
  try:
10782
- fpc.flush()
10783
- if(hasattr(os, "sync")):
10784
- os.fsync(fpc.fileno())
10785
- except (io.UnsupportedOperation, AttributeError, OSError):
10786
- pass
10787
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10788
- os.chown(PrependPath(
10789
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10790
- if(preservepermissions):
10791
- os.chmod(PrependPath(
10792
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10793
- if(preservetime):
10794
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10795
- flinkinfo['fatime'], flinkinfo['fmtime']))
10796
- if(flinkinfo['ftype'] == 1):
10797
- os.link(flinkinfo['flinkname'], PrependPath(
10798
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10799
- if(flinkinfo['ftype'] == 2):
10800
- os.symlink(flinkinfo['flinkname'], PrependPath(
10801
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10802
- if(flinkinfo['ftype'] == 5):
10803
- if(preservepermissions):
10804
- os.mkdir(PrependPath(
10805
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10806
- else:
10807
- os.mkdir(PrependPath(
10778
+ groupinfo = grp.getgrgid(flinkinfo['fgid'])
10779
+ fgname = groupinfo.gr_name
10780
+ except KeyError:
10781
+ fgname = ""
10782
+ except ImportError:
10783
+ fgname = ""
10784
+ if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
10785
+ with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
10786
+ if(not flinkinfo['fcontentasfile']):
10787
+ flinkinfo['fcontents'] = MkTempFile(
10788
+ flinkinfo['fcontents'])
10789
+ flinkinfo['fcontents'].seek(0, 0)
10790
+ shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
10791
+ try:
10792
+ fpc.flush()
10793
+ if(hasattr(os, "sync")):
10794
+ os.fsync(fpc.fileno())
10795
+ except (io.UnsupportedOperation, AttributeError, OSError):
10796
+ pass
10797
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10798
+ os.chown(PrependPath(
10799
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10800
+ if(preservepermissions):
10801
+ os.chmod(PrependPath(
10802
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10803
+ if(preservetime):
10804
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10805
+ flinkinfo['fatime'], flinkinfo['fmtime']))
10806
+ if(flinkinfo['ftype'] == 1):
10807
+ os.link(flinkinfo['flinkname'], PrependPath(
10808
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10809
+ if(flinkinfo['ftype'] == 2):
10810
+ os.symlink(flinkinfo['flinkname'], PrependPath(
10808
10811
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10809
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10810
- os.chown(PrependPath(
10811
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10812
- if(preservepermissions):
10813
- os.chmod(PrependPath(
10812
+ if(flinkinfo['ftype'] == 5):
10813
+ if(preservepermissions):
10814
+ os.mkdir(PrependPath(
10815
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10816
+ else:
10817
+ os.mkdir(PrependPath(
10818
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10819
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10820
+ os.chown(PrependPath(
10821
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10822
+ if(preservepermissions):
10823
+ os.chmod(PrependPath(
10824
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10825
+ if(preservetime):
10826
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10827
+ flinkinfo['fatime'], flinkinfo['fmtime']))
10828
+ if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
10829
+ os.mkfifo(PrependPath(
10814
10830
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10815
- if(preservetime):
10816
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10817
- flinkinfo['fatime'], flinkinfo['fmtime']))
10818
- if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
10819
- os.mkfifo(PrependPath(
10820
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10821
- else:
10822
- os.link(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
10823
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10824
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 2):
10825
- if(followlink):
10826
- getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
10827
- flinkid = prelistarrayfiles['filetoid'][getflinkpath]
10828
- flinkinfo = listarrayfiles['ffilelist'][flinkid]
10829
- funame = ""
10830
- try:
10831
- import pwd
10832
- try:
10833
- userinfo = pwd.getpwuid(flinkinfo['fuid'])
10834
- funame = userinfo.pw_name
10835
- except KeyError:
10836
- funame = ""
10837
- except ImportError:
10831
+ else:
10832
+ os.link(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
10833
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10834
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 2):
10835
+ if(followlink):
10836
+ getflinkpath = listarrayfiles['ffilelist'][lcfi]['flinkname']
10837
+ flinkid = prelistarrayfiles['filetoid'][getflinkpath]
10838
+ flinkinfo = listarrayfiles['ffilelist'][flinkid]
10838
10839
  funame = ""
10839
- fgname = ""
10840
- try:
10841
- import grp
10842
10840
  try:
10843
- groupinfo = grp.getgrgid(flinkinfo['fgid'])
10844
- fgname = groupinfo.gr_name
10845
- except KeyError:
10846
- fgname = ""
10847
- except ImportError:
10841
+ import pwd
10842
+ try:
10843
+ userinfo = pwd.getpwuid(flinkinfo['fuid'])
10844
+ funame = userinfo.pw_name
10845
+ except KeyError:
10846
+ funame = ""
10847
+ except ImportError:
10848
+ funame = ""
10848
10849
  fgname = ""
10849
- if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
10850
- with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
10851
- if(not flinkinfo['fcontentasfile']):
10852
- flinkinfo['fcontents'] = MkTempFile(
10853
- flinkinfo['fcontents'])
10854
- flinkinfo['fcontents'].seek(0, 0)
10855
- shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
10850
+ try:
10851
+ import grp
10856
10852
  try:
10857
- fpc.flush()
10858
- if(hasattr(os, "sync")):
10859
- os.fsync(fpc.fileno())
10860
- except (io.UnsupportedOperation, AttributeError, OSError):
10861
- pass
10862
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10863
- os.chown(PrependPath(
10864
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10865
- if(preservepermissions):
10866
- os.chmod(PrependPath(
10853
+ groupinfo = grp.getgrgid(flinkinfo['fgid'])
10854
+ fgname = groupinfo.gr_name
10855
+ except KeyError:
10856
+ fgname = ""
10857
+ except ImportError:
10858
+ fgname = ""
10859
+ if(flinkinfo['ftype'] == 0 or flinkinfo['ftype'] == 7):
10860
+ with open(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), "wb") as fpc:
10861
+ if(not flinkinfo['fcontentasfile']):
10862
+ flinkinfo['fcontents'] = MkTempFile(
10863
+ flinkinfo['fcontents'])
10864
+ flinkinfo['fcontents'].seek(0, 0)
10865
+ shutil.copyfileobj(flinkinfo['fcontents'], fpc, length=__filebuff_size__)
10866
+ try:
10867
+ fpc.flush()
10868
+ if(hasattr(os, "sync")):
10869
+ os.fsync(fpc.fileno())
10870
+ except (io.UnsupportedOperation, AttributeError, OSError):
10871
+ pass
10872
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10873
+ os.chown(PrependPath(
10874
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10875
+ if(preservepermissions):
10876
+ os.chmod(PrependPath(
10877
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10878
+ if(preservetime):
10879
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10880
+ flinkinfo['fatime'], flinkinfo['fmtime']))
10881
+ if(flinkinfo['ftype'] == 1):
10882
+ os.link(flinkinfo['flinkname'], PrependPath(
10883
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10884
+ if(flinkinfo['ftype'] == 2):
10885
+ os.symlink(flinkinfo['flinkname'], PrependPath(
10886
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10887
+ if(flinkinfo['ftype'] == 5):
10888
+ if(preservepermissions):
10889
+ os.mkdir(PrependPath(
10890
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10891
+ else:
10892
+ os.mkdir(PrependPath(
10893
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10894
+ if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10895
+ os.chown(PrependPath(
10896
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10897
+ if(preservepermissions):
10898
+ os.chmod(PrependPath(
10899
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10900
+ if(preservetime):
10901
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10902
+ flinkinfo['fatime'], flinkinfo['fmtime']))
10903
+ if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
10904
+ os.mkfifo(PrependPath(
10867
10905
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10868
- if(preservetime):
10869
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10870
- flinkinfo['fatime'], flinkinfo['fmtime']))
10871
- if(flinkinfo['ftype'] == 1):
10872
- os.link(flinkinfo['flinkname'], PrependPath(
10906
+ else:
10907
+ os.symlink(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
10873
10908
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10874
- if(flinkinfo['ftype'] == 2):
10875
- os.symlink(flinkinfo['flinkname'], PrependPath(
10909
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 5):
10910
+ if(preservepermissions):
10911
+ os.mkdir(PrependPath(
10912
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10913
+ else:
10914
+ os.mkdir(PrependPath(
10876
10915
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10877
- if(flinkinfo['ftype'] == 5):
10878
- if(preservepermissions):
10879
- os.mkdir(PrependPath(
10880
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10881
- else:
10882
- os.mkdir(PrependPath(
10883
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10884
- if(hasattr(os, "chown") and funame == flinkinfo['funame'] and fgname == flinkinfo['fgname'] and preservepermissions):
10885
- os.chown(PrependPath(
10886
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fuid'], flinkinfo['fgid'])
10887
- if(preservepermissions):
10888
- os.chmod(PrependPath(
10889
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10890
- if(preservetime):
10891
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10892
- flinkinfo['fatime'], flinkinfo['fmtime']))
10893
- if(flinkinfo['ftype'] == 6 and hasattr(os, "mkfifo")):
10894
- os.mkfifo(PrependPath(
10895
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), flinkinfo['fchmode'])
10896
- else:
10897
- os.symlink(listarrayfiles['ffilelist'][lcfi]['flinkname'], PrependPath(
10898
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10899
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 5):
10900
- if(preservepermissions):
10901
- os.mkdir(PrependPath(
10902
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10903
- else:
10904
- os.mkdir(PrependPath(
10905
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']))
10906
- if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
10907
- os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
10908
- listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
10909
- if(preservepermissions):
10910
- os.chmod(PrependPath(
10916
+ if(hasattr(os, "chown") and funame == listarrayfiles['ffilelist'][lcfi]['funame'] and fgname == listarrayfiles['ffilelist'][lcfi]['fgname'] and preservepermissions):
10917
+ os.chown(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']),
10918
+ listarrayfiles['ffilelist'][lcfi]['fuid'], listarrayfiles['ffilelist'][lcfi]['fgid'])
10919
+ if(preservepermissions):
10920
+ os.chmod(PrependPath(
10921
+ outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10922
+ if(preservetime):
10923
+ os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10924
+ listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
10925
+ if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 6 and hasattr(os, "mkfifo")):
10926
+ os.mkfifo(PrependPath(
10911
10927
  outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10912
- if(preservetime):
10913
- os.utime(PrependPath(outdir, listarrayfiles['ffilelist'][lcfi]['fname']), (
10914
- listarrayfiles['ffilelist'][lcfi]['fatime'], listarrayfiles['ffilelist'][lcfi]['fmtime']))
10915
- if(listarrayfiles['ffilelist'][lcfi]['ftype'] == 6 and hasattr(os, "mkfifo")):
10916
- os.mkfifo(PrependPath(
10917
- outdir, listarrayfiles['ffilelist'][lcfi]['fname']), listarrayfiles['ffilelist'][lcfi]['fchmode'])
10918
- lcfi = lcfi + 1
10928
+ if(returnfp):
10929
+ fplist.append(listarrayfiles['ffilelist'][lcfi]['fp'])
10930
+ lcfi = lcfi + 1
10919
10931
  if(returnfp):
10920
- return listarrayfiles['ffilelist']['fp']
10932
+ return fplist
10921
10933
  else:
10922
10934
  return True
10923
10935
 
@@ -11895,7 +11907,7 @@ __version_date_info__ = (2026, 1, 23, "RC 1", 1)
11895
11907
  __version_date__ = str(__version_date_info__[0])+"."+str(__version_date_info__[
11896
11908
  1]).zfill(2)+"."+str(__version_date_info__[2]).zfill(2)
11897
11909
  __revision__ = __version_info__[3]
11898
- __revision_id__ = "$Id: 4b086b80d2e6455232a175c7074886caa6d1dff4 $"
11910
+ __revision_id__ = "$Id: 28cf85ee56dff68917635a26b6aa12cbe5e348e2 $"
11899
11911
  if(__version_info__[4] is not None):
11900
11912
  __version_date_plusrc__ = __version_date__ + \
11901
11913
  "-"+str(__version_date_info__[4])
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "PyCatFile"
3
- version = "0.28.4"
3
+ version = "0.28.6"
4
4
  readme = "README.md"
5
5
  license = { text = "BSD-3-Clause" }
6
6
  keywords = []
File without changes
File without changes
File without changes
File without changes