madwifi/scripts/madwifi-unload

56 lines
1.0 KiB
Bash
Executable File

#!/bin/sh
: ${PATTERN='\(ath_.*\|wlan_.*\|wlan\)$'}
: ${MAX_TRIES=10}
test "$(id -u)" = 0 || {
echo "ERROR: You must be root to run this script" >&2
exit 1
}
test -r /proc/modules || {
echo "ERROR: Cannot read /proc/modules" >&2
exit 1
}
tries="$MAX_TRIES"
while test "$tries" != "0"; do
skipped=0
IFS='
'
for line in $(cat /proc/modules); do
IFS=' '
set x $line
name="$2"
size="$3"
use_count="$4"
use_name="$5"
state="$6"
expr "$name" : "$PATTERN" >/dev/null || continue
# Compatibility for Linux 2.4.x
test -z "$state" && { use_name="-"; state="Live"; }
if test "$state" != "Live" || test "$use_count" != "0" || \
test "$use_name" != "-"; then
# Don't skip unload in the last run
if test "$tries" != "1"; then
skipped=1
continue
fi
fi
echo "Unloading \"$name\""
sync # to be safe
/sbin/rmmod "$name" || {
echo "ERROR: cannot unload module \"$name\"" >&2
exit 1
}
sync # to be even safer
done
test "$skipped" = "0" && break
tries=$(($tries - 1))
done
exit 0