blob: 74b97521e0eea74643916e0c81e9b1ef6f783351 (
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
#compdef finger
local curcontext="$curcontext" state line match
typeset -A opt_args
if (( ! $+_finger_args )); then
local help="$(_call options 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' && return 0
case "$state" in
finger-targets)
_user_at_host -t other-accounts "$@"
;;
esac
|