59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/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
 |