_logger_module()
{
	local cur prev OPTS
	COMPREPLY=()
	cur="${COMP_WORDS[COMP_CWORD]}"
	prev="${COMP_WORDS[COMP_CWORD-1]}"
	case $prev in
		'-f'|'--file'|'--journald')
			local IFS=$'\n'
			compopt -o filenames
			COMPREPLY=( $(compgen -f -- $cur) )
			return 0
			;;
		'-n'|'--server')
			COMPREPLY=( $(compgen -A hostname -- $cur) )
			return 0
			;;
		'-P'|'--port')
			COMPREPLY=( $(compgen -W "$(awk '$1 ~ /^syslog$/  {split($2, a, "/"); print a[1]}' /etc/services)" -- $cur) )
			return 0
			;;
		'-p'|'--priority')
			COMPREPLY=( $(compgen -W "{auth,authpriv,cron,daemon,ftp,lpr,mail,news,security}.{alert,crit,debug,emerg,err,error}" -- $cur) )
			return 0
			;;
		'-t'|'--tag')
			COMPREPLY=( $(compgen -W "tag" -- $cur) )
			return 0
			;;
		'-u'|'--socket')
			COMPREPLY=( $(compgen -W "$(awk '$NF ~ /^\// {print $NF}' /proc/net/unix)" -- $cur) )
			return 0
			;;
		'--msgid')
			COMPREPLY=( $(compgen -W "msgid" -- $cur) )
			return 0
			;;
		'-h'|'--help'|'-V'|'--version')
			return 0
			;;
	esac
	case $cur in
		-*)
			OPTS="
				--file
				--help
				--id
				--journald
				--msgid
				--no-act
				--octet-count
				--port
				--prio-prefix
				--priority
				--rfc3164
				--rfc5424
				--server
				--size
				--skip-empty
				--socket
				--stderr
				--tag
				--udp
				--version
			"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	return 0
}
complete -F _logger_module logger
