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