# XPak v0.4.1; 96/09/30. (c) Tom Wheeley; <splitbung>, [email protected];
Please note. This manual is formatted as more of a reference guide than a
manual, so things may not make much sense if read straight through. If you
are learning about xpak, then skip around the sections mentioned in 1.2.
* If you have an unanswered problem, then contact [email protected] *
Table of Contents
1. What is XPAK?
1.1 Introduction
1.2 Basic Syntax
2. What are the operating modes of XPAK?
2.1 List
2.2 Extract
2.3 Add
2.4 Remove
2.5 reName
3. Filename specification
3.1 Specifying a lumpname
3.2 Specifying filenames
3.3 Remapping lumpnames to differing filenames
3.4 Filename list files
4. Other Switches
5. Bugs / Future improvements
1. What is XPAK?
1.1 Introduction
XPAK is the ultimate utility in Quake .PAK file management :) It offers
superb flexibility in its use and ran 11511i811l ge of options. With XPAK you can
create, modify, list and extract entries from any PAK file. XPAK offers
security features to help prevent you removing every lump from QUAKE.PAK!
1.2 Basic Syntax
The easiest way to remember the syntax for XPAK is as follows:
xpak mode_switch PAKfile other_switches FileList
Where mode_switch is one of -l,-e,-a,-r,-n. See section 2
PAKfile is the PAK file to work on. eg ID1.PAK
other_switches affect operation. See section 4 for details
FileList, List of files/lumps to work from/to. See section 3
The switches / mode_switch can be in any order, but this can become
confusing. The PAKfile must be placed before the filelist, however.
2. What are the operating modes of XPAK?
Operating modes for XPAK are specified by adding the respective switch
to the command line. If you specify more than one operating mode, then
XPAK will politely kick you back into DOS.
2.1 List ( -l )
In List mode, XPAK will list the name, size and offset of each lump in
the PAK directory which matches the filelist. If no filelist is specified
then evey lump is displayed. (Switches: -j)
Example: xpak -l id1.pak
2.2 Extract
In Extract mode, XPAK will extract every lump which matches the filelist
to the filename mentioned in the PAK directory. Any directories which
need creating are created automatically. If a lumpname:filename pair is
specified in the file list, then that lump is extracted to the alternative
filename instead. If there is no filelist, then every file is extracted.
(Switches: -i -f -b -p -v)
Example: xpak -e id1.pak spr*
2.3 Add
Add mode in XPAK comprises both create and update operations. If the
PAKfile does not exist, then Add will create it and add all the files
in the filelist (performing lumpname conversions where appropriate).
If the PAKfile does exist, then the filelist files are simply added.
If one of the lumps in the filelist exists in the PAKFile, then that
entry is updated with the new data from the file. (Switches: -i -p -v)
Example: xpak -a id1.pak -o maps/test4.bsp (Adds new map to PAK file)
xpak -a id1.pak -o maps/test3.bsp (Replaces map with new file)
xpak -a maps.pak maps/*.* (Creates PAK file with maps)
2.4 Remove
Remove mode allows you to remove lumps mentioned in the filelist from
the PAKfile. (Switches: -v)
Example: xpak -r id1.pak -o maps/test4.bsp (Remove the map from the PAK)
2.5 reName
Rename mode simply renames every lump in the filelist to the
corresponding filename for that lump (You must use lumpname:filename
notation). The filename is automatically converted to lowercase and
forward slashes. (Switches: -v)
Example: xpak -n maps.pak maps/test3.bsp:maps/water.map
3. Filename specification
Filename specification is done by putting a succession of patterns on
the command line, and any filename/lumpname which matches will be acted
upon. Note that DOS filenames are automatically converted to backslashes
and lumpnames are automatically lowercased and converted to foreslashes.
3.1 Specifying a lumpname
Lumpnames can be matched by text and the wildcards * and ? Where ?
matches any single letter, and * matches any sequence of letters. Unlike
DOS wildcards, '/' and '.' have no special meaning. Thus spr* will match
sprites/foo.bar. Lumpnames are used by -l -e -r
3.2 Specifying filenames
In Add mode ( -a ) the filespecs no longer refer to lumpnames, but to
filenames. In order that the files which match such filespecs are all
gathered these filespecs must use DOS style wildcards, with each directory
needing to be individually mentioned. Remember that a wildcard / text
must be specified on either side of the .
3.3 Remapping lumpnames to differing filenames
Sometimes it is desirable to add data from file 'y' to lumpname 'x'.
This can be done by specifying a remapping oon the command line, of the
form lumpname:filename (ie x:y) This remapping is used by all modes bar -l
Note that remappings cannot conatin any wildcards. The use of remapping is
cheated slightly by Rename ( -n ) as the filename there applies to the
new lumpname.
When XPAK is compiling a list of all filenames, it takes remapped entries
in preference over normnal entries, so for example:
xpak -e id1.pak * quake.rc:tomw.rc -v
Here quake.rc is implicitly mentioned twice on the command line, and xpak
honours the remapped one over the straight extraction. (This will also
work thus: `xpak -e id1.pak quake.rc:tomw.rc * -v`)
3.4 Filename list files
Sometimes the number of files involved in a PAKfile, can result in long
tedious command lines, so XPAK can read in file lists from a separate file.
Note that this is not the same as a response file, as switches in a filelist
will be counted as files (You can access lumps/files that begin with a -
with this 'feature' by putting them in a filelist file).
This file is accessed on the command line as @filename, where filename is
the name of the file containing the file list. Lines in the file list
starting with '#' are treated as comments.
An example file, which contains the name of every lump in the ID1.PAK is
distributed with XPAK as ID1_PAK.TXT. Note that you can reorder the files
in a PAK file by listing (with -j) to a filelist file, reordering the
filelist, then creating a new PAK with `xpak -a id2.pak @filelist -v`
4. Other Switches
-b # Create Backups.
In extract, if the extract file exists then a backup is made of the
existing file. In PAKfile modification modes, a backup is made of
the PAKfile. (Unimplemented)
-f Force overwrites.
Normally in extract, if the destination file exists then it is skipped.
This switch forces XPAK to overwrite that file.
-i Interactive mode.
In extract mode, XPAK will ask if you want to overwrite existing files
and Add mode will ask if you want to update a PAK file if the lumpname
exists. y=Yes, n=No, a=All (Yes to All), s=Skip (No to All), q=Quit
-j Just names.
In List mode, causes XPAK not to display the Offset and Size data,
but just the lumpnames. This is useful when redirecting the output of
XPAK to make filelists (a la ID1_PAK.TXT)
-o Override Safeties
XPAK has the following safety condition.
1. It will not modify a pakfile called PAK0.PAK. (work on a copy!)
Using the -o switch overrides the safety.
-q # Query mode.
Mainly for if you can't be bothered to make a filelist, XPAK will ask
you if you want to process each lump/file
-v verbose mode. Display names of lumps during processing.
Displays information on what XPAK is doing. Without -v virtually no
screen output is madeother than errors (expect List).
-x # exclude filenames
Toggles the exclude flag to exclude the following filenames from the
filelist. Can also be effected for single entries by prepending
with ! (neccesary for mixed filelists). Note that a filelist placed
after a -x will be marked as excludes, except for entries with a !.
This might work, I'm not sure.
5. Bugs / Future improvements
. For Add and Remove, XPAK will fail and probably corrupt the PAK file
if the PAK directory is not at the end of the file! In normal use with
the ID1.PAK and XPAK this situation will not happen.
. Don't run out of diskspace. If this happens during -a or (unlikely)
-r, then the PAK file will become unusable. XPAK is very lenient on the
disk space it requires, never using temp files, but be careful if you
are working on nearly full shared drive.
. I'm sure that wildcard management could be improved (wildcarded remaps)
. I don't (yet) have a working protected mode TP compiler, so everything
is done in 64k chunks. (It's not slow, though...)
-------- ----- ------ -------- ----- ------ -----------
|