"Fossies" - the Fresh Open Source Software Archive

Member "termcap-1.3.1/install-sh" (8 Feb 1995, 4772 Bytes) of package /linux/misc/old/termcap-1.3.1.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Bash source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 #! /bin/sh
    2 #
    3 # install - install a program, script, or datafile
    4 # This comes from X11R5.
    5 #
    6 # Calling this script install-sh is preferred over install.sh, to prevent
    7 # `make' implicit rules from creating a file called install from it
    8 # when there is no Makefile.
    9 #
   10 # This script is compatible with the BSD install script, but was written
   11 # from scratch.
   12 #
   13 
   14 
   15 # set DOITPROG to echo to test this script
   16 
   17 # Don't use :- since 4.3BSD and earlier shells don't like it.
   18 doit="${DOITPROG-}"
   19 
   20 
   21 # put in absolute paths if you don't have them in your path; or use env. vars.
   22 
   23 mvprog="${MVPROG-mv}"
   24 cpprog="${CPPROG-cp}"
   25 chmodprog="${CHMODPROG-chmod}"
   26 chownprog="${CHOWNPROG-chown}"
   27 chgrpprog="${CHGRPPROG-chgrp}"
   28 stripprog="${STRIPPROG-strip}"
   29 rmprog="${RMPROG-rm}"
   30 mkdirprog="${MKDIRPROG-mkdir}"
   31 
   32 tranformbasename=""
   33 transform_arg=""
   34 instcmd="$mvprog"
   35 chmodcmd="$chmodprog 0755"
   36 chowncmd=""
   37 chgrpcmd=""
   38 stripcmd=""
   39 rmcmd="$rmprog -f"
   40 mvcmd="$mvprog"
   41 src=""
   42 dst=""
   43 dir_arg=""
   44 
   45 while [ x"$1" != x ]; do
   46     case $1 in
   47     -c) instcmd="$cpprog"
   48         shift
   49         continue;;
   50 
   51     -d) dir_arg=true
   52         shift
   53         continue;;
   54 
   55     -m) chmodcmd="$chmodprog $2"
   56         shift
   57         shift
   58         continue;;
   59 
   60     -o) chowncmd="$chownprog $2"
   61         shift
   62         shift
   63         continue;;
   64 
   65     -g) chgrpcmd="$chgrpprog $2"
   66         shift
   67         shift
   68         continue;;
   69 
   70     -s) stripcmd="$stripprog"
   71         shift
   72         continue;;
   73 
   74     -t=*) transformarg=`echo $1 | sed 's/-t=//'`
   75         shift
   76         continue;;
   77 
   78     -b=*) transformbasename=`echo $1 | sed 's/-b=//'`
   79         shift
   80         continue;;
   81 
   82     *)  if [ x"$src" = x ]
   83         then
   84         src=$1
   85         else
   86         # this colon is to work around a 386BSD /bin/sh bug
   87         :
   88         dst=$1
   89         fi
   90         shift
   91         continue;;
   92     esac
   93 done
   94 
   95 if [ x"$src" = x ]
   96 then
   97     echo "install:  no input file specified"
   98     exit 1
   99 else
  100     true
  101 fi
  102 
  103 if [ x"$dir_arg" != x ]; then
  104     dst=$src
  105     src=""
  106     
  107     if [ -d $dst ]; then
  108         instcmd=:
  109     else
  110         instcmd=mkdir
  111     fi
  112 else
  113 
  114 # Waiting for this to be detected by the "$instcmd $src $dsttmp" command
  115 # might cause directories to be created, which would be especially bad 
  116 # if $src (and thus $dsttmp) contains '*'.
  117 
  118     if [ -f $src -o -d $src ]
  119     then
  120         true
  121     else
  122         echo "install:  $src does not exist"
  123         exit 1
  124     fi
  125     
  126     if [ x"$dst" = x ]
  127     then
  128         echo "install:  no destination specified"
  129         exit 1
  130     else
  131         true
  132     fi
  133 
  134 # If destination is a directory, append the input filename; if your system
  135 # does not like double slashes in filenames, you may need to add some logic
  136 
  137     if [ -d $dst ]
  138     then
  139         dst="$dst"/`basename $src`
  140     else
  141         true
  142     fi
  143 fi
  144 
  145 ## this sed command emulates the dirname command
  146 dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'`
  147 
  148 # Make sure that the destination directory exists.
  149 #  this part is taken from Noah Friedman's mkinstalldirs script
  150 
  151 # Skip lots of stat calls in the usual case.
  152 if [ ! -d "$dstdir" ]; then
  153 defaultIFS='    
  154 '
  155 IFS="${IFS-${defaultIFS}}"
  156 
  157 oIFS="${IFS}"
  158 # Some sh's can't handle IFS=/ for some reason.
  159 IFS='%'
  160 set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'`
  161 IFS="${oIFS}"
  162 
  163 pathcomp=''
  164 
  165 while [ $# -ne 0 ] ; do
  166     pathcomp="${pathcomp}${1}"
  167     shift
  168 
  169     if [ ! -d "${pathcomp}" ] ;
  170         then
  171         $mkdirprog "${pathcomp}"
  172     else
  173         true
  174     fi
  175 
  176     pathcomp="${pathcomp}/"
  177 done
  178 fi
  179 
  180 if [ x"$dir_arg" != x ]
  181 then
  182     $doit $instcmd $dst &&
  183 
  184     if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi &&
  185     if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi &&
  186     if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi &&
  187     if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi
  188 else
  189 
  190 # If we're going to rename the final executable, determine the name now.
  191 
  192     if [ x"$transformarg" = x ] 
  193     then
  194         dstfile=`basename $dst`
  195     else
  196         dstfile=`basename $dst $transformbasename | 
  197             sed $transformarg`$transformbasename
  198     fi
  199 
  200 # don't allow the sed command to completely eliminate the filename
  201 
  202     if [ x"$dstfile" = x ] 
  203     then
  204         dstfile=`basename $dst`
  205     else
  206         true
  207     fi
  208 
  209 # Make a temp file name in the proper directory.
  210 
  211     dsttmp=$dstdir/#inst.$$#
  212 
  213 # Move or copy the file name to the temp name
  214 
  215     $doit $instcmd $src $dsttmp &&
  216 
  217     trap "rm -f ${dsttmp}" 0 &&
  218 
  219 # and set any options; do chmod last to preserve setuid bits
  220 
  221 # If any of these fail, we abort the whole thing.  If we want to
  222 # ignore errors from any of these, just make sure not to ignore
  223 # errors from the above "$doit $instcmd $src $dsttmp" command.
  224 
  225     if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi &&
  226     if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi &&
  227     if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi &&
  228     if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi &&
  229 
  230 # Now rename the file to the real destination.
  231 
  232     $doit $rmcmd -f $dstdir/$dstfile &&
  233     $doit $mvcmd $dsttmp $dstdir/$dstfile 
  234 
  235 fi &&
  236 
  237 
  238 exit 0