#!/bin/sh
set -e

package=debathena-zephyr-config

#
# divert_link <prefix> <suffix>
#
#   Ensures that the file <prefix><suffix> is properly diverted to
#   <prefix>.debathena-orig<suffix> by this package, and becomes a
#   symbolic link to either <prefix>.debathena<suffix> (default) or
#   <prefix>.debathena-orig<suffix>.
#
# undivert_unlink <prefix> <suffix>
#
#   Undoes the action of divert_link <prefix> <suffix> specified
#   above.
#
# Version: 2.1.1
#

ours=.debathena
theirs=.debathena-orig

divert_link()
{
    prefix=$1
    suffix=$2
    
    file=$prefix$suffix
    ourfile=$prefix$ours$suffix
    theirfile=$prefix$theirs$suffix

    if ! dpkg-divert --list $package | \
	grep -xFq "diversion of $file to $theirfile by $package"; then
	dpkg-divert --divert "$theirfile" --rename --package "$package" --add "$file"
    fi
    if [ ! -e "$file" ]; then
	ln -s "$(basename "$ourfile")" "$file"
    elif [ ! -L "$file" ] || \
	[ "$(readlink "$file")" != "$(basename "$ourfile")" -a \
	  "$(readlink "$file")" != "$(basename "$theirfile")" ]; then
	echo "*** OMINOUS WARNING ***: $file is not linked to either $(basename "$ourfile") or $(basename "$theirfile")" >&2
    fi
}

undivert_unlink()
{
    prefix=$1
    suffix=$2

    file=$prefix$suffix
    ourfile=$prefix$ours$suffix
    theirfile=$prefix$theirs$suffix

    if [ ! -L "$file" ] || \
	[ "$(readlink "$file")" != "$(basename "$ourfile")" -a \
	  "$(readlink "$file")" != "$(basename "$theirfile")" ]; then
	echo "*** OMINOUS WARNING ***: $file is not linked to either $(basename "$ourfile") or $(basename "$theirfile")" >&2
    else
	rm -f "$file"
    fi
    if [ ! -e "$file" ]; then
	dpkg-divert --remove --rename --package "$package" "$file"
    else
	echo "Not removing diversion of $file by $package" >&2
    fi
}

case "$1" in
    remove)
	# Remove the symbolic links and restore the diverted files.
        undivert_unlink /etc/default/zephyr-clients
	;;

    upgrade|failed-upgrade|deconfigure)
        ;;

    *)
        echo "prerm called with unknown argument '$1'" >&2
        exit 0
        ;;
esac

exit 0


