#! /bin/sh
# This script cleans up /etc/driver_aliases, /etc/driver_classes
# and /etc/name_to_major.
#
#
PATH="/usr/bin:/usr/sbin:${PATH}"
export PATH
ARCH=`uname -p`
export ARCH

# Check to see if driver is installed
# return 0 indicates that the driver is installed
# return 1 indicates driver is NOT installed
not_installed() {
	driver=$1
	grep "^${driver} " $ROOTDIR/etc/name_to_major > /dev/null 2>&1
	return $?
}

#
# Perform appropriate check for driver presence and  remove driver.
#
remove_driver() {
	driver=$1
	drv_path=$2
	# Check to see if the driver is in name_to_major but 
	# removed from system
	not_installed $rm_driver
	if [ "$?" -eq 0 -a ! -f ${drv_path}/$rm_driver ]; then
		rem_drv -b ${ROOTDIR} $rm_driver || EXIT=1 
	fi
}

# Remove the new framework drivers
#
remove_drivers() {
	#
	# NOTE: The location of driver may be in kernel/drv/sparcv9 or 
	# usr/kernel/drv. 
	# We check for everything in 64 bit dir only now. If we patch something
	# this is only in 32 bit we may have to add another for loop.
	#
	RM_DRIVERS="usbprn usb_sd usbser_edge usba10_hid usba10_hubd usba10_scsa2usb usba10_usb_mid usba10_usbprn usba10_ugen usba10_usbser_edge usba10_ohci usba10_ehci"

	for rm_driver in `echo $RM_DRIVERS`; do
		remove_driver $rm_driver ${ROOTDIR}/kernel/drv/sparcv9
	done
	
	RM_DRIVERS="usb_ac usb_as audiots" 	
	for rm_driver in `echo $RM_DRIVERS`; do
		remove_driver $rm_driver ${ROOTDIR}/usr/kernel/drv/sparcv9
	done
}

remove_drv () {

# SUNW1394x prebackout script
#

case ${ARCH} in
	sparc)
		#remove the new framework drivers
		remove_drivers
	;;
esac

}

remove_drv

if [ "$ROOTDIR" != "" ]; then
	REMOVEF="removef -R ${ROOTDIR}"
else
	REMOVEF="removef"
fi

pkginfo -R $ROOTDIR -q  SUNWaudd
if [ $? -eq 0 ]
then
	${REMOVEF} SUNWaudd  /usr/kernel/drv/usb_ac
	${REMOVEF} SUNWaudd  /usr/kernel/drv/usb_as
	${REMOVEF} SUNWaudd  /usr/kernel/drv/usb_ac.conf
	${REMOVEF} -f SUNWaudd || exit 2
fi 

pkginfo -R $ROOTDIR -q  SUNWauddx
if [ $? -eq 0 ]
then
	${REMOVEF} SUNWauddx  /usr/kernel/drv/sparcv9/usb_as
	${REMOVEF} SUNWauddx  /usr/kernel/drv/sparcv9/usb_ac
	${REMOVEF} -f SUNWauddx || exit 2
fi


exit 0
