# Wrapper script for eduke32 and mapster32.
# Ensure ~/.eduke32 exists, populate with a symlink forest.
# Need this because the game normally expects to run from its own dir.
# This version supports game mods. Currently only tested with bloodcm.
PROG="$( basename $0 )"
mkdir -p $USERDIR
if ! cd $USERDIR; then
echo 2>&1 "$PROG: Can't create $USERDIR directory"
# These files need to be present, but not writable, symlinks
# to /usr/share are OK.
for i in m32help.hlp SEHELP.HLP STHELP.HLP names.h tiles.cfg; do
if [ -e $SHAREDIR/$i -a ! -e $i ]; then
ln -s $SHAREDIR/$i $i
# For directories, it's more complex.
# We don't know in advance what directories might be present, since
# packages can install game mods (e.g. bloodcm). So link them all.
# Unfortunately it can't be a simple symlink, because the *.cfg files
# inside mod directories need to really exist in $USERDIR, writable by
# the user, so he can save his settings.
# The autoload subdir isn't a mod, but it's treated the same way so
# individual users can have different autoload stuff. If you install
# eduke32_hires_pack, this means users can disable it by removing their
# symlink in ~/.eduke32/autoload (without disturbing anything else they
# might have in autoload).
# I wish there were a simpler way to do this. The only other solution
# would be to patch the eduke32 source, to make it save .cfg files in a
# different location than the game data dirs... but I'd rather handle it
# with a wrapper script because it's easier to debug.
# So, here's how we handle the directories:
for i in $SHAREDIR/*/; do
dir=$( basename $i )
if [ ! -e $dir ]; then
ln -s $SHAREDIR/$dir/* $dir
rm -f $dir/*.cfg
cp $SHAREDIR/$dir/*.cfg $dir
# If this is left over in $USERDIR, it's from a previous version of this
# script, and it doesn't belong there. samples/ isn't a mod, it's actually
# documentation, and is now installed in /usr/doc/eduke32-$VERSION.
rm -f samples
exec $BINDIR/$PROG "$@"