1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
|
#!/bin/sh
# Copyright (C) 2001-2021 Artifex Software, Inc.
# All Rights Reserved.
#
# This software is provided AS-IS with no warranty, either express or
# implied.
#
# This software is distributed under license and may not be copied,
# modified or distributed except as expressly authorized under the terms
# of the license contained in the file LICENSE in this distribution.
#
# Refer to licensing information at http://www.artifex.com or contact
# Artifex Software, Inc., 1305 Grant Avenue - Suite 200, Novato,
# CA 94945, U.S.A., +1(415)492-9861, for further information.
#
#
# Implement a uniform 'install' syntax independent of which of the two
# "standard" install programs is installed. Based on ideas in, but not
# copied from, the GNU fileutils install-sh script. Usage:
# instcopy -c [-m <mode>] <srcfile> (<dstdir>|<dstfile>)
doit=""
# Uncomment the following line for testing
#doit="echo "
mode=""
while true; do
case "$1" in
-c) ;;
-m) mode=$2; shift ;;
*) break ;;
esac
shift; done
src=$1
dst=$2
if [ $# = 2 -a -f $src ]; then true; else
echo "Usage: instcopy -c [-m <mode>] <srcfile> (<dstdir>|<dstfile>)"
exit 1
fi
if [ -d $dst ]; then
dstdir=`echo $dst | sed -e 's,/$,,'`
dst="$dstdir"/`basename $src`
else
dstdir=`echo $dst | sed -e 's,/[^/]*$,,'`
fi
dsttmp=$dstdir/#inst.$$#
$doit trap "rm -f $dsttmp" 0 &&
$doit cp $src $dsttmp &&
if [ x"$mode" != x ]; then $doit chmod $mode $dsttmp; else true; fi &&
$doit rm -f $dst &&
$doit mv $dsttmp $dst &&
exit 0
|