#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