1#compdef rlogin rsh remsh=rsh rcp 2 3_rlogin () { 4 case "$service" in 5 rlogin) 6 _arguments -s \ 7 '-8[allow 8-Bit data]' \ 8 '-e-[specify escape character]:escape character:' \ 9 '-l[specify login user name]:login as:_rlogin_users' \ 10 ':remote host name:_rlogin_hosts' 11 ;; 12 rsh|remsh) 13 local context state line ret=1 14 typeset -A opt_args 15 16 _arguments -s \ 17 '-n[ignore stdin]' \ 18 '-l[specify login user name]:login as:_rlogin_users' \ 19 ':remote host name:_rlogin_hosts' \ 20 '(-):command: _command_names -e' \ 21 '*::command:->command' && ret=0 22 23 if [[ -n "$state" ]]; then 24 shift 1 words 25 (( CURRENT-- )) 26 _normal && ret=0 27 fi 28 return ret 29 ;; 30 rcp) 31 local curcontext="$curcontext" state line ret=1 expl 32 typeset -A opt_args 33 34 _arguments -C -s \ 35 '-p[preserve modification times]' \ 36 '-r[recursively copy directories]' \ 37 '*:files:->files' && ret=0 38 39 if [[ -n "$state" ]]; then 40 if compset -P '*:'; then 41 _remote_files -- rsh && ret=0 42 elif compset -P '*@'; then 43 _wanted hosts expl host _rlogin_hosts -S: && ret=0 44 else 45 _alternative \ 46 'files:: _files' \ 47 'hosts:: _rlogin_all_hosts -S:' \ 48 'users:: _rlogin_users -qS@' && ret=0 49 fi 50 fi 51 return ret 52 ;; 53 esac 54} 55 56_rlogin_users () { 57 _tags users && _combination -s '[:@]' my-accounts users-hosts users "$@" 58} 59 60_rlogin_hosts () { 61 _tags hosts && 62 if [[ "$IPREFIX" == *@ ]]; then 63 _combination -s '[:@]' my-accounts users-hosts "users=${IPREFIX/@}" hosts "$@" 64 else 65 _combination -s '[:@]' my-accounts users-hosts \ 66 ${opt_args[-l]:+"users=${opt_args[-l]:q}"} hosts "$@" 67 fi 68} 69 70_rlogin_all_hosts () { 71 _tags hosts && _combination -s '[:@]' my-accounts users-hosts hosts "$@" 72} 73 74_rlogin "$@" 75