about summary refs log tree commit diff
path: root/Completion/Unix/Command/_finger
diff options
context:
space:
mode:
authorOliver Kiddle <opk@users.sourceforge.net>2003-07-02 10:25:05 +0000
committerOliver Kiddle <opk@users.sourceforge.net>2003-07-02 10:25:05 +0000
commit1cb11615aa337d98022a48c1c3c8c5c33b0b57c2 (patch)
tree666f075271d340fabcc63b564e1c296aa3715f9e /Completion/Unix/Command/_finger
parentbedc4995d225195a2e48c0d9430ceb97adfb7e2f (diff)
downloadzsh-1cb11615aa337d98022a48c1c3c8c5c33b0b57c2.tar.gz
zsh-1cb11615aa337d98022a48c1c3c8c5c33b0b57c2.tar.xz
zsh-1cb11615aa337d98022a48c1c3c8c5c33b0b57c2.zip
merge changes back from 4.1
Diffstat (limited to 'Completion/Unix/Command/_finger')
-rw-r--r--Completion/Unix/Command/_finger80
1 files changed, 80 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_finger b/Completion/Unix/Command/_finger
new file mode 100644
index 000000000..1ffb52d14
--- /dev/null
+++ b/Completion/Unix/Command/_finger
@@ -0,0 +1,80 @@
+#compdef finger
+
+local curcontext="$curcontext" state line match ret=1
+typeset -A opt_args
+
+if (( ! $+_finger_args )); then
+  local help="$(_call_program 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' && ret=0
+
+case "$state" in
+finger-targets)
+  _user_at_host -t other-accounts "$@" && return
+  ;;
+esac
+
+return ret