OpenSolaris_b135/pkgdefs/SUNWatigfx/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 2008 Sun Microsystems, Inc.  All rights reserved.
# Use is subject to license terms.
#
# ident	"%Z%%M%	%I%	%E% SMI"
#
# SUNWdrmr postinstall script

PATH=/usr/bin:/usr/sbin:${PATH}
export PATH

# the following ids are sorted in numeric order
ATIGFX_ALIAS="\
	\"pci1002,4752\" \
	"
DRVPERM='* 0644 root sys'

# Function: check_add_drv()
#
# This function will check if the module has an entry in etc/name_to_major
# If not simply calls add_drv with the arguments given. If there is
# such an entry in name_to_major file, it adds entries in driver_aliases
# and minor_perm if necessary.
# The syntax of this function is the same as add_drv. 

check_add_drv()
{
	alias=""
	ADD_ALIAS=0
	ADD_MINOR=0
	OPTIND=1

	cmd="add_drv"

	while getopts i:b:m:  opt
	do
		case $opt in
			i )	ADD_ALIAS=1	
				alias=$OPTARG
				cmd=$cmd" -i '$alias'"
				;;
			m )	ADD_MINOR=1
				minor=$OPTARG
				cmd=$cmd" -m '$minor'"
				;;
			b)	BASEDIR=$OPTARG
				cmd=$cmd" -b $BASEDIR"
				;;
			\?) 	echo "check_add_drv can not handle this option"
				return
				;;
			esac
	done 
	shift `/usr/bin/expr $OPTIND - 1`
	
	drvname=$1

	cmd=$cmd" "$drvname

	/usr/bin/grep "^$drvname[ 	]" $BASEDIR/etc/name_to_major >  /dev/null 2>&1
	
	if [ $? -ne 0 ]
	then
		eval $cmd
	else
		# entry already in name_to_major, add alias, minorperm
		# if necessary
		if [ $ADD_ALIAS = 1 ]	
		then
			for i in $alias
			do
				/usr/bin/egrep "$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1
				if [ $? -ne 0 ]
				then
					echo "$drvname $i" >> $BASEDIR/etc/driver_aliases
				else
					/usr/bin/egrep "^$drvname[ 	]+$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1
					if [ $? -ne 0 ]
					then
						return 1
					fi

				fi
			done
		fi

		if [ $ADD_MINOR = 1 ]
		then
			/usr/bin/grep "^$drvname:" $BASEDIR/etc/minor_perm > /dev/null 2>&1
			if [ $? -ne 0 ]
			then 
				minorentry="$drvname:$minor"
				echo $minorentry >> $BASEDIR/etc/minor_perm
			fi
		fi
	fi

}

EXIT=0

if [ "${BASEDIR:=/}" = "/" ]
then
	ADD_DRV="check_add_drv"
else
	ADD_DRV="check_add_drv -b ${BASEDIR}"
fi

${ADD_DRV} -m "${DRVPERM}" -i "${ATIGFX_ALIAS}" atiatom || EXIT=1

exit ${EXIT}