#autoload # Provides completion for file modes (formerly part of _chmod) local curcontext=$curcontext local -a context line state state_descr copts=( "${@}" ) privs local -A val_args privs=( 'r[read]' 'w[write]' 'x[execute]' 's[set uid/gid]' 't[sticky]' 'X[execute only if directory or executable to another]' "u[owner's current permissions]" "g[group's current permissions]" "o[others' current permissions]" ) [[ $OSTYPE == solaris* ]] && privs+=( 'l[mandatory locking]' ) compset -P '*,' compset -S ',*' if [[ -prefix [0-7] ]]; then _message -e number 'numeric mode' elif compset -P '[a-z]#[+-=]'; then _values -O copts -S '' privilege $privs && return 0 else compset -P '*' copts=( -S '' ) _alternative -O copts \ 'who:who:((a\:all u\:owner g\:group o\:others))' \ 'operators:operator:(+ - =)' \ && return 0 fi return 1