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