iconv: add cp932 as an alias for shift_jis
[musl.git] / tools / install.sh
blob855a8ca2dba21c080bba114db8d2ecfa2350be0f
1 #!/bin/sh
3 # This is an actually-safe install command which installs the new
4 # file atomically in the new location, rather than overwriting
5 # existing files.
8 usage() {
9 printf "usage: %s [-D] [-l] [-m mode] src dest\n" "$0" 1>&2
10 exit 1
13 mkdirp=
14 symlink=
15 mode=755
17 while getopts Dlm: name ; do
18 case "$name" in
19 D) mkdirp=yes ;;
20 l) symlink=yes ;;
21 m) mode=$OPTARG ;;
22 ?) usage ;;
23 esac
24 done
25 shift $(($OPTIND - 1))
27 test "$#" -eq 2 || usage
28 src=$1
29 dst=$2
30 tmp="$dst.tmp.$$"
32 case "$dst" in
33 */) printf "%s: %s ends in /\n", "$0" "$dst" 1>&2 ; exit 1 ;;
34 esac
36 set -C
37 set -e
39 if test "$mkdirp" ; then
40 umask 022
41 case "$2" in
42 */*) mkdir -p "${dst%/*}" ;;
43 esac
46 trap 'rm -f "$tmp"' EXIT INT QUIT TERM HUP
48 umask 077
50 if test "$symlink" ; then
51 umask 000
52 ln -s "$1" "$tmp"
53 umask 077
54 else
55 cat < "$1" > "$tmp"
56 chmod "$mode" "$tmp"
59 mv -f "$tmp" "$2"
60 test -d "$2" && {
61 rm -f "$2/$tmp"
62 printf "%s: %s is a directory\n" "$0" "$dst" 1>&2
63 exit 1
66 exit 0