_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
			;;
		'--socket-errors')
			COMPREPLY=( $(compgen -W "on off auto" -- $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
				--socket-errors
				--stderr
				--tag
				--tcp
				--udp
				--version
			"
			COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
			return 0
			;;
	esac
	return 0
}
complete -F _logger_module logger
