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