_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
			;;
		'-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
		--queues
		--semaphores
		--global
		--id
		--noheadings
		--notruncate
		--time-format
		--bytes
		--creator
		--export
		--json
		--newline
		--list
		--output
		--numeric-perms
		--raw
		--time
		--help
		--version
	"
	COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
	return 0
}
complete -F _lsipc_module lsipc
