# start of deinstall
#
# $NetBSD: deinstall,v 1.25 2003/11/23 07:14:43 jlam Exp $

eval set -- ${PKG_USERS}
for userset; do
	user=`
		IFS=":"
		set -- ${userset}
		${ECHO} "$1"
	`
	ALL_USERS="${ALL_USERS} \"${user}\""
done
eval set -- ${PKG_GROUPS}
for groupset; do
	group=`
		IFS=":"
		set -- ${groupset}
		${ECHO} "$1"
	`
	ALL_GROUPS="${ALL_GROUPS} \"${group}\""
done

eval set -- ${CONF_FILES} ${SUPPORT_FILES}
while [ $# -gt 0 ]; do
	samplefile="$1"; file="$2"
	shift; shift
	ALL_FILES="${ALL_FILES} \"${samplefile}\" \"${file}\""
	VIEW_FILES="${VIEW_FILES} \"${file}\""
done
if [ "${_PKG_RCD_SCRIPTS}" = "YES" ]; then
	eval set -- ${RCD_SCRIPTS}
	for script; do
		samplefile="${RCD_SCRIPTS_EXAMPLEDIR}/${script}"
		file="${RCD_SCRIPTS_DIR}/${script}"
		shift
		ALL_FILES="${ALL_FILES} \"${samplefile}\" \"${file}\""
	done
fi
eval set -- ${CONF_FILES_PERMS} ${SUPPORT_FILES_PERMS}
while [ $# -gt 0 ]; do
	samplefile="$1"; file="$2"; owner="$3"; group="$4"; mode="$5"
	shift; shift; shift; shift; shift
	ALL_FILES="${ALL_FILES} \"${samplefile}\" \"${file}\""
	VIEW_FILES="${VIEW_FILES} \"${file}\""
done

eval set -- ${PKG_SYSCONFDIR} ${RCD_SCRIPTS_DIR} ${MAKE_DIRS}
for dir; do
	ALL_MAKE_DIRS="${ALL_MAKE_DIRS} \"${dir}\""
done
eval set -- ${MAKE_DIRS_PERMS}
while [ $# -gt 0 ]; do
	dir="$1"; owner="$2"; group="$3"; mode="$4"
	shift; shift; shift; shift
	ALL_MAKE_DIRS="${ALL_MAKE_DIRS} \"${dir}\""
done
eval set -- ${ALL_MAKE_DIRS} ${OWN_DIRS}
for dir; do
	ALL_DIRS="${ALL_DIRS} \"${dir}\""
done
eval set -- ${OWN_DIRS_PERMS}
while [ $# -gt 0 ]; do
	dir="$1"; owner="$2"; group="$3"; mode="$4"
	shift; shift; shift; shift
	ALL_DIRS="${ALL_DIRS} \"${dir}\""
done
ALL_DIRS=`
	( eval set -- ${ALL_DIRS}
	  for dir; do
		${ECHO} "\"${dir}\""
	  done
	) | ${SORT} -r
`

case ${STAGE} in
VIEW-DEINSTALL)
	if [ "${_PKG_CONFIG}" = "YES" -a -n "${VIEW_FILES}" ]; then
		if [ -n "${PKG_SYSCONFDEPOTBASE}" ]; then
			${SETENV} PLIST_IGNORE_FILES="${CONF_IGNORE_FILES}" \
				${LINKFARM} -D -t ${PKG_SYSCONFVIEWBASE} -d ${PKG_SYSCONFDEPOTBASE} ${PKGNAME}
			${RMDIR} -p ${PKG_SYSCONFVIEWBASE} 2>/dev/null || ${TRUE}
		else
			eval set -- ${VIEW_FILES}
			for file; do
				link=`${ECHO} ${file} | ${SED} "s,^${PREFIX}/,${PKG_PREFIX}/,"`
				dir=`${DIRNAME} ${link}`
				if [ -h "${link}" ]; then
					${RM} -f ${link}
					${RMDIR} -p ${dir} 2>/dev/null || ${TRUE}
				fi
			done
		fi
	fi
	if [ -n "${PKG_SHELL}" -a "${PKG_REGISTER_SHELLS}" = "YES" ]; then
		${ECHO} "===> Updating /etc/shells"
		${CP} /etc/shells /etc/shells.pkgsrc."$$"
		(${GREP} -v "^${PKG_SHELL}" /etc/shells.pkgsrc."$$" || ${TRUE}) > /etc/shells
		${RM} /etc/shells.pkgsrc."$$"
	fi
	;;

DEINSTALL)
	# Remove configuration files if they don't differ from the default
	# config file.
	#
        if [ "${_PKG_CONFIG}" = "YES" ]; then
		eval set -- ${ALL_FILES}
		while [ $# -gt 0 ]; do
			samplefile="$1"; file="$2"
			shift; shift

			if [ ! "${file}" -ef "${samplefile}" -a		\
			     -e "${file}" -a -e "${samplefile}" ]; then
				if ${CMP} -s "${file}" "${samplefile}"; then
					${RM} -f "${file}"
				fi
			fi
		done
	fi
	;;

POST-DEINSTALL)
	modified_files=''
	eval set -- ${ALL_FILES}
	while [ $# -gt 0 ]; do
		samplefile="$1"; file="$2"
		shift; shift

		if [ -e "${file}" ]; then
			modified_files="${modified_files} \"${file}\""
		fi
	done

	if [ "${PKG_INSTALLATION_TYPE}" = "pkgviews" -a			\
	     "${_PKG_CONFIG}" = "YES" -a -n "${CONF_DEPENDS}" ]; then
		if [ -h ${PKG_SYSCONFDIR} ]; then
			${RM} -f ${PKG_SYSCONFDIR}
		fi
		${RMDIR} -p `${DIRNAME} ${PKG_SYSCONFDIR}` 2>/dev/null || ${TRUE}
	fi

	existing_dirs=''
	eval set -- ${ALL_DIRS}
	for dir; do
        	if [ "${_PKG_CONFIG}" = "YES" ]; then
			if [ -f "${dir}/.pkgsrc" ]; then
				dirowner=`${HEAD} -1 "${dir}/.pkgsrc"`
				if [ "${dirowner}" = "${PKGBASE}" ]; then
					${RM} -f "${dir}/.pkgsrc"
					${RMDIR} -p "${dir}" 2>/dev/null || ${TRUE}
				fi
			fi
			is_make_dir=`					\
				eval set -- ${ALL_MAKE_DIRS};		\
				is_make_dir=0;				\
				for make_dir; do			\
					case "${make_dir}" in		\
					${dir}) is_make_dir=1; break ;;	\
					esac;				\
				done;					\
				${ECHO} ${is_make_dir}			\
			`
			if [ ${is_make_dir} -eq 0 -a -d "${dir}" ]; then
				existing_dirs="${existing_dirs} \"${dir}\""
			fi
		else
			case "${dir}" in
			${PKG_PREFIX}/*)
				${RMDIR} -p "${dir}" 2>/dev/null || ${TRUE}
				;;
			esac
			case "${dir}" in
			#
			# Don't bother the admin about the following dirs
			# if they still exist.
			#
			${PKG_SYSCONFBASE}|${RCD_SCRIPTS_DIR})
				;;
			*)	
				if [ -d "${dir}" ]; then
					existing_dirs="${existing_dirs} \"${dir}\""
				fi
				;;
			esac
		fi
	done

	if [ -n "${ALL_USERS}" -o -n "${ALL_GROUPS}" -o			\
	     -n "${modified_files}" -o -n "${existing_dirs}" ]; then
		${CAT} << EOF
===========================================================================
If you won't be using ${PKGNAME} any longer, you may want to remove
EOF
		if [ -n "${ALL_USERS}" ]; then
			${ECHO} ""
			${ECHO} -n "  * the following users"
			sep=":   "
			eval set -- ${ALL_USERS}
			for user; do
				${ECHO} -n "${sep}${user}"
				sep=", "
			done
			${ECHO} ""
		fi
		if [ -n "${ALL_GROUPS}" ]; then
			${ECHO} ""
			${ECHO} -n "  * the following groups"
			sep=":  "
			eval set -- ${ALL_GROUPS}
			for group; do
				${ECHO} -n "${sep}${group}"
				sep=", "
			done
			${ECHO} ""
		fi
		if [ -n "${modified_files}" ]; then
			${CAT} << EOF

  * the following files:

EOF
			eval set -- ${modified_files}
			for file; do
				${ECHO} "	${file}"
			done
		fi
		if [ -n "${existing_dirs}" ]; then
			${CAT} << EOF

  * the following directories:

EOF
			eval set -- ${existing_dirs}
			for dir; do
				${ECHO} "	${dir}"
			done
		fi
		if [ -n "${RCD_SCRIPTS}" ]; then
			${CAT} << EOF

You many also want to remove any settings in rc.conf that you may have
made in order to use ${PKGNAME}.
EOF
		fi
		${CAT} << EOF
===========================================================================
EOF
	fi
	;;
esac

# end of deinstall
