]>
git.saurik.com Git - wxWidgets.git/blob - src/expat/conftools/install-sh
   3 # install - install a program, script, or datafile 
   4 # This comes from X11R5 (mit/util/scripts/install.sh). 
   6 # Copyright 1991 by the Massachusetts Institute of Technology 
   8 # Permission to use, copy, modify, distribute, and sell this software and its 
   9 # documentation for any purpose is hereby granted without fee, provided that 
  10 # the above copyright notice appear in all copies and that both that 
  11 # copyright notice and this permission notice appear in supporting 
  12 # documentation, and that the name of M.I.T. not be used in advertising or 
  13 # publicity pertaining to distribution of the software without specific, 
  14 # written prior permission.  M.I.T. makes no representations about the 
  15 # suitability of this software for any purpose.  It is provided "as is" 
  16 # without express or implied warranty. 
  18 # Calling this script install-sh is preferred over install.sh, to prevent 
  19 # `make' implicit rules from creating a file called install from it 
  20 # when there is no Makefile. 
  22 # This script is compatible with the BSD install script, but was written 
  23 # from scratch.  It can only install one file at a time, a restriction 
  24 # shared with many OS's install programs. 
  27 # set DOITPROG to echo to test this script 
  29 # Don't use :- since 4.3BSD and earlier shells don't like it. 
  33 # put in absolute paths if you don't have them in your path; or use env. vars. 
  37 chmodprog
="${CHMODPROG-chmod}" 
  38 chownprog
="${CHOWNPROG-chown}" 
  39 chgrpprog
="${CHGRPPROG-chgrp}" 
  40 stripprog
="${STRIPPROG-strip}" 
  42 mkdirprog
="${MKDIRPROG-mkdir}" 
  47 chmodcmd
="$chmodprog 0755" 
  57 while [ x
"$1" != x 
]; do 
  67         -m) chmodcmd
="$chmodprog $2" 
  72         -o) chowncmd
="$chownprog $2" 
  77         -g) chgrpcmd
="$chgrpprog $2" 
  82         -s) stripcmd
="$stripprog" 
  86         -t=*) transformarg
=`echo $1 | sed 's/-t=//'` 
  90         -b=*) transformbasename
=`echo $1 | sed 's/-b=//'` 
  98                 # this colon is to work around a 386BSD /bin/sh bug 
 109         echo "install:  no input file specified" 
 115 if [ x
"$dir_arg" != x 
]; then 
 127 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command 
 128 # might cause directories to be created, which would be especially bad  
 129 # if $src (and thus $dsttmp) contains '*'. 
 131         if [ -f $src -o -d $src ] 
 135                 echo "install:  $src does not exist" 
 141                 echo "install:  no destination specified" 
 147 # If destination is a directory, append the input filename; if your system 
 148 # does not like double slashes in filenames, you may need to add some logic 
 152                 dst
="$dst"/`basename $src` 
 158 ## this sed command emulates the dirname command 
 159 dstdir
=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` 
 161 # Make sure that the destination directory exists. 
 162 #  this part is taken from Noah Friedman's mkinstalldirs script 
 164 # Skip lots of stat calls in the usual case. 
 165 if [ ! -d "$dstdir" ]; then 
 168 IFS
="${IFS-${defaultIFS}}" 
 171 # Some sh's can't handle IFS=/ for some reason. 
 173 set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` 
 178 while [ $# -ne 0 ] ; do 
 179         pathcomp
="${pathcomp}${1}" 
 182         if [ ! -d "${pathcomp}" ] ; 
 184                 $mkdirprog "${pathcomp}" 
 189         pathcomp
="${pathcomp}/" 
 193 if [ x
"$dir_arg" != x 
] 
 195         $doit $instcmd $dst && 
 197         if [ x
"$chowncmd" != x 
]; then $doit $chowncmd $dst; else true 
; fi && 
 198         if [ x
"$chgrpcmd" != x 
]; then $doit $chgrpcmd $dst; else true 
; fi && 
 199         if [ x
"$stripcmd" != x 
]; then $doit $stripcmd $dst; else true 
; fi && 
 200         if [ x
"$chmodcmd" != x 
]; then $doit $chmodcmd $dst; else true 
; fi 
 203 # If we're going to rename the final executable, determine the name now. 
 205         if [ x
"$transformarg" = x 
]  
 207                 dstfile
=`basename $dst` 
 209                 dstfile
=`basename $dst $transformbasename |  
 210                         sed $transformarg`$transformbasename 
 213 # don't allow the sed command to completely eliminate the filename 
 215         if [ x
"$dstfile" = x 
]  
 217                 dstfile
=`basename $dst` 
 222 # Make a temp file name in the proper directory. 
 224         dsttmp
=$dstdir/#inst.$$# 
 226 # Move or copy the file name to the temp name 
 228         $doit $instcmd $src $dsttmp && 
 230         trap "rm -f ${dsttmp}" 0 && 
 232 # and set any options; do chmod last to preserve setuid bits 
 234 # If any of these fail, we abort the whole thing.  If we want to 
 235 # ignore errors from any of these, just make sure not to ignore 
 236 # errors from the above "$doit $instcmd $src $dsttmp" command. 
 238         if [ x
"$chowncmd" != x 
]; then $doit $chowncmd $dsttmp; else true
;fi && 
 239         if [ x
"$chgrpcmd" != x 
]; then $doit $chgrpcmd $dsttmp; else true
;fi && 
 240         if [ x
"$stripcmd" != x 
]; then $doit $stripcmd $dsttmp; else true
;fi && 
 241         if [ x
"$chmodcmd" != x 
]; then $doit $chmodcmd $dsttmp; else true
;fi && 
 243 # Now rename the file to the real destination. 
 245         $doit $rmcmd -f $dstdir/$dstfile && 
 246         $doit $mvcmd $dsttmp $dstdir/$dstfile