mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-09-03 10:21:46 +02:00
49431 (tweaked, c.f. Bart: 49434): Faster ~/.ssh/config processing
When iterating over the ssh config file, iterate over the array linearly instead of always processing the first and then removing it from the list. This speeds up processing significantly.
This commit is contained in:
parent
f2b6650b43
commit
c4b19f7fc4
2 changed files with 8 additions and 4 deletions
|
@ -1,5 +1,8 @@
|
|||
2021-10-26 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* Peter Palfrader: 49431 (tweaked, c.f. Bart: 49434):
|
||||
Completion/Unix/Type/_ssh_hosts: Faster ~/.ssh/config processing
|
||||
|
||||
* Marlon: 49521: Doc/Zsh/compwid.yo, Test/Y02compmatch.ztst:
|
||||
Define correct behavior of || completion matchers
|
||||
|
||||
|
|
|
@ -20,8 +20,9 @@ if [[ -r $config ]]; then
|
|||
local key line host
|
||||
local -a lines=("${(@f)$(<"$config")}") 2>/dev/null
|
||||
local -a match_args
|
||||
while (($#lines)); do
|
||||
IFS=$'=\t ' read -r key line <<<"${lines[1]}"
|
||||
local idx=1
|
||||
while (( idx <= $#lines )); do
|
||||
IFS=$'=\t ' read -r key line <<<"${lines[idx]}"
|
||||
if [[ "$key" == ((#i)match) ]]; then
|
||||
match_args=(${(z)line})
|
||||
while [[ $#match_args -ge 2 ]]; do
|
||||
|
@ -35,7 +36,7 @@ if [[ -r $config ]]; then
|
|||
fi
|
||||
case "$key" in
|
||||
((#i)include)
|
||||
lines[1]=("${(@f)$(cd $HOME/.ssh; cat ${(z)~line})}") 2>/dev/null;;
|
||||
lines[idx]=("${(@f)$(cd $HOME/.ssh; cat ${(z)~line})}") 2>/dev/null;;
|
||||
((#i)host(|name))
|
||||
for host in ${(z)line}; do
|
||||
case $host in
|
||||
|
@ -43,7 +44,7 @@ if [[ -r $config ]]; then
|
|||
(*) config_hosts+=("$host") ;;
|
||||
esac
|
||||
done ;&
|
||||
(*) shift lines;;
|
||||
(*) (( ++idx ));;
|
||||
esac
|
||||
done
|
||||
if (( ${#config_hosts} )); then
|
||||
|
|
Loading…
Reference in a new issue