"SfR Fresh" - the SfR Freeware/Shareware Archive

Member "trafshow-3.1/install-sh" of archive trafshow-3.1.tgz:


As a special service "SfR Fresh" has tried to format the requested source page into HTML format using source code syntax highlighting with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. That can be also achieved for any archive member file by clicking within an archive contents listing on the first character of the file(path) respectively on the according byte size field.
    1 #! /bin/sh
    2 #
    3 # install - install a program, script, or datafile
    4 # This comes from X11R5 (mit/util/scripts/install.sh).
    5 #
    6 # Copyright 1991 by the Massachusetts Institute of Technology
    7 #
    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.
   17 #
   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.
   21 #
   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.
   25 
   26 
   27 # set DOITPROG to echo to test this script
   28 
   29 # Don't use :- since 4.3BSD and earlier shells don't like it.
   30 doit="${DOITPROG-}"
   31 
   32 
   33 # put in absolute paths if you don't have them in your path; or use env. vars.
   34 
   35 mvprog="${MVPROG-mv}"
   36 cpprog="${CPPROG-cp}"
   37 chmodprog="${CHMODPROG-chmod}"
   38 chownprog="${CHOWNPROG-chown}"
   39 chgrpprog="${CHGRPPROG-chgrp}"
   40 stripprog="${STRIPPROG-strip}"
   41 rmprog="${RMPROG-rm}"
   42 mkdirprog="${MKDIRPROG-mkdir}"
   43 
   44 transformbasename=""
   45 transform_arg=""
   46 instcmd="$mvprog"
   47 chmodcmd="$chmodprog 0755"
   48 chowncmd=""
   49 chgrpcmd=""
   50 stripcmd=""
   51 rmcmd="$rmprog -f"
   52 mvcmd="$mvprog"
   53 src=""
   54 dst=""
   55 dir_arg=""
   56 
   57 while [ x"$1" != x ]; do
   58     case $1 in
   59 	-c) instcmd="$cpprog"
   60 	    shift
   61 	    continue;;
   62 
   63 	-d) dir_arg=true
   64 	    shift
   65 	    continue;;
   66 
   67 	-m) chmodcmd="$chmodprog $2"
   68 	    shift
   69 	    shift
   70 	    continue;;
   71 
   72 	-o) chowncmd="$chownprog $2"
   73 	    shift
   74 	    shift
   75 	    continue;;
   76 
   77 	-g) chgrpcmd="$chgrpprog $2"
   78 	    shift
   79 	    shift
   80 	    continue;;
   81 
   82 	-s) stripcmd="$stripprog"
   83 	    shift
   84 	    continue;;
   85 
   86 	-t=*) transformarg=`echo $1 | sed 's/-t=//'`
   87 	    shift
   88 	    continue;;
   89 
   90 	-b=*) transformbasename=`echo $1 | sed 's/-b=//'`
   91 	    shift
   92 	    continue;;
   93 
   94 	*)  if [ x"$src" = x ]
   95 	    then
   96 		src=$1
   97 	    else
   98 		# this colon is to work around a 386BSD /bin/sh bug
   99 		:
  100 		dst=$1
  101 	    fi
  102 	    shift
  103 	    continue;;
  104     esac
  105 done
  106 
  107 if [ x"$src" = x ]
  108 then
  109 	echo "install:	no input file specified"
  110 	exit 1
  111 else
  112 	true
  113 fi
  114 
  115 if [ x"$dir_arg" != x ]; then
  116 	dst=$src
  117 	src=""
  118 	
  119 	if [ -d $dst ]; then
  120 		instcmd=:
  121 	else
  122 		instcmd=mkdir
  123 	fi
  124 else
  125 
  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 '*'.
  129 
  130 	if [ -f $src -o -d $src ]
  131 	then
  132 		true
  133 	else
  134 		echo "install:  $src does not exist"
  135 		exit 1
  136 	fi
  137 	
  138 	if [ x"$dst" = x ]
  139 	then
  140 		echo "install:	no destination specified"
  141 		exit 1
  142 	else
  143 		true
  144 	fi
  145 
  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
  148 
  149 	if [ -d $dst ]
  150 	then
  151 		dst="$dst"/`basename $src`
  152 	else
  153 		true
  154 	fi
  155 fi
  156 
  157 ## this sed command emulates the dirname command
  158 dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
  159 
  160 # Make sure that the destination directory exists.
  161 #  this part is taken from Noah Friedman's mkinstalldirs script
  162 
  163 # Skip lots of stat calls in the usual case.
  164 if [ ! -d "$dstdir" ]; then
  165 defaultIFS='	
  166 '
  167 IFS="${IFS-${defaultIFS}}"
  168 
  169 oIFS="${IFS}"
  170 # Some sh's can't handle IFS=/ for some reason.
  171 IFS='%'
  172 set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
  173 IFS="${oIFS}"
  174 
  175 pathcomp=''
  176 
  177 while [ $# -ne 0 ] ; do
  178 	pathcomp="${pathcomp}${1}"
  179 	shift
  180 
  181 	if [ ! -d "${pathcomp}" ] ;
  182         then
  183 		$mkdirprog "${pathcomp}"
  184 	else
  185 		true
  186 	fi
  187 
  188 	pathcomp="${pathcomp}/"
  189 done
  190 fi
  191 
  192 if [ x"$dir_arg" != x ]
  193 then
  194 	$doit $instcmd $dst &&
  195 
  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
  200 else
  201 
  202 # If we're going to rename the final executable, determine the name now.
  203 
  204 	if [ x"$transformarg" = x ] 
  205 	then
  206 		dstfile=`basename $dst`
  207 	else
  208 		dstfile=`basename $dst $transformbasename | 
  209 			sed $transformarg`$transformbasename
  210 	fi
  211 
  212 # don't allow the sed command to completely eliminate the filename
  213 
  214 	if [ x"$dstfile" = x ] 
  215 	then
  216 		dstfile=`basename $dst`
  217 	else
  218 		true
  219 	fi
  220 
  221 # Make a temp file name in the proper directory.
  222 
  223 	dsttmp=$dstdir/#inst.$$#
  224 
  225 # Move or copy the file name to the temp name
  226 
  227 	$doit $instcmd $src $dsttmp &&
  228 
  229 	trap "rm -f ${dsttmp}" 0 &&
  230 
  231 # and set any options; do chmod last to preserve setuid bits
  232 
  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.
  236 
  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 &&
  241 
  242 # Now rename the file to the real destination.
  243 
  244 	$doit $rmcmd -f $dstdir/$dstfile &&
  245 	$doit $mvcmd $dsttmp $dstdir/$dstfile 
  246 
  247 fi &&
  248 
  249 
  250 exit 0