diff options
Diffstat (limited to 'Completion/User/_telnet')
-rw-r--r-- | Completion/User/_telnet | 85 |
1 files changed, 67 insertions, 18 deletions
diff --git a/Completion/User/_telnet b/Completion/User/_telnet index 54d9a0a2d..7b88d016a 100644 --- a/Completion/User/_telnet +++ b/Completion/User/_telnet @@ -1,21 +1,70 @@ #compdef telnet -_arguments -s \ - -{F,f,x} \ - '-8[allow 8-Bit data]' \ - '-E[disable an escape character]' \ - '-K[no automatic login]' \ - '-L[allow 8-Bit data on output]' \ - '-S+:IP type-of-service:' \ - '-X+:authentication type to disable:' \ - '-a[attempt automatic login]' \ - '-c[disable .telnetrc]' \ - '-d[debug mode]' \ - '-e+[specify escape character]:escape character:' \ - '-k+:realm:' \ - '-l+[specify user]:user:' \ - '-n+[specify tracefile]:tracefile:_files' \ - '-r[rlogin like user interface]' \ - ':host:_hosts' \ - ':port:{ _hostports $line[2] "$expl[@]" }' +# 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 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"]) +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 |