#!/bin/sh
set -e

package=debathena-linerva

#
# 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 /usr/bin/id
	undivert_unlink /etc/resolv.conf       
	undivert_unlink /etc/motd
	undivert_unlink /usr/share/man/man1/id .1.gz
	undivert_unlink /usr/bin/elinks

	# remove logcheck changes.
	undivert_unlink /etc/logcheck/logcheck.conf
	undivert_unlink /etc/logcheck/ignore.d.server/kernel
	undivert_unlink /etc/logcheck/ignore.d.server/perl
	undivert_unlink /etc/logcheck/ignore.d.server/ssh
	undivert_unlink /etc/logcheck/ignore.d.server/get_message
	undivert_unlink /etc/logcheck/ignore.d.server/cron
	undivert_unlink /etc/logcheck/ignore.d.server/fingerd
	undivert_unlink /etc/logcheck/ignore.d.server/automount
	undivert_unlink /etc/logcheck/ignore.d.server/gconfd
	undivert_unlink /etc/logcheck/ignore.d.server/screen
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-automount
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-gconfd
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-get_message
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-kernel
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-perl
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-screen
	undivert_unlink /etc/logcheck/violations.ignore.d/logcheck-ssh

	;;
    
    upgrade|failed-upgrade|deconfigure)
	;;
    
    *)
	echo "prerm called with unknown argument '$1'" >&2
	exit 0
	;;
esac

exit 0
