1e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#!/bin/sh
2e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#
3e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# install - install a program, script, or datafile
4e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# This comes from X11R5 (mit/util/scripts/install.sh).
5e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#
6e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Copyright 1991 by the Massachusetts Institute of Technology
7e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#
8e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Permission to use, copy, modify, distribute, and sell this software and its
9e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# documentation for any purpose is hereby granted without fee, provided that
10e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# the above copyright notice appear in all copies and that both that
11e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# copyright notice and this permission notice appear in supporting
12e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# documentation, and that the name of M.I.T. not be used in advertising or
13e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# publicity pertaining to distribution of the software without specific,
14e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# written prior permission.  M.I.T. makes no representations about the
15e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# suitability of this software for any purpose.  It is provided "as is"
16e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# without express or implied warranty.
17e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#
18e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Calling this script install-sh is preferred over install.sh, to prevent
19e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# `make' implicit rules from creating a file called install from it
20e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# when there is no Makefile.
21e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#
22e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# This script is compatible with the BSD install script, but was written
23e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# from scratch.  It can only install one file at a time, a restriction
24e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# shared with many OS's install programs.
25e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
26e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
27e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# set DOITPROG to echo to test this script
28e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
29e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Don't use :- since 4.3BSD and earlier shells don't like it.
30e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lidoit="${DOITPROG-}"
31e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
32e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
33e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# put in absolute paths if you don't have them in your path; or use env. vars.
34e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
35e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Limvprog="${MVPROG-mv}"
36e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Licpprog="${CPPROG-cp}"
37e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lichmodprog="${CHMODPROG-chmod}"
38e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lichownprog="${CHOWNPROG-chown}"
39e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lichgrpprog="${CHGRPPROG-chgrp}"
40e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Listripprog="${STRIPPROG-strip}"
41e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lirmprog="${RMPROG-rm}"
42e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Limkdirprog="${MKDIRPROG-mkdir}"
43e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
44e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Litransformbasename=""
45e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Litransform_arg=""
46e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liinstcmd="$mvprog"
47e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lichmodcmd="$chmodprog 0755"
48e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lichowncmd=""
49e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lichgrpcmd=""
50e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Listripcmd=""
51e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lirmcmd="$rmprog -f"
52e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Limvcmd="$mvprog"
53e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lisrc=""
54e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lidst=""
55e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lidir_arg=""
56e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
57e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liwhile [ x"$1" != x ]; do
58e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li    case $1 in
59e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-c) instcmd="$cpprog"
60e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
61e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
62e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
63e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-d) dir_arg=true
64e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
65e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
66e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
67e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-m) chmodcmd="$chmodprog $2"
68e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
69e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
70e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
71e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
72e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-o) chowncmd="$chownprog $2"
73e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
74e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
75e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
76e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
77e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-g) chgrpcmd="$chgrpprog $2"
78e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
79e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
80e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
81e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
82e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-s) stripcmd="$stripprog"
83e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
84e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
85e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
86e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
87e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
88e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
89e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
90e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
91e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
92e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
93e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
94e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	*)  if [ x"$src" = x ]
95e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    then
96e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		src=$1
97e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    else
98e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		# this colon is to work around a 386BSD /bin/sh bug
99e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		:
100e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		dst=$1
101e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    fi
102e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    shift
103e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	    continue;;
104e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li    esac
105e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lidone
106e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
107e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liif [ x"$src" = x ]
108e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lithen
109e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	echo "install:	no input file specified"
110e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	exit 1
111e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lielse
112e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	true
113e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lifi
114e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
115e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liif [ x"$dir_arg" != x ]; then
116e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	dst=$src
117e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	src=""
118e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	
119e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ -d $dst ]; then
120e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		instcmd=:
121e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		chmodcmd=""
122e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
123e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		instcmd=mkdir
124e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
125e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lielse
126e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
127e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Waiting for this to be detected by the "$instcmd $src $dsttmp" command
128e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# might cause directories to be created, which would be especially bad 
129e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# if $src (and thus $dsttmp) contains '*'.
130e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
131e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ -f $src -o -d $src ]
132e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	then
133e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		true
134e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
135e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		echo "install:  $src does not exist"
136e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		exit 1
137e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
138e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	
139e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$dst" = x ]
140e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	then
141e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		echo "install:	no destination specified"
142e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		exit 1
143e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
144e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		true
145e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
146e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
147e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# If destination is a directory, append the input filename; if your system
148e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# does not like double slashes in filenames, you may need to add some logic
149e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
150e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ -d $dst ]
151e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	then
152e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		dst="$dst"/`basename $src`
153e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
154e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		true
155e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
156e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lifi
157e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
158e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li## this sed command emulates the dirname command
159e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lidstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
160e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
161e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Make sure that the destination directory exists.
162e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li#  this part is taken from Noah Friedman's mkinstalldirs script
163e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
164e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Skip lots of stat calls in the usual case.
165e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liif [ ! -d "$dstdir" ]; then
166e54acca48ba1ab84ac7c693de45ed31ac3f311c2David LidefaultIFS='	
167e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li'
168e54acca48ba1ab84ac7c693de45ed31ac3f311c2David LiIFS="${IFS-${defaultIFS}}"
169e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
170e54acca48ba1ab84ac7c693de45ed31ac3f311c2David LioIFS="${IFS}"
171e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Some sh's can't handle IFS=/ for some reason.
172e54acca48ba1ab84ac7c693de45ed31ac3f311c2David LiIFS='%'
173e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liset - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
174e54acca48ba1ab84ac7c693de45ed31ac3f311c2David LiIFS="${oIFS}"
175e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
176e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lipathcomp=''
177e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
178e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liwhile [ $# -ne 0 ] ; do
179e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	pathcomp="${pathcomp}${1}"
180e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	shift
181e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
182e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ ! -d "${pathcomp}" ] ;
183e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li        then
184e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		$mkdirprog "${pathcomp}"
185e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
186e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		true
187e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
188e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
189e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	pathcomp="${pathcomp}/"
190e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lidone
191e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lifi
192e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
193e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liif [ x"$dir_arg" != x ]
194e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lithen
195e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	$doit $instcmd $dst &&
196e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
197e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
198e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
199e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
200e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
201e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lielse
202e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
203e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# If we're going to rename the final executable, determine the name now.
204e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
205e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$transformarg" = x ] 
206e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	then
207e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		dstfile=`basename $dst`
208e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
209e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		dstfile=`basename $dst $transformbasename | 
210e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li			sed $transformarg`$transformbasename
211e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
212e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
213e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# don't allow the sed command to completely eliminate the filename
214e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
215e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$dstfile" = x ] 
216e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	then
217e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		dstfile=`basename $dst`
218e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	else
219e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li		true
220e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	fi
221e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
222e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Make a temp file name in the proper directory.
223e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
224e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	dsttmp=$dstdir/#inst.$$#
225e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
226e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Move or copy the file name to the temp name
227e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
228e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	$doit $instcmd $src $dsttmp &&
229e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
230e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	trap "rm -f ${dsttmp}" 0 &&
231e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
232e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# and set any options; do chmod last to preserve setuid bits
233e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
234e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# If any of these fail, we abort the whole thing.  If we want to
235e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# ignore errors from any of these, just make sure not to ignore
236e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# errors from the above "$doit $instcmd $src $dsttmp" command.
237e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
238e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
239e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
240e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
241e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
242e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
243e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li# Now rename the file to the real destination.
244e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
245e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	$doit $rmcmd -f $dstdir/$dstfile &&
246e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li	$doit $mvcmd $dsttmp $dstdir/$dstfile 
247e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
248e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Lifi &&
249e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
250e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Li
251e54acca48ba1ab84ac7c693de45ed31ac3f311c2David Liexit 0
252