README
1This is par, an archiver for Quake pak?.pak files.
2It has been written for all those who don't like to use windoze (pakexplr by
3Ashley Bone) for pak file processing.
4
5Par knows about listing, extraction and creation of pak archives:
6
7 par -l pak0.pak [files]
8 par -x pak0.pak [files]
9 par -c pak9.pak [files].
10
11In addition, you may specify -v for having par to be more talketive and -f to
12force some actions or/and suppress error messages.
13Since pak archives usually contain hundreds of files, instead of specifying
14them on the command line you may put the names to textfiles and use the -t
15switch. This option may be used instead of (not implemented) wildcards:
16
17 par -l pak0.pak | egrep "^models/weapons" > list
18 par -xvt pak0.pak list
19
20
21Now about the unimplemented stuff:
22
23Q: Why didn't you implement -d for deletion?
24A: This is v0.01, until now I implemented only the very needed features.
25 Workaround: If you want to delete "maps/base1.bsp" from pak0.pak (and you've
26 got enough disk space :-), just type
27
28 par -l pak0.pak | sed "s/^maps\/base1\.bsp$//" > list
29 par -x pak0.pak
30 par -ct pak0.pak list
31
32Q: Why didn't you implement -a for adding?
33A: The implementation of this feature requires some programming effort in order
34 to prevent the archive from being destroyed if an error occours (disk full
35 or something like this). Again, this is v0.01.
36
37Q: I love pipes! Why didn't you implement reading the archive from stdin?
38A: I love pipes, too! Unfortunately, the table of contents of the pak archive
39 is located at its end with the following consequences: Since repositioning
40 the file offset isn't possible with stdin, listing would take much time and
41 the extraction would require to buffer the whole archive. Makes no sense.
42
43Q: Why didn't you implement reading the file list from stdin?
44A: This made sense. Send me an e-mail asking for this feature. Better two...
45
46Q: Why didn't you implement extracting to stdout?
47A: Makes some sense, too. Send me an e-mail asking for this feature.
48
49Q: Why didn't you implement creation to stdout?
50A: I had to rewrite the algorithm. The pak header contains the number of files
51 stored in the archive. Until now, I create an empty archive, add the files
52 one by one and rewrite the header afterwards. This way, files that cannot
53 be accessed by par for some weird reasons (permissions, ...) can be skipped
54 (if -f has been specified). When writing to stdout, par cannot be forced to
55 create a valid archive in this case, since the information on the number of
56 files can only be retrieved by counting the file names.
57 Since this is a weak reason, here another: Since reading the archive from
58 stdin isn't possible, implementing creation to stdout would result in an
59 inconsistency: "par -x -" wouldn't work, but "par -c -" would.
60 Not convinced? Okay, ask me for implementation.
61
62Q: What is the pak file format?
63A: It is described in pak-format.txt.
64
65Q: I want to clean up my Quake directory by putting all downloaded stuff into
66 new pak files. Is this possible?
67A: Yes, it is. The linux quake2 reads (at least) pak[0-9].pak in alphabetic
68 order. All files that are only read may be placed into additional paks.
69 If you find out more about this, please let me know.
70
71
72Par should be available at the ibiblio site at
73http://ibiblio.org/pub/linux/games/quake/.
74