relicence under MirOS Licence, granted by private deal with the CTO
[shellsnippets/shellsnippets.git] / mksh / rcp
1 #!/bin/mksh
2 # $MirOS: contrib/hosted/tg/rcp,v 1.4 2010/10/06 18:46:18 tg Exp $
3 #-
4 # Copyright (c) 2009, 2010
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 use_K=-K
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-K|--no-keep-dirlinks)
47                 use_K=
48                 unset args[i]
49                 ;;
50         (-K|--keep-dirlinks)
51                 use_K=-K
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 -xzavPH $use_K $use_sparse --stats "$sshx" "${args[@]}"