_lsipc_module()
{
	local cur prev OPTS ARG
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-i'|'--id')
			COMPREPLY=( $(compgen -W "id" -- $cur) )
			return 0
			;;
		'-N'|'--name')
			COMPREPLY=( $(compgen -W "name" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
		'--time-format')
			COMPREPLY=( $(compgen -W "short full iso" -- $cur) )
			return 0
			;;
		'-o'|'--output')
			local prefix realcur OUTPUT_ALL OUTPUT
			realcur="${cur##*,}"
			prefix="${cur%$realcur}"
			OUTPUT_ALL="
				KEY ID OWNER PERMS CUID CUSER CGID
				CGROUP UID USER GID GROUP CTIME

				SIZE NATTCH STATUS ATTACH DETACH
				COMMAND CPID LPID

				USEDBYTES MSGS SEND RECV LSPID LRPID

				NSEMS OTIME

				RESOURCE DESCRIPTION LIMIT USED USE%
			"
			for WORD in $OUTPUT_ALL; do
				if ! [[ $prefix == *"$WORD"* ]]; then
					OUTPUT="$WORD ${OUTPUT:-""}"
				fi
			done
			compopt -o nospace
			COMPREPLY=( $(compgen -P "$prefix" -W "$OUTPUT" -S ',' -- $realcur) )
			return 0
			;;
	esac
	OPTS="
		--shmems
		--posix-shmems
		--queues
		--posix-mqueues
		--semaphores
		--posix-semaphores
		--global
		--id
		--name
		--noheadings
		--notruncate
		--time-format
		--bytes
		--creator
		--export
		--json
		--newline
		--list
		--output
		--numeric-perms
		--raw
		--time
		--shell
		--help
		--version
	"
	COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
	return 0
}
complete -F _lsipc_module lsipc
