#!/bin/sh printerr() { echo "ERROR: $*" >&2 } TARGET_FILE=$0 cd "$(dirname "$TARGET_FILE")" || { printerr "Could not change directory to '$TARGET_FILE'" exit 1 } TARGET_FILE="$(basename "$TARGET_FILE")" # Iterate down a (possible) chain of symlinks. while [ -L "$TARGET_FILE" ] do TARGET_FILE="$(readlink "$TARGET_FILE")" cd "$(dirname "$TARGET_FILE")" || { printerr "Could not change directory to '$TARGET_FILE'" exit 1 } TARGET_FILE="$(basename "$TARGET_FILE")" done # Find the physical path and name of target file. DIR=$(pwd -P) BIN=$(basename "$0") cd "$DIR" || { _errcode=$? printerr "Could not change directory to '$DIR'" exit $_errcode } # If name does not match a binary or is this same script, find the right one if [ ! -f "$BIN" ] || [ "$BIN" = "cataclysm-launcher" ] then BIN= for bin in cataclysm-bn-tiles cataclysm-bn do [ -f "$bin" ] && BIN="$bin" && break done fi if [ "$BIN" ] then exec ./$BIN "$@" else printerr "Couldn't find cataclysm game binary in '$DIR'/" exit 1 fi