add another one useful for .profile
[shellsnippets/shellsnippets.git] / mksh / rcp
1 #!/bin/mksh
2 # $MirOS: contrib/hosted/tg/rcp,v 1.5 2013/10/30 20:18:49 tg Exp $
3 #-
4 # Copyright (c) 2009, 2010, 2013
5 #       Thorsten Glaser <tg@mirbsd.org>
6 #
7 # Provided that these terms and disclaimer and all copyright notices
8 # are retained or reproduced in an accompanying document, permission
9 # is granted to deal in this work without restriction, including un-
10 # limited rights to use, publicly perform, distribute, sell, modify,
11 # merge, give away, or sublicence.
12 #
13 # This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
14 # the utmost extent permitted by applicable law, neither express nor
15 # implied; without malicious intent or gross negligence. In no event
16 # may a licensor, author or contributor be held liable for indirect,
17 # direct, other damage, loss, or other issues arising in any way out
18 # of dealing in the work, even if advised of the possibility of such
19 # damage or existence of a defect, except proven that it results out
20 # of said person's immediate fault when using the work as intended.
21
22 sshx="--rsh=ssh -T"
23 set -A args -- "$@"
24 i=0
25 is_inplace=0
26 numeric_ids=--numeric-ids
27 while (( i < ${#args[*]} )); do
28         case ${args[i]} {
29         (-4)
30                 sshx="$sshx -4"
31                 unset args[i]
32                 ;;
33         (-h)
34                 print -u2 "Syntax:\t$0 [-h] [-4] [--sshkey=~/.etc/ssh/id_rsa] \\"
35                 print -u2 "     [«rsync_args»] source [source …] dest"
36                 print -u2
37                 exec rsync --help
38                 ;;
39         (--sshkey=*)
40                 sshx="$sshx -i '${args[i]#*=}'"
41                 unset args[i]
42                 ;;
43         (--inplace)
44                 is_inplace=1
45                 ;;
46         (--no-numeric-ids)
47                 numeric_ids=
48                 unset args[i]
49                 ;;
50         (--numeric-ids)
51                 numeric_ids=--numeric-ids
52                 unset args[i]
53                 ;;
54         (-*)
55                 ;;
56         (*)
57                 break
58                 ;;
59         }
60         let ++i
61 done
62
63 if (( is_inplace )); then
64         use_sparse=
65 else
66         use_sparse=-S
67 fi
68
69 exec rsync -zavPH $numeric_ids $use_sparse --stats "$sshx" "${args[@]}"