diff options
author | Oliver Kiddle <opk@users.sourceforge.net> | 2003-01-08 15:14:50 +0000 |
---|---|---|
committer | Oliver Kiddle <opk@users.sourceforge.net> | 2003-01-08 15:14:50 +0000 |
commit | abd18275a4c27bc76d26e5111b4cb9c33e2ae7d7 (patch) | |
tree | 0ff9220ed8efed8aa274afab154677cc1d4f1180 /Completion/Unix/Command/_rlogin | |
parent | 24dd6fcd97da2f322f31876de0126334722148d3 (diff) | |
download | zsh-abd18275a4c27bc76d26e5111b4cb9c33e2ae7d7.tar.gz zsh-abd18275a4c27bc76d26e5111b4cb9c33e2ae7d7.tar.xz zsh-abd18275a4c27bc76d26e5111b4cb9c33e2ae7d7.zip |
18058, 18060: merge from 4.1
Diffstat (limited to 'Completion/Unix/Command/_rlogin')
-rw-r--r-- | Completion/Unix/Command/_rlogin | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_rlogin b/Completion/Unix/Command/_rlogin new file mode 100644 index 000000000..522af7f4c --- /dev/null +++ b/Completion/Unix/Command/_rlogin @@ -0,0 +1,101 @@ +#compdef rlogin rsh remsh=rsh rcp + +_rcp_remote_files () { + # There should be coloring based on all the different ls -F classifiers. + local expl remfiles remdispf remdispd suf ret=1 + + if zstyle -T ":completion:${curcontext}:" remote-access; then + remfiles=(${(M)${(f)"$(rsh ${words[CURRENT]%%:*} ls -d1F ${PREFIX%%[^./][^/]#}\* 2>/dev/null)"}%%[^/]#(|/)}) + compset -P '*/' + compset -S '/*' || suf='remote file' + + remdispf=(${remfiles:#*/}) + remdispd=(${(M)remfiles:#*/}) + + _tags files + while _tags; do + while _next_label files expl ${suf:-remote directory}; do + [[ -n $suf ]] && compadd "$@" "$expl[@]" -d remdispf \ + ${remdispf%[*=@|]} && ret=0 + compadd ${suf:+-S/} "$@" "$expl[@]" -d remdispd \ + ${remdispd%/} && ret=0 + done + (( ret )) || return 0 + done + else + _message 'remote file' + fi +} + +_rlogin () { + case "$service" in + rlogin) + _arguments -s \ + '-8[allow 8-Bit data]' \ + '-e-[specify escape character]:escape character:' \ + '-l[specify login user name]:login as:_rlogin_users' \ + ':remote host name:_rlogin_hosts' + ;; + rsh|remsh) + local context state line ret=1 + typeset -A opt_args + + _arguments -s \ + '-n[ignore stdin]' \ + '-l[specify login user name]:login as:_rlogin_users' \ + ':remote host name:_rlogin_hosts' \ + '(-):command: _command_names -e' \ + '*::command:->command' && ret=0 + + if [[ -n "$state" ]]; then + shift 1 words + (( CURRENT-- )) + _normal && ret=0 + fi + return ret + ;; + rcp) + local curcontext="$curcontext" state line ret=1 expl + typeset -A opt_args + + _arguments -C -s \ + '-p[preserve modification times]' \ + '-r[recursively copy directories]' \ + '*:files:->files' && ret=0 + + if [[ -n "$state" ]]; then + if compset -P '*:'; then + _rcp_remote_files && ret=0 + elif compset -P '*@'; then + _wanted hosts expl host _rlogin_hosts -S: && ret=0 + else + _alternative \ + 'files:: _files' \ + 'hosts:: _rlogin_all_hosts -S:' \ + 'users:: _rlogin_users -qS@' && ret=0 + fi + fi + return ret + ;; + esac +} + +_rlogin_users () { + _tags users && _combination -s '[:@]' my-accounts users-hosts users "$@" +} + +_rlogin_hosts () { + _tags hosts && + if [[ "$IPREFIX" == *@ ]]; then + _combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@" + else + _combination -s '[:@]' my-accounts users-hosts \ + ${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@" + fi +} + +_rlogin_all_hosts () { + _tags hosts && _combination -s '[:@]' my-accounts users-hosts hosts "$@" +} + +_rlogin "$@" |