postremove revision 7c478bd95313f5f23a4c958a745db2134aa03244
#! /bin/sh
#
# CDDL HEADER START
#
# The contents of this file are subject to the terms of the
# Common Development and Distribution License, Version 1.0 only
# (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
#
# ident "%Z%%M% %I% %E% SMI"
# SUNWpd postremove script
# Copyright (c) 1995,1999-2000 by Sun Microsystems, Inc.
# All rights reserved.
killproc() { # kill the named process(es)
pid=`/usr/bin/ps -e |
/usr/bin/grep $1 |
/usr/bin/sed -e 's/^ *//' -e 's/ .*//'`
[ "$pid" != "" ] && kill $pid
}
PATH="/usr/bin:/usr/sbin:${PATH}"
export PATH
status=0
NAMEMAJOR="${BASEDIR}/etc/name_to_major"
MINORPERM="${BASEDIR}/etc/minor_perm"
DEVLINKTB="$BASEDIR/etc/devlink.tab"
DRIVERALS="$BASEDIR/etc/driver_aliases"
rm -f /dev/pmc
if test ! -f ${NAMEMAJOR} -o ! -w ${NAMEMAJOR}
then
echo "rem_major: data file \'${NAMEMAJOR}\' is missing/inaccessible." >&2
exit 1
fi
if test ! -f ${MINORPERM} -o ! -w ${MINORPERM}
then
echo "rem_minor: data file \'${MINORPERM}\' is missing/inaccessible." >&2 exit 1
fi
if test ! -f ${DEVLINKTB} -o ! -w ${DEVLINKTB}; then
echo "rem_devlink: data file ${DEVLINKTB} is missing/inaccessible." >&2
exit 1
fi
if test ! -f ${DRIVERALS} -o ! -w ${DRIVERALS}; then
echo "rem_drv_alias: data file ${DRIVERALS} is missing/inaccessible." >&2
exit 1
fi
trap "rm -f /tmp/$$.*;exit 1" 1 2 3 13 15
TMP=/tmp/$$
# removes major numbers from system for device drivers
# Usage:
# rem_major name1 name2 name3 name4 ....
rem_major()
{
sort +1 -2n ${NAMEMAJOR} | nawk '#
NR == 1 {n=split(namelist,x)
if (n < 1)
exit(1)
for (i=1; i<=n; i++)
chklist[x[i]]++
}
{if ($1 in chklist)
print
}
' namelist="$*" - > $TMP.del
if [ -s $TMP.del ]
then
fgrep -v -x -f $TMP.del ${NAMEMAJOR} | sort +1 -2n -o ${NAMEMAJOR}
fi
}
# removes minor permissions from system for device drivers
# Usage:
# rem_minor name1 name2 name3 name4 ....
# i.e.
# rem_minor 'sd:*' 'sd:a'
rem_minor()
{
for p in "$@"
do echo "$p"
done | nawk '#
FILENAME != "-" {permtab[$1] = $0;next}
FILENAME == "-" {
if ($1 !~ /:/) {
printf("Bad name:minor pair: %s, skipping.\n", $1)
next
}
if ($1 in permtab)
print permtab[$1] >> permdel
next
}
' permdel=$TMP.perm ${MINORPERM} - >&2
if [ -s $TMP.perm ]
then
fgrep -v -x -f $TMP.perm ${MINORPERM} | sort +0 -1 -o ${MINORPERM}
fi
}
# removes entries from devlink.tab file
# Usage:
# rem_devlink spec1 spec2 spec3 spec4 ...
#
# where each <spec> is:
# <devfs-spec> <dev-name> <dev-link>
#
#
rem_devlink()
{
while test $# -ge 2
do
echo "$1 $2"
shift 2
done | nawk '-F ' '#
FILENAME != "-" {devlinktab[$1] = $0;next}
FILENAME == "-" {if ($1 in devlinktab)
print devlinktab[$1] >> devlinktmp
}
' devlinktmp=$TMP.devlink ${DEVLINKTB} - >&2
if [ -s $TMP.devlink ]
then
fgrep -v -x -f $TMP.devlink ${DEVLINKTB} > $TMP.devlinknew && \
cp $TMP.devlinknew ${DEVLINKTB}
fi
}
# removes entries to driver_aliases file
# Usage:
# rem_drv_alias spec1 spec2 spec3
#
# where spec is:
# <driver> <alias>
#
rem_drv_alias()
{
while test $# -ge 2
do
echo "$1 $2"
shift 2
done | nawk '#
FILENAME != "-" {drvalias[$1] = $0;next}
FILENAME == "-" {if ($1 in drvalias)
print drvalias[$1] >> drvaliastmp
}
' drvaliastmp=$TMP.drvalias ${DRIVERALS} - >&2
if [ -s $TMP.drvalias ]
then
# echo Removing
# cat $TMP.drvalias
fgrep -v -x -f $TMP.drvalias ${DRIVERALS} > $TMP.drvaliasnew && \
cp $TMP.drvaliasnew ${DRIVERALS}
fi
}
# Remove drivers if installed
modnum=`grep -c ecpp ${NAMEMAJOR}`
if [ "$modnum" = "1" ]; then
/usr/sbin/rem_drv -b ${BASEDIR} ecpp || status=1
fi
rm -f /tmp/$$.*
exit $status