1 #!/sbin/sh 2 # 3 # Copyright 2007 Sun Microsystems, Inc. All rights reserved. 4 # Use is subject to license terms. 5 # 6 # ident "%Z%%M% %I% %E% SMI" 7 # 8 9 # Function: check_add_drv() 10 # 11 # This function will check if the module has an entry in etc/name_to_major 12 # If not simply calls add_drv with the arguments given. If there is 13 # such an entry in name_to_major file, it adds entries in driver_aliases 14 # driver_classes and minor_perm if necessary. 15 # The syntax of this function is the same as add_drv. 16 17 check_add_drv() 18 { 19 if [ "$BASEDIR" = "" ] 20 then 21 BASEDIR=/ 22 fi 23 alias="" 24 class="" 25 ADD_ALIAS=0 26 ADD_CLASS=0 27 ADD_MINOR=0 28 OPTIND=1 29 IS_NET_DRIVER=0 30 31 cmd="add_drv" 32 33 NO_CMD= 34 while getopts i:b:m:c:N opt 35 do 36 case $opt in 37 N ) NO_CMD=1;; 38 i ) ADD_ALIAS=1 39 alias=$OPTARG 40 cmd=$cmd" -i '$alias'" 41 ;; 42 m ) ADD_MINOR=1 43 minor=$OPTARG 44 cmd=$cmd" -m '$minor'" 45 ;; 46 c) ADD_CLASS=1 47 class=$OPTARG 48 cmd=$cmd" -c $class" 49 ;; 50 b) BASEDIR=$OPTARG 51 cmd=$cmd" -b $BASEDIR" 52 ;; 53 \?) echo "check_add_drv can not handle this option" 54 return 55 ;; 56 esac 57 done 58 shift `/usr/bin/expr $OPTIND - 1` 59 60 drvname=$1 61 62 cmd=$cmd" "$drvname 63 64 drvname=`echo $drvname | /usr/bin/sed 's;.*/;;g'` 65 66 /usr/bin/grep "^$drvname[ ]" $BASEDIR/etc/name_to_major > /dev/null 2>&1 67 68 if [ "$NO_CMD" = "" -a $? -ne 0 ] 69 then 70 eval $cmd 71 else 72 # entry already in name_to_major, add alias, class, minorperm 73 # if necessary 74 if [ $ADD_ALIAS = 1 ] 75 then 76 for i in $alias 77 do 78 /usr/bin/egrep "^$drvname[ ]+$i" $BASEDIR/etc/driver_aliases>/dev/null 2>&1 79 if [ $? -ne 0 ] 80 then 81 echo "$drvname $i" >> $BASEDIR/etc/driver_aliases 82 fi 83 done 84 fi 85 86 if [ $ADD_CLASS = 1 ] 87 then 88 /usr/bin/egrep "^$drvname[ ]+$class( | |$)" $BASEDIR/etc/driver_classes > /dev/null 2>&1 89 if [ $? -ne 0 ] 90 then 91 echo "$drvname\t$class" >> $BASEDIR/etc/driver_classes 92 fi 93 fi 94 95 if [ $ADD_MINOR = 1 ] 96 then 97 /usr/bin/grep "^$drvname:" $BASEDIR/etc/minor_perm > /dev/null 2>&1 98 if [ $? -ne 0 ] 99 then 100 minorentry="$drvname:$minor" 101 echo $minorentry >> $BASEDIR/etc/minor_perm 102 fi 103 fi 104 105 fi 106 107 108 } 109 110 check_add_drv -i '"pci1028,3" "pci1028,a" "pci9005,285" "pci9005,286" "pciex9005,285" "pciex9005,286"' -b "$BASEDIR" -c scsi aac 111