[zaptel-commits] tzafrir: trunk r2256 - /trunk/zaptel.init
zaptel-commits at lists.digium.com
zaptel-commits at lists.digium.com
Thu Mar 1 01:16:42 MST 2007
Author: tzafrir
Date: Thu Mar 1 02:16:41 2007
New Revision: 2256
URL: http://svn.digium.com/view/zaptel?view=rev&rev=2256
Log:
Fixed module unloading in the zaptel init script.
Modified:
trunk/zaptel.init
Modified: trunk/zaptel.init
URL: http://svn.digium.com/view/zaptel/trunk/zaptel.init?view=diff&rev=2256&r1=2255&r2=2256
==============================================================================
--- trunk/zaptel.init (original)
+++ trunk/zaptel.init Thu Mar 1 02:16:41 2007
@@ -37,11 +37,26 @@
MODULES="tor2 wct4xxp wct1xxp wcte11xp wcfxo wctdm wctdm24xxp"
fi
-RMODULES=""
-# Reverse list for un-loading; don't change
-for x in $MODULES; do
- RMODULES="$x $RMODULES"
-done
+# recursively unload a module and its dependencies, if possible.
+# where's modprobe -r when you need it?
+# inputs: module to unload.
+# returns: the result from
+unload_module() {
+ module="$1"
+ line=`lsmod 2>/dev/null | grep "^$1 "`
+ if [ "$line" = '' ]; then return; fi # module was not loaded
+
+ set -- $line
+ # $1: the original module, $2: size, $3: refcount, $4: deps list
+ mods=`echo $4 | tr , ' '`
+ for mod in $mods; do
+ # run in a subshell, so it won't step over our vars:
+ (unload_module $mod)
+ # TODO: the following is probably the error handling we want:
+ # if [ $? != 0 ]; then return 1; fi
+ done
+ rmmod $module
+}
# Check that telephony is up.
[ "${TELEPHONY}" = "yes" ] || exit 0
@@ -107,23 +122,16 @@
stop)
# Unload drivers
echo -n "Unloading zaptel hardware drivers:"
- for x in $RMODULES; do
- if rmmod ${x} >& /dev/null; then
- echo -n " $x"
- fi
- done
+ unload_module zaptel
+ RETVAL=$?
echo "."
- if [ $system = debian ]; then
- echo -n "Removing zaptel module: "
- rmmod zaptel >& /dev/null && echo -n "done"
- echo "."
- elif [ $system = redhat ]; then
- action "Removing zaptel module: " rmmod zaptel
- fi
- RETVAL=$?
-
[ $RETVAL -eq 0 ] && rm -f $LOCKFILE
+ ;;
+ unload)
+ # We don't have zaptel helper, so let's not replicate too much code:
+ # allow others to use the unload command.
+ unload zaptel
;;
restart)
$0 stop
More information about the zaptel-commits
mailing list