OpenSolaris_b135/pkgdefs/SUNWses/postinstall

#!/bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License (the "License").
# You may not use this file except in compliance with the License.
#
# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
# or http://www.opensolaris.org/os/licensing.
# See the License for the specific language governing permissions
# and limitations under the License.
#
# When distributing Covered Code, include this CDDL HEADER in each
# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
# If applicable, add the following below this CDDL HEADER, with the
# fields enclosed by brackets "[]" replaced with your own identifying
# information: Portions Copyright [yyyy] [name of copyright owner]
#
# CDDL HEADER END
#
#
#
# Copyright 2009 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" "scsiclass,03S"'
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}