_eject_module()
{
	local cur prev OPTS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-a'|'--auto'|'-i'|'--manualeject')
			COMPREPLY=( $(compgen -W "off on" -- $cur) )
			return 0
			;;
		'-c'|'--changerslot')
			# FIXME: there must be way to determine slots
			COMPREPLY=( $(compgen -W "slot" -- $cur) )
			return 0
			;;
		'-x'|'--cdspeed')
			COMPREPLY=( $(compgen -W "$(eject --listspeed 2>/dev/null)" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	case $cur in
		-*)
			OPTS="--auto
				--changerslot
				--default
				--floppy
				--force
				--manualeject
				--no-unmount
				--no-partitions-unmount
				--noop
				--proc
				--tape
				--cdrom
				--scsi
				--trayclose
				--traytoggle
				--verbose
				--cdspeed
				--listspeed
				--help
				--version"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	local DEVS
	DEVS="$(for I in /sys/class/block/*/removable; do
		if [ $(cat $I) -ne 0 ]; then
			OLD_IFS=$IFS
			IFS='/';
			ARR=($I)
			echo "/dev/${ARR[4]}"
			IFS=$OLD_IFS
		fi
	done)"
	COMPREPLY=( $(compgen -W "$DEVS" $cur) )
	return 0
}
complete -F _eject_module eject
