about summary refs log tree commit diff
path: root/Completion/Unix/Type/_services
blob: 670aed05b1031ed8eb2f3f8852e1c1ee6efbead5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#autoload

local -a inits xinetds alls
local expl ret=1

if chkconfig --list > /dev/null 2>&1; then
  alls=( ${(f)"$(LANGUAGE=C LANG=C LC_ALL=C chkconfig --list)"} )
  inits=( ${${${alls[1,(r)xinetd based*]}[1,-2]}/%[[:space:]]*/} )
  xinetds=( ${${${${alls[(r)xinetd based*,-1]}[2,-1]}/#[[:space:]]#}/%:*} )
else
  inits=( /etc/init.d/*(:t) )
fi

_tags init xinetd

while _tags; do
  _requested init expl 'init services' \
    compadd  -a inits && ret=0
  _requested xinetd expl 'xinetd services' \
    compadd  -a xinetds && ret=0
  (( ret )) || break
done

return $ret