#!/bin/sh

set -e

MYNAME=resolvconf.preinst
report() { echo "${MYNAME}: $*" ; }
report_err() { report "Error: $*" >&2 ; }
report_info() { report "$*" >&2 ; }

is_installed() {
	# Same function in preinst, postinst, postrm
	[ "$1" ] || return 1
	dpkg-query -W -f='${Status}\n' "$1" 2>/dev/null | grep -siq '^[[:alpha:]]\+ [[:alpha:]]\+ installed$' >/dev/null 2>&1
}


### Create run-time directories ###
#
# We create the run-time directories here, in the preinst, so that even if
# resolvconf is run before the postinst runs then there is nevertheless a
# place for resolvconf to store data.  (The latter can occur if resolvconf
# is installed simultaneously with a caching nameserver package whose
# postinst runs resolvconf to add its IP address.)
#
# The new standard location is /run;
# the old standard location was /lib/init/rw on Debian, /var/run/ on Ubuntu.
#
case "$1" in
  install|upgrade)
	# Ensure that /run/resolvconf/interface exists.
	mkdir -p /run/resolvconf/interface

	;;
  # abort-upgrade)
	# Don't do anything because we don't anything in the postrm on upgrade or on failed-upgrade
	# ;;
esac


### Prepare to notify already configured packages of our installation ###

case "$1" in
  install)
	# Create list of packages that might need to be notified of the installation of resolvconf
	if [ -d /usr/lib/resolvconf/dpkg-event.d ] ; then
		NOTIFICATION_HOOK_SCRIPTS="$(cd /usr/lib/resolvconf/dpkg-event.d >/dev/null ; run-parts --test .)"
		PACKAGES_TO_NOTIFY=""
		for SCRPT in $NOTIFICATION_HOOK_SCRIPTS ; do
			PKG="${SCRPT#./}"
			if is_installed "$PKG" ; then
				PACKAGES_TO_NOTIFY="${PACKAGES_TO_NOTIFY:+$PACKAGES_TO_NOTIFY }$PKG"
			fi
		done
		rm -f /run/resolvconf/packages-to-notify
		if [ "$PACKAGES_TO_NOTIFY" ] ; then
			echo "$PACKAGES_TO_NOTIFY" > /run/resolvconf/packages-to-notify
		fi
	fi
	;;
  # upgrade)
	# Don't do anything
	# ;;
  # abort-upgrade)
	# Don't do anything because we don't anything in the postrm on upgrade or on failed-upgrade
	# ;;
esac

#DEBHELPER#

exit 0
