mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Text
		
	
	
		
			Executable file
		
	
	
	
	
#compdef getent
 | 
						|
 | 
						|
local curcontext="$curcontext" state line expl ret=1
 | 
						|
local services databases keys
 | 
						|
local -a args
 | 
						|
typeset -A opt_args
 | 
						|
 | 
						|
if _pick_variant -r is_gnu gnu=GNU unix --version; then
 | 
						|
  args+=(
 | 
						|
    '(- 1 *)'{-\?,--help}'[display help information]'
 | 
						|
    '(- 1 *)--usage[display a short usage message]'
 | 
						|
    '(- 1 *)'{-V,--version}'[display version information]'
 | 
						|
    {-s,--service=}'[specify service configuration to use]:service:->services'
 | 
						|
  )
 | 
						|
fi
 | 
						|
 | 
						|
_arguments -C "$args[@]" \
 | 
						|
  '1:database:->databases' \
 | 
						|
  '*:key:->keys' && ret=0
 | 
						|
 | 
						|
case $state in
 | 
						|
  services)
 | 
						|
    services=( /lib/libnss*(-.:fr:t:s/libnss_//) )
 | 
						|
    _wanted services expl service compadd ${services%-*} && ret=0
 | 
						|
  ;;
 | 
						|
  databases)
 | 
						|
    if [[ $is_gnu = gnu ]]; then
 | 
						|
      databases=( ${=${${(f)"$(_call_program databases $words[1] --help \
 | 
						|
          2>/dev/null)"}[(r)Supported*,-1]}[2,-1]} )
 | 
						|
    else
 | 
						|
      databases=( passwd group hosts ipnodes services protocols ethers networks netmasks )
 | 
						|
    fi
 | 
						|
    _wanted databases expl database compadd -a databases && ret=0
 | 
						|
  ;;
 | 
						|
  keys)
 | 
						|
    keys=( ${(f)"$(_call_program keys $words[1] ${(kv)opt_args[(i)-s|--service]} $line[1] 2>/dev/null)"} )
 | 
						|
    case $line[1] in
 | 
						|
      *hosts) _wanted keys expl key compadd ${=keys#* } && ret=0 ;;
 | 
						|
      networks|rpc|protocols|services)
 | 
						|
        _wanted keys expl key compadd ${=keys%% *} && ret=0
 | 
						|
      ;;
 | 
						|
      aliases|passwd|shadow|group)
 | 
						|
        _wanted keys expl key compadd ${keys%%:*} && ret=0
 | 
						|
      ;;
 | 
						|
      *) _message -e keys key;;
 | 
						|
    esac
 | 
						|
  ;;
 | 
						|
esac
 | 
						|
 | 
						|
return ret
 |