about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--Completion/Unix/Command/_telnet71
1 files changed, 71 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_telnet b/Completion/Unix/Command/_telnet
new file mode 100644
index 000000000..d9e02ad42
--- /dev/null
+++ b/Completion/Unix/Command/_telnet
@@ -0,0 +1,71 @@
+#compdef telnet
+
+# Parameter used:
+#
+#  telnet_hosts_ports_users
+#    The array that contains 3-tuples `host:port:user'.
+
+local curcontext="$curcontext" state line expl
+typeset -A opt_args
+
+if (( ! $+_telnet_args )); then
+  local help="$(_call_program options telnet -\? < /dev/null 2>&1)"
+  local -A optionmap
+  optionmap=(
+    '*\[-8\]*' '-8[allow 8-Bit data]'
+    '*\[-E\]*' '-E[disable an escape character]'
+    '*\[-K\]*' '-K[no automatic login]'
+    '*\[-L\]*' '-L[allow 8-Bit data on output]'
+    '*\[-N\]*' '-N[supress reverse lookup]'
+    '*\[-S tos\]*' '-S+:IP type-of-service:'
+    '*\[-X atype\]*' '-X+:authentication type to disable:'
+    '*\[-a\]*' '-a[attempt automatic login]'
+    '*\[-c\]*' '-c[disable .telnetrc]'
+    '*\[-d\]*' '-d[debug mode]'
+    '*\[-e char\]*' '-e+[specify escape character]:escape character:'
+    '*\[-f/*' '-f'
+    '*/-F\]*' '-F'
+    '*\[-k realm\]*' '-k+:realm:'
+    '*\[-l user\]*' '-l+[specify user]:user:->users'
+    '*\[-n tracefile\]*' '-n+[specify tracefile]:tracefile:_files'
+    '*\[-r\]*' '-r[rlogin like user interface]'
+    '*\[-s src_addr\]*' '-s+[set source IP address]:src_addr:'
+    '*\[-x\]*' '-x'
+    '*\[-t transcom\]*' '-t+:transcom:'
+    '*\[-noasynch\]*' '-noasynch'
+    '*\[-noasyncnet\]*' '-noasyncnet'
+    '*\[-noasynctty\]*' '-noasynctty'
+  )
+  _telnet_args=($optionmap[(K)"$help"])
+  (( $#_telnet_args )) || _telnet_args=( '-l+[specify user]:user:->users' )
+fi
+
+_arguments -C -s \
+  "$_telnet_args[@]" \
+  ':host:->hosts' \
+  ':port:->ports' && return 0
+
+case "$state" in
+hosts)
+  _wanted hosts expl host \
+      _combination -s '[@:]' '' users-hosts-ports \
+          ${opt_args[-l]:+users=${opt_args[-l]:q}} \
+          hosts -
+  ;;
+
+ports)
+  _wanted ports expl port \
+      _combination -s '[@:]' '' users-hosts-ports \
+          ${opt_args[-l]:+users=${opt_args[-l]:q}} \
+          hosts="${line[1]:q}" \
+          ports -
+  ;;
+
+users)
+  _wanted users expl user \
+      _combination -s '[@:]' '' users-hosts-ports \
+      ${line[2]:+hosts="${line[2]:q}"} \
+      ${line[3]:+ports="${line[3]:q}"} \
+      users -
+  ;;
+esac