symbian-qemu-0.9.1-12/python-2.6.1/install-sh
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 #!/bin/sh
       
     2 #
       
     3 # install - install a program, script, or datafile
       
     4 #
       
     5 # This originates from X11R5 (mit/util/scripts/install.sh), which was
       
     6 # later released in X11R6 (xc/config/util/install.sh) with the
       
     7 # following copyright and license.
       
     8 #
       
     9 # Copyright (C) 1994 X Consortium
       
    10 #
       
    11 # Permission is hereby granted, free of charge, to any person obtaining a copy
       
    12 # of this software and associated documentation files (the "Software"), to
       
    13 # deal in the Software without restriction, including without limitation the
       
    14 # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
       
    15 # sell copies of the Software, and to permit persons to whom the Software is
       
    16 # furnished to do so, subject to the following conditions:
       
    17 #
       
    18 # The above copyright notice and this permission notice shall be included in
       
    19 # all copies or substantial portions of the Software.
       
    20 #
       
    21 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
       
    22 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
       
    23 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
       
    24 # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
       
    25 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
       
    26 # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
       
    27 #
       
    28 # Except as contained in this notice, the name of the X Consortium shall not
       
    29 # be used in advertising or otherwise to promote the sale, use or other deal-
       
    30 # ings in this Software without prior written authorization from the X Consor-
       
    31 # tium.
       
    32 #
       
    33 #
       
    34 # FSF changes to this file are in the public domain.
       
    35 #
       
    36 # Calling this script install-sh is preferred over install.sh, to prevent
       
    37 # `make' implicit rules from creating a file called install from it
       
    38 # when there is no Makefile.
       
    39 #
       
    40 # This script is compatible with the BSD install script, but was written
       
    41 # from scratch.  It can only install one file at a time, a restriction
       
    42 # shared with many OS's install programs.
       
    43 
       
    44 
       
    45 # set DOITPROG to echo to test this script
       
    46 
       
    47 # Don't use :- since 4.3BSD and earlier shells don't like it.
       
    48 doit="${DOITPROG-}"
       
    49 
       
    50 
       
    51 # put in absolute paths if you don't have them in your path; or use env. vars.
       
    52 
       
    53 mvprog="${MVPROG-mv}"
       
    54 cpprog="${CPPROG-cp}"
       
    55 chmodprog="${CHMODPROG-chmod}"
       
    56 chownprog="${CHOWNPROG-chown}"
       
    57 chgrpprog="${CHGRPPROG-chgrp}"
       
    58 stripprog="${STRIPPROG-strip}"
       
    59 rmprog="${RMPROG-rm}"
       
    60 mkdirprog="${MKDIRPROG-mkdir}"
       
    61 
       
    62 transformbasename=""
       
    63 transform_arg=""
       
    64 instcmd="$mvprog"
       
    65 chmodcmd="$chmodprog 0755"
       
    66 chowncmd=""
       
    67 chgrpcmd=""
       
    68 stripcmd=""
       
    69 rmcmd="$rmprog -f"
       
    70 mvcmd="$mvprog"
       
    71 src=""
       
    72 dst=""
       
    73 dir_arg=""
       
    74 
       
    75 while [ x"$1" != x ]; do
       
    76     case $1 in
       
    77 	-c) instcmd=$cpprog
       
    78 	    shift
       
    79 	    continue;;
       
    80 
       
    81 	-d) dir_arg=true
       
    82 	    shift
       
    83 	    continue;;
       
    84 
       
    85 	-m) chmodcmd="$chmodprog $2"
       
    86 	    shift
       
    87 	    shift
       
    88 	    continue;;
       
    89 
       
    90 	-o) chowncmd="$chownprog $2"
       
    91 	    shift
       
    92 	    shift
       
    93 	    continue;;
       
    94 
       
    95 	-g) chgrpcmd="$chgrpprog $2"
       
    96 	    shift
       
    97 	    shift
       
    98 	    continue;;
       
    99 
       
   100 	-s) stripcmd=$stripprog
       
   101 	    shift
       
   102 	    continue;;
       
   103 
       
   104 	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
       
   105 	    shift
       
   106 	    continue;;
       
   107 
       
   108 	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
       
   109 	    shift
       
   110 	    continue;;
       
   111 
       
   112 	*)  if [ x"$src" = x ]
       
   113 	    then
       
   114 		src=$1
       
   115 	    else
       
   116 		# this colon is to work around a 386BSD /bin/sh bug
       
   117 		:
       
   118 		dst=$1
       
   119 	    fi
       
   120 	    shift
       
   121 	    continue;;
       
   122     esac
       
   123 done
       
   124 
       
   125 if [ x"$src" = x ]
       
   126 then
       
   127 	echo "$0: no input file specified" >&2
       
   128 	exit 1
       
   129 else
       
   130 	:
       
   131 fi
       
   132 
       
   133 if [ x"$dir_arg" != x ]; then
       
   134 	dst=$src
       
   135 	src=""
       
   136 
       
   137 	if [ -d "$dst" ]; then
       
   138 		instcmd=:
       
   139 		chmodcmd=""
       
   140 	else
       
   141 		instcmd=$mkdirprog
       
   142 	fi
       
   143 else
       
   144 
       
   145 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
       
   146 # might cause directories to be created, which would be especially bad
       
   147 # if $src (and thus $dsttmp) contains '*'.
       
   148 
       
   149 	if [ -f "$src" ] || [ -d "$src" ]
       
   150 	then
       
   151 		:
       
   152 	else
       
   153 		echo "$0: $src does not exist" >&2
       
   154 		exit 1
       
   155 	fi
       
   156 
       
   157 	if [ x"$dst" = x ]
       
   158 	then
       
   159 		echo "$0: no destination specified" >&2
       
   160 		exit 1
       
   161 	else
       
   162 		:
       
   163 	fi
       
   164 
       
   165 # If destination is a directory, append the input filename; if your system
       
   166 # does not like double slashes in filenames, you may need to add some logic
       
   167 
       
   168 	if [ -d "$dst" ]
       
   169 	then
       
   170 		dst=$dst/`basename "$src"`
       
   171 	else
       
   172 		:
       
   173 	fi
       
   174 fi
       
   175 
       
   176 ## this sed command emulates the dirname command
       
   177 dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
       
   178 
       
   179 # Make sure that the destination directory exists.
       
   180 #  this part is taken from Noah Friedman's mkinstalldirs script
       
   181 
       
   182 # Skip lots of stat calls in the usual case.
       
   183 if [ ! -d "$dstdir" ]; then
       
   184 defaultIFS='
       
   185 	'
       
   186 IFS="${IFS-$defaultIFS}"
       
   187 
       
   188 oIFS=$IFS
       
   189 # Some sh's can't handle IFS=/ for some reason.
       
   190 IFS='%'
       
   191 set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
       
   192 IFS=$oIFS
       
   193 
       
   194 pathcomp=''
       
   195 
       
   196 while [ $# -ne 0 ] ; do
       
   197 	pathcomp=$pathcomp$1
       
   198 	shift
       
   199 
       
   200 	if [ ! -d "$pathcomp" ] ;
       
   201         then
       
   202 		$mkdirprog "$pathcomp"
       
   203 	else
       
   204 		:
       
   205 	fi
       
   206 
       
   207 	pathcomp=$pathcomp/
       
   208 done
       
   209 fi
       
   210 
       
   211 if [ x"$dir_arg" != x ]
       
   212 then
       
   213 	$doit $instcmd "$dst" &&
       
   214 
       
   215 	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dst"; else : ; fi &&
       
   216 	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dst"; else : ; fi &&
       
   217 	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dst"; else : ; fi &&
       
   218 	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dst"; else : ; fi
       
   219 else
       
   220 
       
   221 # If we're going to rename the final executable, determine the name now.
       
   222 
       
   223 	if [ x"$transformarg" = x ]
       
   224 	then
       
   225 		dstfile=`basename "$dst"`
       
   226 	else
       
   227 		dstfile=`basename "$dst" $transformbasename |
       
   228 			sed $transformarg`$transformbasename
       
   229 	fi
       
   230 
       
   231 # don't allow the sed command to completely eliminate the filename
       
   232 
       
   233 	if [ x"$dstfile" = x ]
       
   234 	then
       
   235 		dstfile=`basename "$dst"`
       
   236 	else
       
   237 		:
       
   238 	fi
       
   239 
       
   240 # Make a couple of temp file names in the proper directory.
       
   241 
       
   242 	dsttmp=$dstdir/#inst.$$#
       
   243 	rmtmp=$dstdir/#rm.$$#
       
   244 
       
   245 # Trap to clean up temp files at exit.
       
   246 
       
   247 	trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0
       
   248 	trap '(exit $?); exit' 1 2 13 15
       
   249 
       
   250 # Move or copy the file name to the temp name
       
   251 
       
   252 	$doit $instcmd "$src" "$dsttmp" &&
       
   253 
       
   254 # and set any options; do chmod last to preserve setuid bits
       
   255 
       
   256 # If any of these fail, we abort the whole thing.  If we want to
       
   257 # ignore errors from any of these, just make sure not to ignore
       
   258 # errors from the above "$doit $instcmd $src $dsttmp" command.
       
   259 
       
   260 	if [ x"$chowncmd" != x ]; then $doit $chowncmd "$dsttmp"; else :;fi &&
       
   261 	if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd "$dsttmp"; else :;fi &&
       
   262 	if [ x"$stripcmd" != x ]; then $doit $stripcmd "$dsttmp"; else :;fi &&
       
   263 	if [ x"$chmodcmd" != x ]; then $doit $chmodcmd "$dsttmp"; else :;fi &&
       
   264 
       
   265 # Now remove or move aside any old file at destination location.  We try this
       
   266 # two ways since rm can't unlink itself on some systems and the destination
       
   267 # file might be busy for other reasons.  In this case, the final cleanup
       
   268 # might fail but the new file should still install successfully.
       
   269 
       
   270 {
       
   271 	if [ -f "$dstdir/$dstfile" ]
       
   272 	then
       
   273 		$doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null ||
       
   274 		$doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null ||
       
   275 		{
       
   276 		  echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
       
   277 		  (exit 1); exit
       
   278 		}
       
   279 	else
       
   280 		:
       
   281 	fi
       
   282 } &&
       
   283 
       
   284 # Now rename the file to the real destination.
       
   285 
       
   286 	$doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
       
   287 
       
   288 fi &&
       
   289 
       
   290 # The final little trick to "correctly" pass the exit status to the exit trap.
       
   291 
       
   292 {
       
   293 	(exit 0); exit
       
   294 }