summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command')
-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