_ipcrm_module()
{
	local cur prev OPTS KEYIDS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-m'|'--shmem-id')
			KEYIDS="$(ipcs -m | awk '{if (3 < NR) {print $2}}')"
			COMPREPLY=( $(compgen -W "$KEYIDS" -- $cur) )
			return 0
			;;
		'-M'|'--shmem-key')
			KEYIDS="$(ipcs -m | awk '{if (3 < NR) {print $1}}')"
			COMPREPLY=( $(compgen -W "$KEYIDS" -- $cur) )
			return 0
			;;
		'-q'|'--queue-id')
			KEYIDS="$(ipcs -q | awk '{if (3 < NR) {print $2}}')"
			COMPREPLY=( $(compgen -W "$KEYIDS" -- $cur) )
			return 0
			;;
		'-Q'|'--queue-key')
			KEYIDS="$(ipcs -q | awk '{if (3 < NR) {print $1}}')"
			COMPREPLY=( $(compgen -W "$KEYIDS" -- $cur) )
			return 0
			;;
		'-s'|'--semaphore-id')
			KEYIDS="$(ipcs -s | awk '{if (3 < NR) {print $2}}')"
			COMPREPLY=( $(compgen -W "$KEYIDS" -- $cur) )
			return 0
			;;
		'-S'|'--semaphore-key')
			KEYIDS="$(ipcs -s | awk '{if (3 < NR) {print $1}}')"
			COMPREPLY=( $(compgen -W "$KEYIDS" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	case $cur in
		'=')
			cur=${cur#=}
			COMPREPLY=( $(compgen -W "shm msg sem" -- $cur) )
			return 0
			;;
	esac
	OPTS="	--shmem-id
		--shmem-key
		--queue-id
		--queue-key
		--semaphore-id
		--semaphore-key
		--all=
		--verbose
		--help
		--version"
	COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
	return 0
}
complete -F _ipcrm_module ipcrm
