mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-03 20:20:56 +02:00
Initial revision
This commit is contained in:
parent
1719ffeef5
commit
2883d92b38
1 changed files with 78 additions and 0 deletions
78
Completion/User/_finger
Normal file
78
Completion/User/_finger
Normal file
|
@ -0,0 +1,78 @@
|
|||
#compdef finger
|
||||
|
||||
local curcontext="$curcontext" state line
|
||||
typeset -A opt_args
|
||||
|
||||
if (( ! $+_finger_args )); then
|
||||
local help="$(finger -\? 2>&1)"
|
||||
local -A optionmap
|
||||
|
||||
## `finger -\?':
|
||||
|
||||
# SunOS 5.7:
|
||||
# finger: illegal option -- ?
|
||||
# Usage: finger [-bfhilmpqsw] [-t l|h|l,h] [name1 [name2 ...] ]
|
||||
|
||||
# SunOS 4.1.4:
|
||||
# Usage: finger [-bfhilmpqsw] [login1 [login2 ...] ]
|
||||
|
||||
# IRIX 6.3:
|
||||
# Usage: finger [-bfhilmpqsw] [login1 [login2 ...] ]
|
||||
|
||||
# NetBSD 1.4.1:
|
||||
# finger: illegal option -- ?
|
||||
# usage: finger [-lmpsho] [login ...]
|
||||
|
||||
# FreeBSD 2.2.8
|
||||
# finger: illegal option -- ?
|
||||
# usage: finger [-lmpshoT] [login ...]
|
||||
|
||||
# BSD/OS 3.0:
|
||||
# finger: illegal option -- ?
|
||||
# usage: finger [-lmps] [login ...]
|
||||
|
||||
# 4.4BSD Lite:
|
||||
# usage: finger [-lmps] [login ...]
|
||||
|
||||
# Debian GNU/Linux (potato) (netstd 3.07-10):
|
||||
# finger: invalid option -- ?
|
||||
# usage: finger [-lmps] [login ...]
|
||||
|
||||
if [[ "$help" = *\[-(#b)(lmps[a-zA-Z]#)* ]]; then
|
||||
# BSD style
|
||||
optionmap=(
|
||||
'*m*' '-m[match to login name]'
|
||||
'*l*' '(-s -o)-l[force long format]'
|
||||
'*s*' '(-l -p)-s[force short format]'
|
||||
'*p*' '(-s -o)-p[suppress .forward, .plan and .project]'
|
||||
'*o*' '(-l -p)-o[print office information]'
|
||||
'*T*' '-T[disable T/TCP]'
|
||||
)
|
||||
_finger_args=($optionmap[(K)$match[1]])
|
||||
elif [[ "$help" = *\[-(#b)(bfhilmpqsw[a-zA-Z]#)* ]]; then
|
||||
# System V style
|
||||
optionmap=(
|
||||
'*m*' '-m[match to login name]'
|
||||
'*l*' '( -i -q -s -f -w)-l[force long format]'
|
||||
'*i*' '(-l -q -s -b -h -p -w)-i[force idle format]'
|
||||
'*q*' '(-l -i -s -b -h -p -w)-q[force quick format]'
|
||||
'*s*' '(-l -i -q -b -h -p)-s[force short format]'
|
||||
'*b*' '(-i -q -s)-b[suppress home and shell]'
|
||||
'*f*' '(-l)-f[suppress header]'
|
||||
'*h*' '(-i -q -s)-h[suppress .project]'
|
||||
'*p*' '(-i -q -s)-p[suppress .plan]'
|
||||
'*w*' '(-i -q -l)-w[suppress full name]'
|
||||
)
|
||||
_finger_args=($optionmap[(K)$match[1]])
|
||||
else
|
||||
_finger_args=()
|
||||
fi
|
||||
fi
|
||||
|
||||
_arguments -C -s $_finger_args '*:finger targets:->finger-targets'
|
||||
|
||||
case "$state" in
|
||||
finger-targets)
|
||||
_user_at_host -t other-accounts "$@"
|
||||
;;
|
||||
esac
|
Loading…
Reference in a new issue