summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Completion/Zsh/Command/_tcpsys49
2 files changed, 53 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 582b65c76..0affdadfe 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2008-10-30 Peter Stephenson <pws@csr.com>
+ * unposted: Completion/Zsh/Command/_tcpsys: added this since
+ it's already in .distfiles. It's very limited in what it
+ does but it's better than nothing, I suppose.
+
* 25950: configure.ac: need "x$dynamic" trick in two
more places.
diff --git a/Completion/Zsh/Command/_tcpsys b/Completion/Zsh/Command/_tcpsys
new file mode 100644
index 000000000..dcc6f6cc8
--- /dev/null
+++ b/Completion/Zsh/Command/_tcpsys
@@ -0,0 +1,49 @@
+#compdef tcp_open
+
+local context line expl nm=$compstate[nmatches]
+local -a state argargs sesslist
+local -A opt_args
+
+case $service in
+ (tcp_open)
+ argargs=(
+ '(-a -f -l)-s[open session(s)]'
+ '(-a -f -s)-l[open list of sessions]'
+ '(-f -s -l)-a[open session for accept on fd]:fd:->fd'
+ '(-a -s -l)-f[open session for accept on fd]:fd:->fd'
+ '-q[quiet mode]'
+ '-z[no zle handler]'
+ )
+ if [[ -n $words[(R)-(a|f)*] ]]; then
+ argargs+=(':session:->session')
+ elif [[ -n $words[(R)-(l|s)*] ]]; then
+ argargs+=('*:session:->session')
+ else
+ argargs+=(':host:->host' ':port:->port' '*:session:->session')
+ fi
+ _arguments -C $argargs
+ ;;
+esac
+
+while (( $#state )); do
+ case "$state[1]" in
+ (host)
+ _hosts
+ ;;
+
+ (port)
+ _ports
+ ;;
+
+ (sessionlist)
+ compset -P '*,'
+ ;&
+
+ (session)
+ sesslist=(${${${(f)"$(<~/.ztcp_sessions)"}:#[[:space:]]#\#*}/ /:})
+ _describe -t sessions 'TCP session' sesslist && return
+ ;;
+
+ esac
+ shift state
+done