postinstall revision 7c478bd95313f5f23a4c958a745db2134aa03244
436aad11e01e916f75e68a2e9cb89ac217a990d3Tinderbox User#!/sbin/sh
6fe48fb46e53ffc37542853a1edb74cb481b7d94Automatic Updater#
c7ef13f6c9ef4436bc804b150e0a93307b11fa27Tinderbox User# Copyright 2004 Sun Microsystems, Inc. All rights reserved.
c7ef13f6c9ef4436bc804b150e0a93307b11fa27Tinderbox User# Use is subject to license terms.
a5636b773fa05a272b6876afd99309c0b3090e2fMark Andrews#
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User# ident "%Z%%M% %I% %E% SMI"
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User#
c57668a2fbbe558c1bd21652813616f2f517c469Tinderbox User
5e047890ac9b745db060d95f7d1b4f876511240dTinderbox User# Function: check_add_drv()
137fdbc214e99c4cbe57551e9e14f2015c2e42aeTinderbox User#
3349f0044fda807e1fd6681c833d3593a22dad86Tinderbox User# This function will check if the module has an entry in etc/name_to_major
bed0874e1a09e810575328c4bfc346a47514b69fMark Andrews# If not simply calls add_drv with the arguments given. If there is
02b47c5d62e1e827743684c28a08e871da454a2dMark Andrews# such an entry in name_to_major file, it adds entries in driver_aliases
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User# driver_classes and minor_perm if necessary.
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User# The syntax of this function is the same as add_drv.
e20309353e6246485c521278131d3fced73d7957Tinderbox User
e20309353e6246485c521278131d3fced73d7957Tinderbox Usercheck_add_drv()
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews{
9a5217f827ac0e006016745e5305b31dc0c7767fTinderbox User if [ "$BASEDIR" = "" ]
3cc98b8ecedcbc8465f1cf2740b966b315662430Automatic Updater then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews BASEDIR=/
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fi
e20309353e6246485c521278131d3fced73d7957Tinderbox User alias=""
e20309353e6246485c521278131d3fced73d7957Tinderbox User class=""
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews ADD_ALIAS=0
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ADD_CLASS=0
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ADD_MINOR=0
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews OPTIND=1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews IS_NET_DRIVER=0
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews cmd="add_drv"
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews NO_CMD=
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews while getopts i:b:m:c:N opt
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews do
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews case $opt in
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews N ) NO_CMD=1;;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews i ) ADD_ALIAS=1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews alias=$OPTARG
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews cmd=$cmd" -i '$alias'"
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews ;;
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews m ) ADD_MINOR=1
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User minor=$OPTARG
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User cmd=$cmd" -m '$minor'"
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt ;;
e130ab53e992670e2a2ecf043976ac09f21358d1Automatic Updater c) ADD_CLASS=1
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater class=$OPTARG
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt cmd=$cmd" -c $class"
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater ;;
24934f08b9ff81c2be711e566e8002d145573031Tinderbox User b) BASEDIR=$OPTARG
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater cmd=$cmd" -b $BASEDIR"
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt ;;
24934f08b9ff81c2be711e566e8002d145573031Tinderbox User \?) echo "check_add_drv can not handle this option"
e9e4257668ff6c4e583b0c0db2508650b0b677b8Tinderbox User return
aa9c561961e9d877946ebaa8795fa2be054ab7bfEvan Hunt ;;
710bce1a85c96e85ca1a90471382055acd29d51fTinderbox User esac
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater done
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater shift `/usr/bin/expr $OPTIND - 1`
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews drvname=$1
cdfc81e048bd34c1d628380247bda6b80a89e20eAutomatic Updater
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews cmd=$cmd" "$drvname
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'`
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater /usr/bin/grep "^$drvname[ ]" $BASEDIR/etc/name_to_major > /dev/null 2>&1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ "$NO_CMD" = "" -a $? -ne 0 ]
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews eval $cmd
9513a2a6670951f5cf5477fcfec9f933fcaff628Automatic Updater else
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews # entry already in name_to_major, add alias, class, minorperm
eabc9c3c07cd956d3c436bd7614cb162dabdda76Mark Andrews # if necessary
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ $ADD_ALIAS = 1 ]
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews for i in $alias
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews do
b886b04d8d2b085cbf3e1bf4442dee87f43ba5e4Tinderbox User /usr/bin/egrep "^$drvname[ ]+$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1
e20309353e6246485c521278131d3fced73d7957Tinderbox User if [ $? -ne 0 ]
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews then
24934f08b9ff81c2be711e566e8002d145573031Tinderbox User echo "$drvname $i" >> $BASEDIR/etc/driver_aliases
e20309353e6246485c521278131d3fced73d7957Tinderbox User fi
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews done
7feccf248d2a20a2ae48b290f58ded5abc853e9aTinderbox User fi
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews
ad411d8ccf8a27eb903b842ab507ba6729d0246bTinderbox User if [ $ADD_CLASS = 1 ]
80faf1588895fd26490f82f95a7a1b771df1c324Automatic Updater then
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews /usr/bin/egrep "^$drvname[ ]+$class( | |$)" $BASEDIR/etc/driver_classes > /dev/null 2>&1
ad411d8ccf8a27eb903b842ab507ba6729d0246bTinderbox User if [ $? -ne 0 ]
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews then
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews echo "$drvname\t$class" >> $BASEDIR/etc/driver_classes
28a5dd720187fddb16055a0f64b63a7b66f29f64Mark Andrews fi
c651f15b30f1dae5cc2f00878fb5da5b3a35a468Mark Andrews fi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson if [ $ADD_MINOR = 1 ]
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews /usr/bin/grep "^$drvname:" $BASEDIR/etc/minor_perm > /dev/null 2>&1
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews if [ $? -ne 0 ]
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews then
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews minorentry="$drvname:$minor"
efb0e886f18894a1d2489f1ad74ad14b579e11c7Mark Andrews echo $minorentry >> $BASEDIR/etc/minor_perm
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews fi
91216cff91b34c9ff6e846dc23f248219cafe660Andreas Gustafsson
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews}
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrewscheck_add_drv -i '"pci17d5,5731" "pci17d5,5831"' -b "$BASEDIR" xge
0eb371ca0dab50ae3462e98794a6126198c52f4bMark Andrews