]>
git.saurik.com Git - wxWidgets.git/blob - 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 
 126 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command 
 127 # might cause directories to be created, which would be especially bad  
 128 # if $src (and thus $dsttmp) contains '*'. 
 130         if [ -f $src -o -d $src ] 
 134                 echo "install:  $src does not exist" 
 140                 echo "install:  no destination specified" 
 146 # If destination is a directory, append the input filename; if your system 
 147 # does not like double slashes in filenames, you may need to add some logic 
 151                 dst
="$dst"/`basename $src` 
 157 ## this sed command emulates the dirname command 
 158 dstdir
=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` 
 160 # Make sure that the destination directory exists. 
 161 #  this part is taken from Noah Friedman's mkinstalldirs script 
 163 # Skip lots of stat calls in the usual case. 
 164 if [ ! -d "$dstdir" ]; then 
 167 IFS
="${IFS-${defaultIFS}}" 
 170 # Some sh's can't handle IFS=/ for some reason. 
 172 set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` 
 177 while [ $# -ne 0 ] ; do 
 178         pathcomp
="${pathcomp}${1}" 
 181         if [ ! -d "${pathcomp}" ] ; 
 183                 $mkdirprog "${pathcomp}" 
 188         pathcomp
="${pathcomp}/" 
 192 if [ x
"$dir_arg" != x 
] 
 194         $doit $instcmd $dst && 
 196         if [ x
"$chowncmd" != x 
]; then $doit $chowncmd $dst; else true 
; fi && 
 197         if [ x
"$chgrpcmd" != x 
]; then $doit $chgrpcmd $dst; else true 
; fi && 
 198         if [ x
"$stripcmd" != x 
]; then $doit $stripcmd $dst; else true 
; fi && 
 199         if [ x
"$chmodcmd" != x 
]; then $doit $chmodcmd $dst; else true 
; fi 
 202 # If we're going to rename the final executable, determine the name now. 
 204         if [ x
"$transformarg" = x 
]  
 206                 dstfile
=`basename $dst` 
 208                 dstfile
=`basename $dst $transformbasename |  
 209                         sed $transformarg`$transformbasename 
 212 # don't allow the sed command to completely eliminate the filename 
 214         if [ x
"$dstfile" = x 
]  
 216                 dstfile
=`basename $dst` 
 221 # Make a temp file name in the proper directory. 
 223         dsttmp
=$dstdir/#inst.$$# 
 225 # Move or copy the file name to the temp name 
 227         $doit $instcmd $src $dsttmp && 
 229         trap "rm -f ${dsttmp}" 0 && 
 231 # and set any options; do chmod last to preserve setuid bits 
 233 # If any of these fail, we abort the whole thing.  If we want to 
 234 # ignore errors from any of these, just make sure not to ignore 
 235 # errors from the above "$doit $instcmd $src $dsttmp" command. 
 237         if [ x
"$chowncmd" != x 
]; then $doit $chowncmd $dsttmp; else true
;fi && 
 238         if [ x
"$chgrpcmd" != x 
]; then $doit $chgrpcmd $dsttmp; else true
;fi && 
 239         if [ x
"$stripcmd" != x 
]; then $doit $stripcmd $dsttmp; else true
;fi && 
 240         if [ x
"$chmodcmd" != x 
]; then $doit $chmodcmd $dsttmp; else true
;fi && 
 242 # Now rename the file to the real destination. 
 244         $doit $rmcmd -f $dstdir/$dstfile && 
 245         $doit $mvcmd $dsttmp $dstdir/$dstfile