mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			113 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
	
		
			3.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#compdef ypcat ypmatch yppasswd ypwhich ypset ypserv ypbind yppush yppoll ypxfr domainname
 | 
						|
 | 
						|
local curcontext="$curcontext" line state ret=1
 | 
						|
typeset -A opt_args
 | 
						|
 | 
						|
if (( ! $+_yp_cache_maps )); then
 | 
						|
  _yp_cache_maps=( "${(@)${(@f)$(_call_program maps ypwhich -m)}%% *}" )
 | 
						|
  _yp_cache_nicks=( "${(@)${(@)${(@f)$(_call_program names ypwhich -x)}#*\"}%%\"*}" )
 | 
						|
  _yp_args=(
 | 
						|
    '(-x)-d[specify domain]:domain name:' \
 | 
						|
    '(-x)-k[display keys]' \
 | 
						|
    '(-x)-t[inhibit nicknames]' \
 | 
						|
    '(: -d -k -t)-x[display nicknames]' \
 | 
						|
  )
 | 
						|
fi
 | 
						|
 | 
						|
case "$service" in
 | 
						|
ypcat)
 | 
						|
  _arguments -C -s "$_yp_args[@]" ':map name:->map' && ret=0
 | 
						|
  ;;
 | 
						|
ypmatch)
 | 
						|
  _arguments -C -s "$_yp_args[@]" '*::key map:->keymap' && ret=0
 | 
						|
  ;;
 | 
						|
yppasswd)
 | 
						|
  _users
 | 
						|
  return
 | 
						|
  ;;
 | 
						|
ypwhich)
 | 
						|
  _arguments -C \
 | 
						|
    '(-x)-d[specify domain]:domain name:' \
 | 
						|
    '(-x -V2 -m -t)-V1[identify version 1 servers]' \
 | 
						|
    '(-x -V1 -m -t)-V2[identify version 2 servers]' \
 | 
						|
    '(: -x -V1 -V2 -m)-t[specify map name]:map name:->maponly' \
 | 
						|
    '(: -x -V1 -V2 -t)-m[specify map or nick name]:map or nick name:->map' \
 | 
						|
    '(: -d -m -t -V1 -V2)-x[display nicknames]' \
 | 
						|
    ':host:_hosts' && ret=0
 | 
						|
  ;;
 | 
						|
ypset)
 | 
						|
  _arguments -C \
 | 
						|
    '(-V2)-V1[bind version 1 servers]' \
 | 
						|
    '(-V1)-V2[bind version 2 servers]' \
 | 
						|
    '-d[specify domain]:domain name:' \
 | 
						|
    '-h[specify host]:set binding on host:_hosts' \
 | 
						|
    ':server:_hosts' && ret=0
 | 
						|
    ;;
 | 
						|
ypserv)
 | 
						|
  _arguments -C \
 | 
						|
    '-a[specify database routines]:database routines:((b\:btree d\:dbm/ndbm h\:hash))' && ret=0
 | 
						|
  ;;
 | 
						|
ypbind)
 | 
						|
  _arguments -C \
 | 
						|
    '-s[allow secure mode for ypbind]' \
 | 
						|
    '-S[set domain and servers]:domain:->servers' \
 | 
						|
    '(-ypsetme)-ypset[accept all ypset requests]' \
 | 
						|
    '(-ypset)-ypsetme[accept only local ypset requests]' && ret=0
 | 
						|
  ;;
 | 
						|
yppush)
 | 
						|
  _arguments -C \
 | 
						|
    '-d[specify domain]:domain name:' \
 | 
						|
    '-v[print messages]' \
 | 
						|
    ':map name:->map' && ret=0
 | 
						|
  ;;
 | 
						|
yppoll)
 | 
						|
  _arguments -C \
 | 
						|
    '-d[specify domain]:domain name:' \
 | 
						|
    '-h[specify host]:ask server on host:_hosts' \
 | 
						|
    ':map name:->map' && ret=0
 | 
						|
  ;;
 | 
						|
ypxfr)
 | 
						|
  _arguments -C \
 | 
						|
    '-a[specify database routines]:database routines:((b\:btree d\:dbm/ndbm h\:hash))' \
 | 
						|
    '-f[force transfer]' \
 | 
						|
    '-c[don'"'"'t clear current map]' \
 | 
						|
    '-d[specify domain]:domain name:' \
 | 
						|
    '-h[specify host]:get map from host:_hosts' \
 | 
						|
    '-C[call back]:transaction ID: :program number: :IP address: :port number:' \
 | 
						|
    ':map name:->map' && ret=0
 | 
						|
  ;;
 | 
						|
domainname)
 | 
						|
  _message 'new domain name'
 | 
						|
  return 1
 | 
						|
  ;;
 | 
						|
esac
 | 
						|
 | 
						|
[[ "$state" = keymap ]] && _message 'key'
 | 
						|
 | 
						|
if [[ "$state" = map* ]]; then
 | 
						|
  local expl
 | 
						|
 | 
						|
  if [[ $+opt_args[-t] -eq 0 && "$state" != maponly ]]; then
 | 
						|
    _tags maps nicknames
 | 
						|
  else
 | 
						|
    _tags maps
 | 
						|
  fi
 | 
						|
 | 
						|
  while _tags; do
 | 
						|
    # The `-M ...' allows `pa.n<TAB>' to complete to `passwd.byname'.
 | 
						|
    _requested maps expl 'map name' \
 | 
						|
        compadd -M 'l:.|by=by l:.|=by r:|.=* r:|=*' -a \
 | 
						|
                _yp_cache_maps && ret=0
 | 
						|
    _requested nicknames expl nicknames \
 | 
						|
        compadd -a _yp_cache_nicks && ret=0
 | 
						|
    (( ret )) || return 0
 | 
						|
  done
 | 
						|
elif [[ "$state" = servers ]]; then
 | 
						|
  if compset -P '*,'; then
 | 
						|
    _wanted hosts expl server _hosts -qS, && ret=0
 | 
						|
  else
 | 
						|
    _message 'domain name'
 | 
						|
  fi
 | 
						|
fi
 | 
						|
 | 
						|
return ret
 |