summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--Completion/Unix/Command/_rsync10
2 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index c47050feb..5078fa973 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2005-04-03  Andrey Borzenkov  <bor@zsh.org>
 
+	* 21086: Completion/Unix/Command/_rsync: fix module completion,
+	redirect rsync errors to /dev/null, use -S "" as suggested
+	by Oliver.
+	
 	* 21085: Completion/Mandrake/Command/_urpmi: update for 10.2,
 	add parsehdlist, use urpmq --list options to get media and
 	package list
diff --git a/Completion/Unix/Command/_rsync b/Completion/Unix/Command/_rsync
index aa56b7afe..65a79eaa8 100644
--- a/Completion/Unix/Command/_rsync
+++ b/Completion/Unix/Command/_rsync
@@ -13,7 +13,7 @@ _rsync_user_or_host() {
       _wanted users expl "user" \
 	  _combination -s '[:@]' "${tag}" users-hosts users -q "$@" -
   else
-    [[ $words[CURRENT] = rsync://* ]] || rsync='rsync:rsync: compadd -S/ rsync:/'
+    [[ $words[CURRENT] = rsync://* ]] || rsync='rsync:rsync: compadd -S "" rsync://'
     _alternative \
       'users:user:_users -S @' \
       "hosts:host:_hosts -S '$suf'" \
@@ -26,7 +26,7 @@ local expl remfiles remdispf remdispd remmodules suf ret=1 tag=accounts
 
 if compset -P '*::*/' || compset -P 'rsync://*/*/'; then
 
-  remfiles=(${${(f)"$(_call_program files rsync ${words[CURRENT]%/*}/)"}:#[ 	]*})
+  remfiles=(${${(f)"$(_call_program files rsync ${words[CURRENT]%/*}/ 2>/dev/null)"}:#([ 	]|MOTD:)*})
 
   remdispf=(${remfiles:#d*})
   remdispd=(${(M)remfiles:#d*})
@@ -41,11 +41,13 @@ elif compset -P 1 '*::' || compset -P 1 'rsync://*/'; then
 
   local pat=${words[CURRENT]}
 
-  if [[ $pat = *:: ]]; then
+  if [[ $pat = *::* ]]; then
     pat=${pat%::*}::
+  else
+    pat=${pat%/*}/
   fi
 
-  remfiles=(${${(f)"$(_call_program files rsync $pat)"}:#[ 	]*})
+  remfiles=(${${(f)"$(_call_program files rsync $pat 2>/dev/null)"}:#([ 	]|MOTD:)*})
 
   remmodules=(${remfiles/[ 	]##/:})