#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 k help="$(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=() for k in ${(k)optionmap} do [[ "$help" = *"$k"* ]] && _telnet_args=( "$_telnet_args[@]" "$optionmap[$k]" ) done fi _arguments -C -s \ "$_telnet_args[@]" \ ':host:->hosts' \ ':port:->ports' case "$state" in hosts) _wanted hosts expl host && _combination '' hosts-ports-users \ ${opt_args[-l]:+users=${opt_args[-l]:q}} \ hosts "$expl[@]" ;; ports) _wanted ports expl port && _combination '' hosts-ports-users \ ${opt_args[-l]:+users=${opt_args[-l]:q}} \ hosts="${line[1]:q}" \ ports "$expl[@]" ;; users) _wanted users expl user && _combination '' hosts-ports-users \ ${line[2]:+hosts="${line[2]:q}"} \ ${line[3]:+ports="${line[3]:q}"} \ users "$expl[@]" ;; esac