mirror of
https://github.com/Ponce/slackbuilds
synced 2024-11-14 21:56:41 +01:00
63 lines
2.1 KiB
Bash
63 lines
2.1 KiB
Bash
#!/bin/sh
|
|
|
|
# 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.
|
|
|
|
SHAREDIR=/usr/share/games/eduke32
|
|
BINDIR=/usr/libexec/eduke32
|
|
USERDIR=$HOME/.eduke32
|
|
|
|
PROG="$( basename $0 )"
|
|
mkdir -p $USERDIR
|
|
|
|
if ! cd $USERDIR; then
|
|
echo 2>&1 "$PROG: Can't create $USERDIR directory"
|
|
exit 1
|
|
fi
|
|
|
|
# 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
|
|
fi
|
|
done
|
|
|
|
# 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
|
|
mkdir $dir
|
|
ln -s $SHAREDIR/$dir/* $dir
|
|
rm -f $dir/*.cfg
|
|
cp $SHAREDIR/$dir/*.cfg $dir
|
|
fi
|
|
done
|
|
|
|
# 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 "$@"
|