mirror of
https://git.FreeBSD.org/ports.git
synced 2024-10-30 21:49:25 +00:00
17f100b08d
Submitted by: Daniel O'Connor <doconnor@gsoft.com.au>
172 lines
3.7 KiB
Plaintext
172 lines
3.7 KiB
Plaintext
--- work/skip/freebsd/rc.orig Wed Nov 1 20:12:36 2000
|
|
+++ work/skip/freebsd/rc Wed Nov 1 20:17:37 2000
|
|
@@ -44,22 +44,30 @@
|
|
|
|
#pragma ident "@(#)rc 1.5 96/10/08 Sun Microsystems"
|
|
#
|
|
-PATH=/bin:/usr/bin:/sbin:/usr/ucb:/usr/etc
|
|
-SKIP_PATH=${SKIP_PATH-/usr/skip}
|
|
-SKIPD=/usr/skip/bin/skipd
|
|
-SKIP_HOST=/usr/skip/bin/skiphost
|
|
-SKIP_VAR_CMD=/usr/skip/bin/skipvar
|
|
-SKIP_SECURE_HOSTS=/etc/skip/hosts
|
|
-SKIP_ETC=/etc/skip
|
|
-SKIP_VAR=/var/skip
|
|
+
|
|
+PATH=/bin:/usr/bin:/sbin:/usr/sbin
|
|
+PREFIX=@@PREFIX@@
|
|
+
|
|
+SKIP_BIN=${PREFIX}/bin
|
|
+SKIP_ETC=${PREFIX}/etc/skip
|
|
+SKIP_LKM=${PREFIX}/modules
|
|
+
|
|
+SKIPD=${SKIP_BIN}/skipd
|
|
+SKIP_HOST=${SKIP_BIN}/skiphost
|
|
+SKIP_MKDEV=${SKIP_ETC}/skip.mkdev
|
|
+SKIP_SECURE_HOSTS=${SKIP_ETC}/hosts
|
|
+
|
|
+SKIP_VAR=/var/tmp
|
|
VAR_SIZE=830
|
|
-SKIP_REQ_FILES="$SKIP_PATH/drv/skip.o $SKIP_ETC/skip.mkdev"
|
|
-PSEUDO_DRVS="skip"
|
|
+
|
|
+SKIP_MOD="skip.ko"
|
|
+SKIP_REQ_FILES="${SKIP_LKM}/${SKIP_MOD} ${SKIP_ETC}/skip.mkdev"
|
|
|
|
verify_owner()
|
|
{
|
|
me=`whoami`
|
|
if [ $me != "root" ]; then
|
|
+ echo ""
|
|
echo "skip: this script must be run as root ... fatal error"
|
|
exit 1
|
|
fi
|
|
@@ -68,6 +76,7 @@
|
|
pre_checks() {
|
|
for FILE in $SKIP_REQ_FILES; do
|
|
if [ ! -f $FILE ]; then
|
|
+ echo ""
|
|
echo "skip: installation problem detected"
|
|
echo "skip: $FILE not found"
|
|
echo "skip: please refer to installation guide"
|
|
@@ -76,6 +85,7 @@
|
|
done
|
|
|
|
if [ ! -w $SKIP_VAR ]; then
|
|
+ echo ""
|
|
echo "skip: can not write to $SKIP_VAR"
|
|
exit 1
|
|
fi
|
|
@@ -85,11 +95,12 @@
|
|
|
|
sync
|
|
|
|
- DISK_AVAIL=`df $SKIP_VAR | awk 'NR==2 {x=$4}
|
|
+ DISK_AVAIL=`df -k $SKIP_VAR | awk 'NR==2 {x=$4}
|
|
NR==3 {x=$3}
|
|
END {print x}'`
|
|
|
|
if [ $DISK_AVAIL -lt $VAR_SIZE ]; then
|
|
+ echo ""
|
|
echo "skip: not enough space available in $SKIP_VAR"
|
|
echo "skip: $VAR_SIZE kbytes will be required to run the product"
|
|
exit 1
|
|
@@ -98,48 +109,70 @@
|
|
|
|
load_driver()
|
|
{
|
|
- modstat > $SKIP_VAR/modules
|
|
-
|
|
- # load pseudo-drivers
|
|
- for driver in $PSEUDO_DRVS; do
|
|
-
|
|
- awk '{ print $8 }' $SKIP_VAR/modules | grep $driver > /dev/null 2>&1
|
|
+ kldstat | awk '{ print $5 }' | grep ${SKIP_MOD} > /dev/null 2>&1
|
|
|
|
- if [ $? -eq 0 ]; then
|
|
- echo "skip: driver already loaded"
|
|
- else
|
|
- echo "skip: loading driver"
|
|
- modload -o $SKIP_VAR/$driver \
|
|
- -p $SKIP_ETC/$driver.mkdev \
|
|
- $SKIP_PATH/drv/$driver.o> /dev/null
|
|
+ if [ $? -ne 0 ]; then
|
|
|
|
+ # Load KLD
|
|
+ kldload ${SKIP_LKM}/${SKIP_MOD} > /dev/null
|
|
+ if [ $? -ne 0 ]; then
|
|
+ echo ""
|
|
+ echo "skip: failed to load driver"
|
|
+ exit 1
|
|
+ fi
|
|
|
|
- if [ $? -ne 0 ]; then
|
|
- echo "skip: failed to load driver"
|
|
- echo "skip: perhaps too many drivers are loaded?"
|
|
+ # Absurd hack to find out device major number
|
|
+ # Check for devfs first
|
|
+ if [ -z "`mount | grep /dev | grep devfs`" ]; then
|
|
+ DEV_MAJOR=`/sbin/dmesg | grep 'skip: device major=' | tail -1 | sed 's/^.*=\
|
|
([0-9]\{1,\}\),.*$/\1/g'`
|
|
+ if [ "${DEV_MAJOR}" = "" ]; then
|
|
+ echo ""
|
|
+ echo "skip: can't determine skip device major number"
|
|
exit 1
|
|
fi
|
|
|
|
+ # Create device nodes
|
|
+ ${SKIP_MKDEV} ${DEV_MAJOR}
|
|
fi
|
|
- done
|
|
+ fi
|
|
+
|
|
}
|
|
|
|
start_daemons() {
|
|
if [ -x $SKIPD ]; then
|
|
- echo -n "starting skip key manager daemon"
|
|
- $SKIPD > /var/log/skipd.log &
|
|
- echo "."
|
|
+ $SKIPD
|
|
fi
|
|
|
|
if [ -x $SKIP_SECURE_HOSTS -a -x $SKIP_HOST ]; then
|
|
- $SKIP_SECURE_HOSTS >> /var/log/skipd.log 2>&1 &
|
|
+ $SKIP_SECURE_HOSTS >> /var/log/skiphost.log 2>&1 &
|
|
fi
|
|
}
|
|
|
|
# main
|
|
-verify_owner
|
|
-pre_checks
|
|
-load_driver
|
|
-start_daemons
|
|
|
|
-exit 0
|
|
+if [ $? -ne 0 ]; then
|
|
+ cmd=start
|
|
+else
|
|
+ cmd=$1
|
|
+fi
|
|
+
|
|
+case "$1" in
|
|
+start)
|
|
+ # keep console output pretty
|
|
+ echo -n " skip"
|
|
+
|
|
+ verify_owner
|
|
+ pre_checks
|
|
+ load_driver
|
|
+ start_daemons
|
|
+ ;;
|
|
+
|
|
+stop)
|
|
+ ;;
|
|
+
|
|
+*)
|
|
+ echo "Usage: `basename $0` {start|stop}" >&2
|
|
+ ;;
|
|
+
|
|
+esac
|
|
+
|