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.
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/PKG-INFO +1 -1
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/PyFoxFile.egg-info/PKG-INFO +1 -1
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/foxfile.py +2 -2
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/foxfile_py3.py +3 -2
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/pyfoxfile.py +225 -213
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/pyfoxfile_py3.py +226 -214
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/pyproject.toml +1 -1
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/setup.py +1 -1
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/LICENSE +0 -0
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/PyFoxFile.egg-info/SOURCES.txt +0 -0
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/PyFoxFile.egg-info/dependency_links.txt +0 -0
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/PyFoxFile.egg-info/top_level.txt +0 -0
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/PyFoxFile.egg-info/zip-safe +0 -0
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/README.md +0 -0
- {pyfoxfile-0.28.4 → pyfoxfile-0.28.6}/setup.cfg +0 -0
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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/
|
|
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,
|
|
666
|
-
__version_date_info__ = (2026, 2,
|
|
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:
|
|
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 =
|
|
11424
|
-
if(not
|
|
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
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11430
|
-
|
|
11431
|
-
|
|
11432
|
-
|
|
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
|
-
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11438
|
-
|
|
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
|
-
|
|
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
|
-
|
|
11470
|
-
|
|
11471
|
-
|
|
11472
|
-
except
|
|
11473
|
-
|
|
11474
|
-
|
|
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
|
-
|
|
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
|
-
|
|
11493
|
-
|
|
11494
|
-
|
|
11495
|
-
|
|
11496
|
-
|
|
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
|
-
|
|
11503
|
-
|
|
11504
|
-
|
|
11505
|
-
|
|
11506
|
-
|
|
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
|
-
|
|
11509
|
-
|
|
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
|
-
|
|
11517
|
-
|
|
11518
|
-
|
|
11519
|
-
|
|
11520
|
-
|
|
11521
|
-
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
|
|
11525
|
-
|
|
11526
|
-
|
|
11527
|
-
|
|
11528
|
-
|
|
11529
|
-
|
|
11530
|
-
|
|
11531
|
-
|
|
11532
|
-
|
|
11533
|
-
|
|
11534
|
-
|
|
11535
|
-
|
|
11536
|
-
|
|
11537
|
-
|
|
11538
|
-
|
|
11539
|
-
|
|
11540
|
-
|
|
11541
|
-
|
|
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(
|
|
11544
|
-
|
|
11545
|
-
|
|
11546
|
-
|
|
11547
|
-
|
|
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
|
-
|
|
11550
|
-
|
|
11551
|
-
|
|
11552
|
-
|
|
11553
|
-
|
|
11554
|
-
|
|
11555
|
-
|
|
11556
|
-
|
|
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
|
-
|
|
11578
|
-
|
|
11579
|
-
|
|
11580
|
-
|
|
11581
|
-
|
|
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
|
-
|
|
11584
|
-
|
|
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
|
-
|
|
11592
|
-
|
|
11593
|
-
|
|
11594
|
-
|
|
11595
|
-
|
|
11596
|
-
|
|
11597
|
-
|
|
11598
|
-
|
|
11599
|
-
|
|
11600
|
-
|
|
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
|
-
|
|
11603
|
-
|
|
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
|
-
|
|
11609
|
-
|
|
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(
|
|
11612
|
-
|
|
11613
|
-
|
|
11614
|
-
|
|
11615
|
-
|
|
11616
|
-
|
|
11617
|
-
|
|
11618
|
-
|
|
11619
|
-
|
|
11620
|
-
|
|
11621
|
-
|
|
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(
|
|
11647
|
-
|
|
11648
|
-
|
|
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
|
|
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.
|
|
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,
|
|
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:
|
|
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
|
-
|
|
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
|
-
|
|
10691
|
-
if(not
|
|
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
|
-
|
|
10694
|
-
|
|
10695
|
-
|
|
10696
|
-
|
|
10697
|
-
|
|
10698
|
-
|
|
10699
|
-
|
|
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
|
-
|
|
10702
|
-
|
|
10703
|
-
|
|
10704
|
-
|
|
10705
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10737
|
-
|
|
10738
|
-
|
|
10739
|
-
except
|
|
10740
|
-
|
|
10741
|
-
|
|
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
|
-
|
|
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
|
-
|
|
10760
|
-
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
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
|
-
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
|
|
10773
|
-
|
|
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
|
-
|
|
10776
|
-
|
|
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
|
-
|
|
10784
|
-
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
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(
|
|
10811
|
-
|
|
10812
|
-
|
|
10813
|
-
|
|
10814
|
-
|
|
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
|
-
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
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
|
-
|
|
10845
|
-
|
|
10846
|
-
|
|
10847
|
-
|
|
10848
|
-
|
|
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
|
-
|
|
10851
|
-
|
|
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
|
-
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
10862
|
-
|
|
10863
|
-
|
|
10864
|
-
|
|
10865
|
-
|
|
10866
|
-
|
|
10867
|
-
|
|
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
|
-
|
|
10870
|
-
|
|
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
|
-
|
|
10876
|
-
|
|
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(
|
|
10879
|
-
|
|
10880
|
-
|
|
10881
|
-
|
|
10882
|
-
|
|
10883
|
-
|
|
10884
|
-
|
|
10885
|
-
|
|
10886
|
-
|
|
10887
|
-
|
|
10888
|
-
|
|
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(
|
|
10914
|
-
|
|
10915
|
-
|
|
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
|
|
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:
|
|
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])
|
|
@@ -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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|