File: _getent

package info (click to toggle)
zsh-beta 4.3.6-dev-0%2B20080723-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 14,752 kB
  • ctags: 7,403
  • sloc: ansic: 90,889; sh: 5,568; makefile: 836; perl: 745; awk: 381; sed: 16
file content (50 lines) | stat: -rwxr-xr-x 1,514 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#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