# -*- mode: shell-script; sh-basic-offset: 8; indent-tabs-mode: t -*-
# ex: ts=8 sw=8 noet filetype=sh
#
# bash completion for getent

have getent &&
_getent()
{
	local cur prev

	COMPREPLY=()
	cur=`_get_cword`
	prev=${COMP_WORDS[COMP_CWORD-1]}

	case $prev in
		passwd)
			COMPREPLY=( $( compgen -u $cur  ) )
			return 0
			;;
		group)
			COMPREPLY=( $( compgen -g $cur  ) )
			return 0
			;;
		services)
			COMPREPLY=( $( compgen -s $cur  ) )
			return 0
			;;
		hosts)
			COMPREPLY=( $( compgen -A hostname $cur  ) )
			return 0
			;;
		protocols|networks|ahosts|ahostsv4|ahostsv6|rpc)
			COMPREPLY=( $( getent $prev | \
				sed -ne 's|^\('$cur'[^[:space:]]*\).*|\1|p' ) )
			return 0
			;;
		aliases|shadow)
			COMPREPLY=( $( getent $prev | \
				sed -ne 's|^\('$cur'[^:]*\).*|\1|p' ) )
			return 0
			;;
	esac


	if [ $COMP_CWORD -eq 1 ]; then
		COMPREPLY=( $( compgen -W 'passwd group hosts services \
					   protocols networks ahosts ahostsv4 \
					   ahostsv6 aliases ethers netgroup \
					   rpc shadow' -- $cur ) )
	fi
} &&
complete -F _getent getent
