19f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project#!/bin/sh 29f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# 39f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# install - install a program, script, or datafile 49f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# This comes from X11R5 (mit/util/scripts/install.sh). 59f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# 69f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Copyright 1991 by the Massachusetts Institute of Technology 79f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# 89f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Permission to use, copy, modify, distribute, and sell this software and its 99f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# documentation for any purpose is hereby granted without fee, provided that 109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# the above copyright notice appear in all copies and that both that 119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# copyright notice and this permission notice appear in supporting 129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# documentation, and that the name of M.I.T. not be used in advertising or 139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# publicity pertaining to distribution of the software without specific, 149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# written prior permission. M.I.T. makes no representations about the 159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# suitability of this software for any purpose. It is provided "as is" 169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# without express or implied warranty. 179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# 189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Calling this script install-sh is preferred over install.sh, to prevent 199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# `make' implicit rules from creating a file called install from it 209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# when there is no Makefile. 219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# 229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# This script is compatible with the BSD install script, but was written 239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# from scratch. It can only install one file at a time, a restriction 249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# shared with many OS's install programs. 259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# set DOITPROG to echo to test this script 289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Don't use :- since 4.3BSD and earlier shells don't like it. 309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectdoit="${DOITPROG-}" 319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# put in absolute paths if you don't have them in your path; or use env. vars. 349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectmvprog="${MVPROG-mv}" 369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectcpprog="${CPPROG-cp}" 379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectchmodprog="${CHMODPROG-chmod}" 389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectchownprog="${CHOWNPROG-chown}" 399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectchgrpprog="${CHGRPPROG-chgrp}" 409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstripprog="${STRIPPROG-strip}" 419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectrmprog="${RMPROG-rm}" 429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectmkdirprog="${MKDIRPROG-mkdir}" 439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttransformbasename="" 459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projecttransform_arg="" 469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectinstcmd="$mvprog" 479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectchmodcmd="$chmodprog 0755" 489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectchowncmd="" 499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectchgrpcmd="" 509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectstripcmd="" 519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectrmcmd="$rmprog -f" 529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectmvcmd="$mvprog" 539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectsrc="" 549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectdst="" 559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectdir_arg="" 569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectwhile [ x"$1" != x ]; do 589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project case $1 in 599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -c) instcmd="$cpprog" 609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -d) dir_arg=true 649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -m) chmodcmd="$chmodprog $2" 689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -o) chowncmd="$chownprog $2" 739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -g) chgrpcmd="$chgrpprog $2" 789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -s) stripcmd="$stripprog" 839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -t=*) transformarg=`echo $1 | sed 's/-t=//'` 879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project -b=*) transformbasename=`echo $1 | sed 's/-b=//'` 919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project *) if [ x"$src" = x ] 959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project src=$1 979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project # this colon is to work around a 386BSD /bin/sh bug 999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project : 1009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dst=$1 1019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 1029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 1039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project continue;; 1049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project esac 1059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectdone 1069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectif [ x"$src" = x ] 1089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectthen 1099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project echo "install: no input file specified" 1109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project exit 1 1119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectelse 1129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project true 1139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectfi 1149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectif [ x"$dir_arg" != x ]; then 1169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dst=$src 1179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project src="" 1189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ -d $dst ]; then 1209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project instcmd=: 1219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 1229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project instcmd=mkdir 1239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 1249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectelse 1259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Waiting for this to be detected by the "$instcmd $src $dsttmp" command 1279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# might cause directories to be created, which would be especially bad 1289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# if $src (and thus $dsttmp) contains '*'. 1299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ -f $src -o -d $src ] 1319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 1329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project true 1339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 1349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project echo "install: $src does not exist" 1359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project exit 1 1369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 1379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$dst" = x ] 1399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 1409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project echo "install: no destination specified" 1419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project exit 1 1429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 1439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project true 1449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 1459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# If destination is a directory, append the input filename; if your system 1479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# does not like double slashes in filenames, you may need to add some logic 1489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ -d $dst ] 1509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 1519f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dst="$dst"/`basename $src` 1529f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 1539f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project true 1549f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 1559f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectfi 1569f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1579f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project## this sed command emulates the dirname command 1589f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectdstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` 1599f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1609f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Make sure that the destination directory exists. 1619f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# this part is taken from Noah Friedman's mkinstalldirs script 1629f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1639f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Skip lots of stat calls in the usual case. 1649f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectif [ ! -d "$dstdir" ]; then 1659f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectdefaultIFS=' 1669f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project' 1679f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectIFS="${IFS-${defaultIFS}}" 1689f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1699f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectoIFS="${IFS}" 1709f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Some sh's can't handle IFS=/ for some reason. 1719f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectIFS='%' 1729f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectset - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` 1739f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source ProjectIFS="${oIFS}" 1749f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1759f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectpathcomp='' 1769f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1779f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectwhile [ $# -ne 0 ] ; do 1789f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project pathcomp="${pathcomp}${1}" 1799f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project shift 1809f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1819f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ ! -d "${pathcomp}" ] ; 1829f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 1839f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project $mkdirprog "${pathcomp}" 1849f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 1859f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project true 1869f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 1879f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1889f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project pathcomp="${pathcomp}/" 1899f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectdone 1909f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectfi 1919f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1929f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectif [ x"$dir_arg" != x ] 1939f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectthen 1949f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project $doit $instcmd $dst && 1959f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 1969f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && 1979f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && 1989f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && 1999f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi 2009f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectelse 2019f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2029f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# If we're going to rename the final executable, determine the name now. 2039f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2049f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$transformarg" = x ] 2059f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 2069f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dstfile=`basename $dst` 2079f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 2089f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dstfile=`basename $dst $transformbasename | 2099f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project sed $transformarg`$transformbasename 2109f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 2119f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2129f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# don't allow the sed command to completely eliminate the filename 2139f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2149f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$dstfile" = x ] 2159f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project then 2169f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dstfile=`basename $dst` 2179f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project else 2189f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project true 2199f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project fi 2209f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2219f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Make a temp file name in the proper directory. 2229f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2239f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project dsttmp=$dstdir/#inst.$$# 2249f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2259f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Move or copy the file name to the temp name 2269f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2279f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project $doit $instcmd $src $dsttmp && 2289f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2299f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project trap "rm -f ${dsttmp}" 0 && 2309f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2319f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# and set any options; do chmod last to preserve setuid bits 2329f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2339f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# If any of these fail, we abort the whole thing. If we want to 2349f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# ignore errors from any of these, just make sure not to ignore 2359f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# errors from the above "$doit $instcmd $src $dsttmp" command. 2369f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2379f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && 2389f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && 2399f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && 2409f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && 2419f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2429f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project# Now rename the file to the real destination. 2439f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2449f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project $doit $rmcmd -f $dstdir/$dstfile && 2459f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project $doit $mvcmd $dsttmp $dstdir/$dstfile 2469f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2479f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectfi && 2489f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2499f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Project 2509f5d49a1588e438ae7ceabd0c94172117e3303aaThe Android Open Source Projectexit 0 251