From 592a65f9a3668926237437233c80888b023c5c94 Mon Sep 17 00:00:00 2001 From: Matthew Cline Date: Sun, 17 Jul 2011 15:50:31 -0700 Subject: [PATCH] ".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. --- package/linux/dfhack | 37 +++++++++++++++++++++++++++++++++---- 1 file changed, 33 insertions(+), 4 deletions(-) diff --git a/package/linux/dfhack b/package/linux/dfhack index d5d221879..46d32f529 100755 --- a/package/linux/dfhack +++ b/package/linux/dfhack @@ -4,28 +4,53 @@ # 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. +# +# 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") cd "${DF_DIR}" 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. +# User config files +RC=".dfhackrc" + +if [ -r "$HOME/$RC" ]; then + . $HOME/$RC +fi +if [ -r "./$RC" ]; then + . "./$RC" +fi + +# Now run + case "$1" in -g | --gdb) shift 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 ret=$? ;; -h | --helgrind) 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=$? ;; -v | --valgrind) 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=$? ;; *) @@ -35,6 +60,10 @@ case "$1" in esac # 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