home *** CD-ROM | disk | FTP | other *** search
- #!/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
-