Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH] Parse Additional SSH known_hosts Syntax



Hello,

I am new to this project, what is the proper etiquette for getting
some attention on this list?

-Aaron

On Thu, Dec 12, 2013 at 3:55 PM, Aaron Peschel <aaron.peschel@xxxxxxxxx> wrote:
> Hello,
>
> The patch got corrupted in the email. I have attached the patch here instead.
>
> --Aaron
>
> On Thu, Dec 12, 2013 at 3:52 PM, Aaron Peschel <aaron.peschel@xxxxxxxxx> wrote:
>> Hello,
>>
>> I have created a patch for ZSH to support additional known_hosts
>> syntax. Feedback would be appreciated.
>>
>> Thank you!
>>
>> Aaron Peschel
>>
>> -----
>>
>> From 3d05d6f46ac89f1d91f6e7ab4981c2dc410c956a Mon Sep 17 00:00:00 2001
>> From: Aaron Peschel <apeschel@xxxxxxxxxxx>
>> Date: Thu, 12 Dec 2013 15:43:55 -0800
>> Subject: [PATCH 1/1] Parse Additional SSH known_hosts Syntax
>>
>> ZSH does not currently support the full known_hosts syntax. The
>> known_hosts file supports lines starting with "[hostname]:post". ZSH
>> currently discards these lines, which breaks SSH auto-completion on
>> hosts using a non-standard SSH port. This patch adds support for this
>> syntax and allows auto-completion to work in this case.
>> ---
>>  Completion/Unix/Type/_hosts | 15 +++++++++++++--
>>  1 file changed, 13 insertions(+), 2 deletions(-)
>>
>> diff --git a/Completion/Unix/Type/_hosts b/Completion/Unix/Type/_hosts
>> index 499caed..c3133dc 100644
>> --- a/Completion/Unix/Type/_hosts
>> +++ b/Completion/Unix/Type/_hosts
>> @@ -41,9 +41,20 @@ if ! zstyle -a ":completion:${curcontext}:hosts"
>> hosts _hosts; then
>>
>>      for khostfile in $khostfiles; do
>>        if [[ -r $khostfile ]]; then
>> -        khosts=(${${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[
>> |#]*}}}:#*[\[\]]*})
>> +        khosts=(${(s/,/j/,/u)${(f)"$(<$khostfile)"}%%[ |#]*})
>> +
>> +        # known_hosts syntax supports the host being in the form
>> [hostname]:port
>> +        # The filter below extracts the hostname from lines using this format.
>> +        khosts=($(for host ($khosts); do
>> +          if [[ $host =~ "\[(.*)\]:\d*" ]]; then
>> +            echo $match
>> +          else
>> +            echo $host
>> +          fi
>> +        done))
>> +
>>          if [[ -z $useip ]]; then
>> -         khosts=(${${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)}:#*[\[\]]*})
>> +          khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
>>          fi
>>          _cache_hosts+=($khosts)
>>        fi
>> --
>> 1.8.3.4 (Apple Git-47)



Messages sorted by: Reverse Date, Date, Thread, Author