| #!/bin/sh | |
| # Copyright 2006 Kel Modderman <kelrin@tpg.com.au> | |
| # | |
| # Taken from madwifi scripts. This unloads madwifi | |
| : ${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 |