1313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#!/bin/sh
2313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#
3313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# install - install a program, script, or datafile
4313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# This comes from X11R5 (mit/util/scripts/install.sh).
5313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#
6313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Copyright 1991 by the Massachusetts Institute of Technology
7313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#
8313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Permission to use, copy, modify, distribute, and sell this software and its
9313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# documentation for any purpose is hereby granted without fee, provided that
10313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# the above copyright notice appear in all copies and that both that
11313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# copyright notice and this permission notice appear in supporting
12313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# documentation, and that the name of M.I.T. not be used in advertising or
13313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# publicity pertaining to distribution of the software without specific,
14313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# written prior permission.  M.I.T. makes no representations about the
15313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# suitability of this software for any purpose.  It is provided "as is"
16313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# without express or implied warranty.
17313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#
18313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Calling this script install-sh is preferred over install.sh, to prevent
19313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# `make' implicit rules from creating a file called install from it
20313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# when there is no Makefile.
21313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#
22313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# This script is compatible with the BSD install script, but was written
23313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# from scratch.  It can only install one file at a time, a restriction
24313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# shared with many OS's install programs.
25313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
26313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
27313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# set DOITPROG to echo to test this script
28313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
29313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Don't use :- since 4.3BSD and earlier shells don't like it.
30313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittidoit="${DOITPROG-}"
31313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
32313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
33313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# put in absolute paths if you don't have them in your path; or use env. vars.
34313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
35313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittimvprog="${MVPROG-mv}"
36313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitticpprog="${CPPROG-cp}"
37313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittichmodprog="${CHMODPROG-chmod}"
38313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittichownprog="${CHOWNPROG-chown}"
39313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittichgrpprog="${CHGRPPROG-chgrp}"
40313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittistripprog="${STRIPPROG-strip}"
41313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittirmprog="${RMPROG-rm}"
42313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittimkdirprog="${MKDIRPROG-mkdir}"
43313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
44313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittitransformbasename=""
45313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittitransform_arg=""
46313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiinstcmd="$mvprog"
47313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittichmodcmd="$chmodprog 0755"
48313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittichowncmd=""
49313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittichgrpcmd=""
50313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittistripcmd=""
51313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittirmcmd="$rmprog -f"
52313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittimvcmd="$mvprog"
53313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittisrc=""
54313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittidst=""
55313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittidir_arg=""
56313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
57313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiwhile [ x"$1" != x ]; do
58313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti    case $1 in
59313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-c) instcmd="$cpprog"
60313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
61313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
62313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
63313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-d) dir_arg=true
64313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
65313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
66313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
67313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-m) chmodcmd="$chmodprog $2"
68313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
69313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
70313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
71313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
72313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-o) chowncmd="$chownprog $2"
73313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
74313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
75313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
76313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
77313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-g) chgrpcmd="$chgrpprog $2"
78313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
79313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
80313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
81313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
82313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-s) stripcmd="$stripprog"
83313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
84313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
85313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
86313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
87313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
88313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
89313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
90313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
91313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
92313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
93313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
94313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	*)  if [ x"$src" = x ]
95313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    then
96313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		src=$1
97313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    else
98313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		# this colon is to work around a 386BSD /bin/sh bug
99313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		:
100313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		dst=$1
101313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    fi
102313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    shift
103313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	    continue;;
104313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti    esac
105313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittidone
106313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
107313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiif [ x"$src" = x ]
108313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittithen
109313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	echo "install:	no input file specified"
110313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	exit 1
111313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittielse
112313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	true
113313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittifi
114313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
115313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiif [ x"$dir_arg" != x ]; then
116313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	dst=$src
117313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	src=""
118313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	
119313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ -d $dst ]; then
120313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		instcmd=:
121313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		chmodcmd=""
122313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
123313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		instcmd=mkdir
124313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
125313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittielse
126313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
127313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
128313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# might cause directories to be created, which would be especially bad 
129313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# if $src (and thus $dsttmp) contains '*'.
130313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
131313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ -f $src -o -d $src ]
132313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	then
133313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		true
134313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
135313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		echo "install:  $src does not exist"
136313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		exit 1
137313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
138313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	
139313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$dst" = x ]
140313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	then
141313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		echo "install:	no destination specified"
142313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		exit 1
143313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
144313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		true
145313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
146313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
147313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# If destination is a directory, append the input filename; if your system
148313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# does not like double slashes in filenames, you may need to add some logic
149313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
150313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ -d $dst ]
151313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	then
152313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		dst="$dst"/`basename $src`
153313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
154313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		true
155313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
156313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittifi
157313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
158313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti## this sed command emulates the dirname command
159313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittidstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
160313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
161313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Make sure that the destination directory exists.
162313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti#  this part is taken from Noah Friedman's mkinstalldirs script
163313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
164313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Skip lots of stat calls in the usual case.
165313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiif [ ! -d "$dstdir" ]; then
166313379eb6b9da55f7371adef39a92153a0707d4aLorenzo ColittidefaultIFS='	
167313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti'
168313379eb6b9da55f7371adef39a92153a0707d4aLorenzo ColittiIFS="${IFS-${defaultIFS}}"
169313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
170313379eb6b9da55f7371adef39a92153a0707d4aLorenzo ColittioIFS="${IFS}"
171313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Some sh's can't handle IFS=/ for some reason.
172313379eb6b9da55f7371adef39a92153a0707d4aLorenzo ColittiIFS='%'
173313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiset - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
174313379eb6b9da55f7371adef39a92153a0707d4aLorenzo ColittiIFS="${oIFS}"
175313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
176313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittipathcomp=''
177313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
178313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiwhile [ $# -ne 0 ] ; do
179313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	pathcomp="${pathcomp}${1}"
180313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	shift
181313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
182313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ ! -d "${pathcomp}" ] ;
183313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti        then
184313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		$mkdirprog "${pathcomp}"
185313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
186313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		true
187313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
188313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
189313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	pathcomp="${pathcomp}/"
190313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittidone
191313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittifi
192313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
193313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiif [ x"$dir_arg" != x ]
194313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittithen
195313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	$doit $instcmd $dst &&
196313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
197313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
198313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
199313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
200313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
201313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittielse
202313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
203313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# If we're going to rename the final executable, determine the name now.
204313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
205313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$transformarg" = x ] 
206313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	then
207313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		dstfile=`basename $dst`
208313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
209313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		dstfile=`basename $dst $transformbasename | 
210313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti			sed $transformarg`$transformbasename
211313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
212313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
213313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# don't allow the sed command to completely eliminate the filename
214313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
215313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$dstfile" = x ] 
216313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	then
217313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		dstfile=`basename $dst`
218313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	else
219313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti		true
220313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	fi
221313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
222313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Make a temp file name in the proper directory.
223313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
224313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	dsttmp=$dstdir/#inst.$$#
225313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
226313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Move or copy the file name to the temp name
227313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
228313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	$doit $instcmd $src $dsttmp &&
229313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
230313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	trap "rm -f ${dsttmp}" 0 &&
231313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
232313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# and set any options; do chmod last to preserve setuid bits
233313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
234313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# If any of these fail, we abort the whole thing.  If we want to
235313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# ignore errors from any of these, just make sure not to ignore
236313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# errors from the above "$doit $instcmd $src $dsttmp" command.
237313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
238313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
239313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
240313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
241313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
242313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
243313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti# Now rename the file to the real destination.
244313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
245313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	$doit $rmcmd -f $dstdir/$dstfile &&
246313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti	$doit $mvcmd $dsttmp $dstdir/$dstfile 
247313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
248313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittifi &&
249313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
250313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colitti
251313379eb6b9da55f7371adef39a92153a0707d4aLorenzo Colittiexit 0
252