#!/bin/sh
#
# ident	"@(#)postinstall	1.10	07/09/24 SMI"
#
# Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# SUNWses postinstall script
#

PATH="/usr/bin:/usr/sbin:${PATH}"
export PATH
EXIT=0

ADDDRV=/usr/sbin/add_drv
REMDRV=/usr/sbin/rem_drv
DRVALS=${BASEDIR}/etc/driver_aliases

DEVLINKTB="$BASEDIR/etc/devlink.tab"

if test ! -f ${DEVLINKTB} -o ! -w ${DEVLINKTB}; then
	echo "SUNWses: file ${DEVLINKTB} is missing/inacessible." >&2
	exit 1
fi


trap "rm -f /tmp/$$.*;exit" 0 1 2 3 13 15
TMP=/tmp/$$

#
# rem_devlink - removes an entry from ${DEVLINKTB}
#
rem_devlink()
{
	PATTERN="$1"
	LINK="$2"

	grep -v "^$PATTERN	$LINK$" ${DEVLINKTB} >$TMP.devlink
	#
	#  Must use 'cp' here in order to preserve the original
	#  mode, owner and group of devlink.tab
	#
	cp $TMP.devlink ${DEVLINKTB}
	rm -f $TMP.devlink
}

# Returns 1 if an item is already on the list
on_the_list()
{
	NEEDLE="$1"
	HAYSTACK="$2"

	for item in $HAYSTACK
	do
		if [ $item = $NEEDLE ]
		then
			return 1
		fi
	done
	return 0
}

merged_aliases=""
dev_aliases='"scsiclass,0d"'
obsolete_aliases='"scsiclass,00.vSUN.pUniversal_Xport" "scsiclass,00.vSTK.pUniversal_Xport"'

current_aliases=`grep \^ses ${DRVALS} | sed -e 's/^ses //g'`

rem_devlink 'type=ddi_pseudo;name=ses' 'es/ses\\N0'

if [ -n "$current_aliases" ]
then
	$REMDRV -b $BASEDIR ses

	for current in $current_aliases
	do
		on_the_list $current "$merged_aliases"
		if [ $? -eq 0 ]
		then
			on_the_list $current "$obsolete_aliases"
			if [ $? -eq 0 ]
			then
				merged_aliases=`echo $merged_aliases $current`
			fi
		fi
	done

	for alias in $dev_aliases
	do
		on_the_list $alias "$merged_aliases"
		if [ $? -eq 0 ]
		then
			merged_aliases=`echo $merged_aliases $alias`
		fi
	done
else
	merged_aliases=$dev_aliases
fi

${ADDDRV} -b ${BASEDIR} -n -m '* 0666 bin bin' -i "${merged_aliases}" ses
touch ${BASEDIR}/reconfigure

rm -f $TMP.devlink

exit ${EXIT}
