OpenSolaris_b135/pkgdefs/SUNWiwh/postinstall

#! /usr/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.
#

# Driver info
DRV=iwh
DRVALIAS='"pciex8086,4232" "pciex8086,4235" "pciex8086,4236" 
"pciex8086,4237" "pciex8086,423a" "pciex8086,423b" "pciex8086,423c"
"pciex8086,423d" "pciex8086,4236.8086.1011"'

BASEDIR=${BASEDIR:-/}

# Function: check_add_drv()
#
# This function will check if add_drv has been executed.
# If not simply calls add_drv. Otherwise adds entries to
# driver_aliases, driver_classes and minor_perm if necessary.
# The syntax of this function is the same as add_drv. 

check_add_drv()
{
	CMD="add_drv"

	ALIAS=""
	ALIASDIR="${BASEDIR}"/etc/driver_aliases
	while getopts i:b: opt 2>/dev/null; do
		case "$opt" in
		i)	CMD="${CMD} -i ${OPTARG}"
			ALIAS=`echo ${OPTARG} | /usr/bin/sed -e "s/'//g"`
			;;
		b)	if [ "${OPTARG}" != "/" ]; then
				# On a client
				# modify the sytem files and touch
				# /reconfigure for reconfigure reboot
				CMD="${CMD} -b \"${OPTARG}\""
			fi
			;;
		\?)	echo "check_add_drv(): Unknown option $opt"
			return
			;;
		esac
	done
	shift `/usr/bin/expr ${OPTIND} - 1`
	DRIVER=$1
	CMD="${CMD} ${DRIVER}"

	# Make sure add_drv has not been previously executed
	# before attempting to add the driver
	/usr/bin/egrep -s "^${DRIVER}[ 	]" "$BASEDIR"/etc/name_to_major

	if [ $? -ne 0 ]; then
		eval ${CMD}
		if [ $? -ne 0 ]; then
			echo "Failed add_drv ${DRIVER}!\n" >&2
			exit 1
		fi
	else
		# Add driver entry if necessary
		if [ -n "${ALIAS}" ]; then
			for i in ${ALIAS}; do
				/usr/bin/egrep -s "^${DRIVER}[ 	]+$i" ${ALIASDIR}
				if [ $? -ne 0 ]; then
					echo "${DRIVER} $i" >> ${ALIASDIR}
				fi
			done
		fi
	fi
}

check_add_drv -b "${BASEDIR}" -i "'${DRVALIAS}'" ${DRV}