--- /dev/null
+# Readlink is not present on some older distributions: emulate it.
+readlink() {
+ local path=$1 ll
+
+ if [ -L "$path" ]; then
+ ll="$(LC_ALL=C ls -l "$path" 2> /dev/null)" &&
+ echo "${ll/* -> }"
+ else
+ return 1
+ fi
+}
+relink() {
+ if [ -h "$2" ]; then
+ local old=$(readlink "$2")
+ [ "$old" = "$1" ] && return 0
+ echo "Changing symlink $2 from $old to $1"
+ elif [ -e "$2" ]; then
+ echo "Replacing file $2 with symlink to $1"
+ fi
+ rm -f "$2" \
+ && ln -s "$1" "$2"
+}