"Fossies" - the Fresh Open Source Software Archive

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