37 lines
1.1 KiB
Python
37 lines
1.1 KiB
Python
|
#!/usr/bin/env python
|
||
|
# pack.py - pack files into a Parallel Realities Starfighter .pak file
|
||
|
# Copyright (C) 2006 Josh Triplett <josh@freedesktop.org
|
||
|
#
|
||
|
# This program is free software; you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License as published by
|
||
|
# the Free Software Foundation; version 2 of the License only.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful,
|
||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
|
# GNU General Public License for more details.
|
||
|
|
||
|
import struct, sys
|
||
|
|
||
|
def pack(pak, files):
|
||
|
pak.write("PACK")
|
||
|
for f in files:
|
||
|
data = f.read()
|
||
|
pak.write(f.name + "\x00"*(56-len(f.name)))
|
||
|
pak.write(struct.pack("<I", len(data)))
|
||
|
pak.write(data)
|
||
|
|
||
|
def main(args):
|
||
|
try:
|
||
|
pak = args[1]
|
||
|
return pack(file(pak, "wb"), [file(filename) for filename in args[2:]])
|
||
|
except IndexError:
|
||
|
print "Usage: pack filename.pak files..."
|
||
|
except (IOError, OSError), e:
|
||
|
print e
|
||
|
return 1
|
||
|
|
||
|
__all__ = ["pack"]
|
||
|
|
||
|
if __name__ == "__main__": sys.exit(main(sys.argv))
|