mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			78 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			78 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #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
 |