#compdef w
local args
case $OSTYPE in
linux*)
args=(
'(H -f --from)'{-f,--from}'[toggle display of remote hostname]'
'(H -h)--no-header[suppress the heading]'
'(H -i --ip-addr)'{-i,--ip-addr}'[display IP address instead of hostname]'
'(H -o --old-style -s --short)'{-o,--old-style}'[old style output format]'
'(H -s --short -o --old-style)'{-s,--short}'[use short output format]'
'(H -u --no-current)'{-u,--no-current}'[ignore the username while figuring out the current process and cpu times]'
+ H
'(-)--help[display help information]'
'(-)'{-V,--version}'[display version information]'
)
;;
*bsd*|darwin*|dragonfly*)
args+=( '-i[sort output by idle time]' )
;|
openbsd*)
args+=( '-a[translate network addresses into names]' )
;|
(free|net)bsd*|dragonfly*)
args+=( '-n[show network addresses as numbers]' )
;|
*bsd*|dragonfly*)
args+=(
'-M+[extract values from specified core]:core file:_files'
'-N+[extract name list from specified system]:system file:_files'
)
;|
freebsd*|dragonfly*)
args+=( '-d[dump process list on a per controlling tty basis]' )
;|
solaris*)
args+=( '!(-s -w -l)'{-l,-w}
'-s[short output form]'
'(-)-u[produce only the heading line]'
)
;|
esac
_arguments -S -s \
'(--no-header)-h[suppress the heading]' \
'*:user:_users' $args