home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World 2000 February
/
PCWorld_2000-02_cd.bin
/
live
/
etc
/
init.d
/
pcmcia
< prev
next >
Wrap
Text File
|
1999-11-12
|
4KB
|
162 lines
#!/bin/sh
#
# rc.pcmcia 1.26 1999/04/15 03:02:41 (David Hinds)
#
# This is designed to work in BSD as well as SysV init setups. See
# the HOWTO for customization instructions.
# Modified to comply with Debian's standards by Brian Mays <brian@debian.org>.
#
# Modifications to this program were made by Corel Corporation, November, 1999. All such modifications are copyright (C)
# 1999 Corel Corporation and are licensed under the terms of the GNU General Public License.
usage()
{
echo "Usage: $0 {start|stop|restart|reload}"
}
cleanup()
{
while read SN CLASS MOD INST DEV EXTRA ; do
if [ "$SN" != "Socket" ] ; then
/etc/pcmcia/$CLASS stop $DEV 2> /dev/null
fi
done
}
# Allow environment variables to override all options
if [ "$PCMCIA" ] ; then readonly PCMCIA ; fi
if [ "$PCIC" ] ; then readonly PCIC ; fi
if [ "$PCIC_OPTS" ] ; then readonly PCIC_OPTS ; fi
if [ "$CORE_OPTS" ] ; then readonly CORE_OPTS ; fi
if [ "$CARDMGR_OPTS" ] ; then readonly CARDMGR_OPTS ; fi
if [ "$SCHEME" ] ; then readonly SCHEME ; fi
# Source PCMCIA configuration, if available
if [ -f /etc/pcmcia.conf ] ; then
. /etc/pcmcia.conf
elif [ -f /etc/sysconfig/pcmcia ] ; then
. /etc/sysconfig/pcmcia
else
# Should be either i82365 or tcic
PCIC=i82365
# Put socket driver timing parameters here
PCIC_OPTS=
# Put pcmcia_core options here
CORE_OPTS=
# Put cardmgr options here
CARDMGR_OPTS=
# To set the PCMCIA scheme at startup...
SCHEME=
fi
if [ "$PCMCIA" -a "$PCMCIA" != "yes" ] ; then exit 0 ; fi
EXITCODE=1
for x in "1" ; do
if [ "$PCIC" = "" ] ; then
echo "PCIC not defined in /etc/init.d/pcmcia!"
break
fi
if [ $# -lt 1 ] ; then usage ; break ; fi
action=$1
case "$action" in
'start')
echo -n "Starting PCMCIA services:"
SC=/var/lib/misc/pcmcia-scheme
if [ -L $SC -o ! -O $SC ] ; then rm -f $SC ; fi
if [ ! -f $SC ] ; then umask 022 ; touch $SC ; fi
if [ "$SCHEME" ] ; then umask 022 ; echo $SCHEME > $SC ; fi
fgrep -q pcmcia /proc/devices
if [ $? -ne 0 ] ; then
if [ -d /lib/modules/preferred ] ; then
PC=/lib/modules/preferred/pcmcia
else
PC=/lib/modules/`uname -r`/pcmcia
fi
if [ -d $PC ] ; then
echo -n " modules"
/sbin/insmod $PC/pcmcia_core.o $CORE_OPTS
/sbin/insmod $PC/$PCIC.o $PCIC_OPTS || ( rmmod pcmcia_core ; exit 1 )
/sbin/insmod $PC/ds.o 2>&1 > /dev/null
else
echo " module directory $PC not found."
break
fi
fi
if [ -s /var/run/cardmgr.pid ] && \
start-stop-daemon --stop --quiet --signal 0 \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr ; then
echo " cardmgr is already running."
else
if [ -r /var/run/stab ] ; then
cat /var/run/stab | cleanup
fi
echo " cardmgr."
start-stop-daemon --start --quiet --pidfile /var/run/cardmgr.pid \
--exec /sbin/cardmgr -- $CARDMGR_OPTS
fi
if [ -d /var/lock/subsys ] ; then
touch /var/lock/subsys/pcmcia
fi
sleep 5 #to put it to sleep for 5 seconds
/etc/init.d/network #Have network up and running after the pcmcia is started.
EXITCODE=0
;;
'stop')
echo -n "Shutting down PCMCIA services:"
start-stop-daemon --stop --quiet \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr
echo -n " cardmgr"
# Give cardmgr a few seconds to handle the signal
start-stop-daemon --stop --quiet --signal 0 \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr && \
sleep 2 && \
start-stop-daemon --stop --quiet --signal 0 \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr && \
sleep 2 && \
start-stop-daemon --stop --quiet --signal 0 \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr && \
sleep 2 && \
start-stop-daemon --stop --quiet --signal 0 \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr
if fgrep -q "ds " /proc/modules ; then
echo -n " modules"
/sbin/rmmod ds
/sbin/rmmod $PCIC
/sbin/rmmod pcmcia_core
fi
echo "."
rm -f /var/lock/subsys/pcmcia
EXITCODE=0
;;
'restart')
$0 stop
$0 start
EXITCODE=0
;;
'reload')
echo "Reloading $DESC configuration files."
start-stop-daemon --stop --signal 1 --quiet \
--pidfile /var/run/cardmgr.pid --exec /sbin/cardmgr
EXITCODE=0
;;
*)
usage
;;
esac
done
# Only exit if we're in our own subshell
if [ "${0##*/}" = "pcmcia" ] ; then
exit $EXITCODE
fi