postinstall revision 26594249d18446b4a5ff8ff6d34611c718757251
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore#! /usr/bin/sh
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore#
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# CDDL HEADER START
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore#
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore# The contents of this file are subject to the terms of the
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# Common Development and Distribution License (the "License").
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# You may not use this file except in compliance with the License.
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore#
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# or http://www.opensolaris.org/os/licensing.
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# See the License for the specific language governing permissions
02fc09f797e83e80199c96adc4751c230dccc973Adam Moore# and limitations under the License.
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore#
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# When distributing Covered Code, include this CDDL HEADER in each
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore# If applicable, add the following below this CDDL HEADER, with the
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# fields enclosed by brackets "[]" replaced with your own identifying
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore# information: Portions Copyright [yyyy] [name of copyright owner]
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore#
c4f19796d319a7ec9a1e76d48adc82c9c5ae2f27Adam Moore# CDDL HEADER END
08e054017132cdd838955bc0af15889f1f2a7b42Adam Moore#
b46f3d670b654847b0ce60afdba1b461c492a5c9Adam Moore
b46f3d670b654847b0ce60afdba1b461c492a5c9Adam Moore#
b46f3d670b654847b0ce60afdba1b461c492a5c9Adam Moore# Copyright 2009 Sun Microsystems, Inc. All rights reserved.
08e054017132cdd838955bc0af15889f1f2a7b42Adam Moore# Use is subject to license terms.
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore#
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore# Driver info
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam MooreDRV=urtw
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam MooreDRVALIAS='"usb846,6a00"'
52671ce4f644d565b2acd71a8ce4f6d20829a67cAdam Moore
9c42541e375e7bb70c53012b3012d70f1a380254Adam MooreBASEDIR=${BASEDIR:-/}
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore# Function: check_add_drv()
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore#
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore# This function will check if add_drv has been executed.
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore# If not simply calls add_drv. Otherwise adds entries to
9c42541e375e7bb70c53012b3012d70f1a380254Adam Moore# driver_aliases, driver_classes and minor_perm if necessary.
02fc09f797e83e80199c96adc4751c230dccc973Adam Moore# The syntax of this function is the same as add_drv.
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moorecheck_add_drv()
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore{
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore CMD="add_drv"
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore ALIAS=""
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore ALIASDIR="${BASEDIR}"/etc/driver_aliases
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore while getopts i:b: opt 2>/dev/null; do
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore case "$opt" in
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore i) CMD="${CMD} -i ${OPTARG}"
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore ALIAS=`echo ${OPTARG} | /usr/bin/sed -e "s/'//g"`
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore ;;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore b) if [ "${OPTARG}" != "/" ]; then
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore # On a client
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore # modify the sytem files and touch
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore # /reconfigure for reconfigure reboot
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore CMD="${CMD} -b \"${OPTARG}\""
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fi
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore ;;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore \?) echo "check_add_drv(): Unknown option $opt"
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore return
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore ;;
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore esac
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore done
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore shift `/usr/bin/expr ${OPTIND} - 1`
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore DRIVER=$1
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore CMD="${CMD} ${DRIVER}"
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore # Make sure add_drv has not been previously executed
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore # before attempting to add the driver
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore /usr/bin/egrep -s "^${DRIVER}[ ]" "$BASEDIR"/etc/name_to_major
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore if [ $? -ne 0 ]; then
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore eval ${CMD}
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore if [ $? -ne 0 ]; then
abdfe7cf11d34f89f17b26e4779bf6079d22a910Adam Moore echo "Failed add_drv ${DRIVER}!\n" >&2
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore exit 1
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fi
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore else
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore # Add driver entry if necessary
eab87f0881fdf3e80c2a1af9224c50f0bf033644Adam Moore if [ -n "${ALIAS}" ]; then
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore for i in ${ALIAS}; do
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore /usr/bin/egrep -s "^${DRIVER}[ ]+$i" ${ALIASDIR}
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore if [ $? -ne 0 ]; then
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore echo "${DRIVER} $i" >> ${ALIASDIR}
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fi
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore done
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fi
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore fi
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore}
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moorecheck_add_drv -b "${BASEDIR}" -i "'${DRVALIAS}'" ${DRV}
80d2034f65b9348e5fd36291f03b0819181efb89Adam Moore