* Re: [ramk@cse.iitm.ernet.in: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts]
@ 2006-04-05 9:55 Peter Stephenson
0 siblings, 0 replies; 2+ messages in thread
From: Peter Stephenson @ 2006-04-05 9:55 UTC (permalink / raw)
To: zsh-workers, 359992-forwarded
Clint Adams <schizo@debian.org> wrote:
> From: "R.Ramkumar" <ramk@cse.iitm.ernet.in>
>
> The current _hosts completion does not use IP addresses, and
> completes using host names alone. This patch optionally enables the
> inclusion of IP addresses by a boolean style (the default behaviour
> is unchanged). Further, currently only ~/.ssh/known_hosts file is
> read. Added /etc/ssh/known_hosts to this list, if present. Further,
> observing that any plain list of hostnames would anyway be
> parseable, and that ~"`id -nu`"/.ssh/known_hosts and not
> ~/.ssh/known_hosts might be readable under sudo environments, made
> the list of known host files customizable (defaulting to the two
> files initially specified). Here is the patch:
I'll commit this with the following documentation.
Index: Doc/Zsh/compsys.yo
===================================================================
RCS file: /cvsroot/zsh/zsh/Doc/Zsh/compsys.yo,v
retrieving revision 1.186
diff -u -r1.186 compsys.yo
--- Doc/Zsh/compsys.yo 20 Mar 2006 11:06:24 -0000 1.186
+++ Doc/Zsh/compsys.yo 5 Apr 2006 09:52:52 -0000
@@ -1665,6 +1665,13 @@
that unlike the tt(ALWAYS_LAST_PROMPT) option this is independent of the
numeric prefix argument.
)
+kindex(known-hosts-files)
+item(tt(known-hosts-files))(
+This style should contain a list of files to search for host names and
+(if the tt(use-ip) style is set) IP addresses in a format compatible with
+ssh tt(known_hosts) files. If it is not set, the files
+tt(/etc/ssh/ssh_known_hosts) and tt(~/.ssh/known_hosts) are used.
+)
kindex(list, completion style)
item(tt(list))(
This style is used by the tt(_history_complete_word) bindable command.
@@ -2498,6 +2505,16 @@
However, the tt(compctl) version will be tried if tt(foo) only uses
default completion.
)
+kindex(use-ip, completion style)
+item(tt(use-ip))(
+By default, the function tt(_hosts) that completes host names strips
+IP addresses from entries read from host databases such as NIS and
+ssh files. If this style is true, the corresponding IP addresses
+can be completed as well. This style is not use in any context
+where the tt(hosts) style is set; note also it must be set before
+the cache of host names is generated (typically the first completion
+attempt).
+)
kindex(use-perl, completion style)
item(tt(use-perl))(
Various parts of the function system use awk to extract words from
--
Peter Stephenson <pws@csr.com> Software Engineer
CSR PLC, Churchill House, Cambridge Business Park, Cowley Road
Cambridge, CB4 0WZ, UK Tel: +44 (0)1223 692070
To access the latest news from CSR copy this link into a web browser: http://www.csr.com/email_sig.php
^ permalink raw reply [flat|nested] 2+ messages in thread
* [ramk@cse.iitm.ernet.in: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts]
@ 2006-03-31 14:19 Clint Adams
0 siblings, 0 replies; 2+ messages in thread
From: Clint Adams @ 2006-03-31 14:19 UTC (permalink / raw)
To: zsh-workers; +Cc: 359992-forwarded
That _analyseplugin function was written by R.Ramkumar as well.
I'm not committing this one because I have no opinion, though I bet
someone else will.
----- Forwarded message from "R.Ramkumar" <ramk@cse.iitm.ernet.in> -----
Date: Thu, 30 Mar 2006 05:24:23 +0530
From: "R.Ramkumar" <ramk@cse.iitm.ernet.in>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts
Package: zsh
Version: 4.3.2-2
Severity: wishlist
Tags: patch
Hi!
The current _hosts completion does not use IP addresses, and
completes using host names alone. This patch optionally enables the
inclusion of IP addresses by a boolean style (the default behaviour
is unchanged). Further, currently only ~/.ssh/known_hosts file is
read. Added /etc/ssh/known_hosts to this list, if present. Further,
observing that any plain list of hostnames would anyway be
parseable, and that ~"`id -nu`"/.ssh/known_hosts and not
~/.ssh/known_hosts might be readable under sudo environments, made
the list of known host files customizable (defaulting to the two
files initially specified). Here is the patch:
Content-Description: Patch enabling use of IP addresses and multiple host files in _hosts
--- _hosts 2006-03-30 05:00:08.000000000 +0530
+++ _hosts.new 2006-03-30 05:21:37.000000000 +0530
@@ -2,29 +2,52 @@
# avoid calling variable "hosts", it's an obvious candidate for use in
# zstyle -e '*' hosts 'reply=($hosts)'
-local expl _hosts tmp
+local expl _hosts tmp useip
if ! zstyle -a ":completion:${curcontext}:hosts" hosts _hosts; then
if (( $+_cache_hosts == 0 )); then
# uniquify
typeset -gUa _cache_hosts
+ local ipstrip='[:blank:]#[^[:blank:]]#'
+
+ # This boolean style determines whether hosts completes IP addresses. The
+ # default is no (not using IP addresses).
+ zstyle -t ":completion:${curcontext}:hosts" use-ip && useip=yes
+ [[ -n $useip ]] && ipstrip=
if (( ${+commands[getent]} )); then
# pws: we were using the horrible ": ${(A)...:=}" syntax to assign
# to _cache_hosts, overriding the typeset as well as being unreadable
# and having obscure splitting behaviour. Why? We've just
# tested _cache_hosts doesn't exist.
- _cache_hosts=(${(s: :)${(ps:\t:)${(f)~~"$(_call_program hosts getent hosts 2>/dev/null)"}##[:blank:]#[^[:blank:]]#}})
+ _cache_hosts=(${(s: :)${(ps:\t:)${(f)~~"$(_call_program hosts getent hosts 2>/dev/null)"}##${~ipstrip}}})
else
- _cache_hosts=(${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##[:blank:]#[^[:blank:]]#}})
+ _cache_hosts=(${(s: :)${(ps:\t:)${${(f)~~"$(</etc/hosts)"}%%\#*}##${~ipstrip}}})
if (( ${+commands[ypcat]} )) &&
tmp=$(_call_program hosts ypcat hosts.byname 2>/dev/null); then
- _cache_hosts+=( ${=${(f)tmp}##[:blank:]#[^[:blank:]]#} ) # If you use YP
+ _cache_hosts+=( ${=${(f)tmp}##${~ipstrip}} ) # If you use YP
fi
fi
- if [[ -r ~/.ssh/known_hosts ]]; then
- _cache_hosts+=(${${${(u)${(f)"$(<~/.ssh/known_hosts)"}%%[ ,|#]*}:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
- fi
+ local khostfile
+ typeset -Ua khostfiles
+
+ # This style specifies a list of files to look up for host names and IP
+ # addresses, if asked to. The files can contain comma separated host names
+ # and IP's, and any text on a line after the first whitespace,| or # is
+ # discarded. ssh's known_hosts files are thus supported. This style defaults
+ # to the list /etc/ssh/ssh_known_hosts, ~/.ssh/known_hosts
+ zstyle -a ":completion:${curcontext}:hosts" known-hosts-files khostfiles ||
+ khostfiles=(/etc/ssh/ssh_known_hosts ~/.ssh/known_hosts)
+
+ for khostfile in $khostfiles; do
+ if [[ -r $khostfile ]]; then
+ khosts=(${(s:,:)${(j:,:)${(u)${(f)"$(<$khostfile)"}%%[ |#]*}}})
+ if [[ -z $useip ]]; then
+ khosts=(${${khosts:#(#s)[0-9]##.[0-9]##.[0-9]##.[0-9]##(#e)}:#(#s)[0-9a-f:]##(#e)})
+ fi
+ _cache_hosts+=($khosts)
+ fi
+ done
fi
_hosts=( "$_cache_hosts[@]" )
Regards,
Ramkumar.
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (101, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/dash
Kernel: Linux 2.6.15-archck2
Locale: LANG=en_IN, LC_CTYPE=en_IN (charmap=UTF-8)
Versions of packages zsh depends on:
ii debconf [debconf-2.0] 1.4.72 Debian configuration management sy
ii libc6 2.3.6-3 GNU C Library: Shared libraries an
ii libncurses5 5.5-1 Shared libraries for terminal hand
Versions of packages zsh recommends:
ii libcap1 1:1.10-14 support for getting/setting POSIX.
ii libpcre3 6.4-1.1 Perl 5 Compatible Regular Expressi
-- no debconf information
--
WARN_(accel)("msg null; should hang here to be win compatible\n");
-- WINE source code
----- End forwarded message -----
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2006-04-05 9:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-05 9:55 [ramk@cse.iitm.ernet.in: Bug#359992: zsh: Enable use of IP addresses and multiple host files in _hosts] Peter Stephenson
-- strict thread matches above, loose matches on Subject: below --
2006-03-31 14:19 Clint Adams
Code repositories for project(s) associated with this public inbox
https://git.vuxu.org/mirror/zsh/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).