".dfhackrc" user config file

If the file ".dfhackrc" exists in the user's home directory or in the
game directory it will be sourced, so the user can set environmental
variables like LD_LIBRARY_PATH.  There's also a few shell variables it
can set to alter the behavior of the dfhack script.
develop
Matthew Cline 2011-07-17 15:50:31 -07:00
parent 38998a57ca
commit 592a65f9a3
1 changed files with 33 additions and 4 deletions

@ -4,28 +4,53 @@
# changed to properly set LD_PRELOAD so as to run DFHACK. # changed to properly set LD_PRELOAD so as to run DFHACK.
# #
# You can run DF under gdb by passing -g or --gdb as the first argument. # You can run DF under gdb by passing -g or --gdb as the first argument.
#
# If the file ".dfhackrc" exists in the DF directory or your home directory
# it will be sourced by this script, to let you set environmental variables.
# If it exists in both places it will first source the one in your home
# directory, then the on in the game directory.
#
# Shell variables .dfhackrc can set to affect this script:
# DF_GDB_OPTS: Options to pass to gdb, if it's being run
# DF_VALGRIND_OPTS: Options to pass to valgrind, if it's being run
# DF_HELGRIND_OPTS: Options to pass to helgrind, if it's being run
# DF_RESET_OPTS: Options to pass the reset command at the end of
# this script
# DF_POST_CMD: Shell command to be run at very end of script
DF_DIR=$(dirname "$0") DF_DIR=$(dirname "$0")
cd "${DF_DIR}" cd "${DF_DIR}"
export SDL_DISABLE_LOCK_KEYS=1 # Work around for bug in Debian/Ubuntu SDL patch. export SDL_DISABLE_LOCK_KEYS=1 # Work around for bug in Debian/Ubuntu SDL patch.
#export SDL_VIDEO_CENTERED=1 # Centre the screen. Messes up resizing. #export SDL_VIDEO_CENTERED=1 # Centre the screen. Messes up resizing.
# User config files
RC=".dfhackrc"
if [ -r "$HOME/$RC" ]; then
. $HOME/$RC
fi
if [ -r "./$RC" ]; then
. "./$RC"
fi
# Now run
case "$1" in case "$1" in
-g | --gdb) -g | --gdb)
shift shift
echo "set environment LD_PRELOAD=./libdfhack.so" > gdbcmd.tmp echo "set environment LD_PRELOAD=./libdfhack.so" > gdbcmd.tmp
gdb -x gdbcmd.tmp ./libs/Dwarf_Fortress $* gdb $DF_GDB_OPTS -x gdbcmd.tmp ./libs/Dwarf_Fortress $*
rm gdbcmd.tmp rm gdbcmd.tmp
ret=$? ret=$?
;; ;;
-h | --helgrind) -h | --helgrind)
shift shift
LD_PRELOAD=./libdfhack.so valgrind --tool=helgrind --log-file=helgrind.log ./libs/Dwarf_Fortress $* LD_PRELOAD=./libdfhack.so valgrind $DF_HELGRIND_OPTS --tool=helgrind --log-file=helgrind.log ./libs/Dwarf_Fortress $*
ret=$? ret=$?
;; ;;
-v | --valgrind) -v | --valgrind)
shift shift
LD_PRELOAD=./libdfhack.so valgrind --log-file=valgrind.log ./libs/Dwarf_Fortress $* LD_PRELOAD=./libdfhack.so valgrind $DF_VALGRIND_OPTS --log-file=valgrind.log ./libs/Dwarf_Fortress $*
ret=$? ret=$?
;; ;;
*) *)
@ -35,6 +60,10 @@ case "$1" in
esac esac
# Reset terminal to sane state in case of a crash # Reset terminal to sane state in case of a crash
reset reset $DF_RESET_OPTS
if [ -n "$DF_POST_CMD" ]; then
eval $DF_POST_CMD
fi
exit $ret exit $ret