Blame SOURCES/libsodium-1.0.18/install-sh

rdobuilder 775784
#!/bin/sh
rdobuilder 775784
# install - install a program, script, or datafile
rdobuilder 775784
rdobuilder 775784
scriptversion=2011-11-20.07; # UTC
rdobuilder 775784
rdobuilder 775784
# This originates from X11R5 (mit/util/scripts/install.sh), which was
rdobuilder 775784
# later released in X11R6 (xc/config/util/install.sh) with the
rdobuilder 775784
# following copyright and license.
rdobuilder 775784
#
rdobuilder 775784
# Copyright (C) 1994 X Consortium
rdobuilder 775784
#
rdobuilder 775784
# Permission is hereby granted, free of charge, to any person obtaining a copy
rdobuilder 775784
# of this software and associated documentation files (the "Software"), to
rdobuilder 775784
# deal in the Software without restriction, including without limitation the
rdobuilder 775784
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
rdobuilder 775784
# sell copies of the Software, and to permit persons to whom the Software is
rdobuilder 775784
# furnished to do so, subject to the following conditions:
rdobuilder 775784
#
rdobuilder 775784
# The above copyright notice and this permission notice shall be included in
rdobuilder 775784
# all copies or substantial portions of the Software.
rdobuilder 775784
#
rdobuilder 775784
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
rdobuilder 775784
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
rdobuilder 775784
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE
rdobuilder 775784
# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
rdobuilder 775784
# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC-
rdobuilder 775784
# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
rdobuilder 775784
#
rdobuilder 775784
# Except as contained in this notice, the name of the X Consortium shall not
rdobuilder 775784
# be used in advertising or otherwise to promote the sale, use or other deal-
rdobuilder 775784
# ings in this Software without prior written authorization from the X Consor-
rdobuilder 775784
# tium.
rdobuilder 775784
#
rdobuilder 775784
#
rdobuilder 775784
# FSF changes to this file are in the public domain.
rdobuilder 775784
#
rdobuilder 775784
# Calling this script install-sh is preferred over install.sh, to prevent
rdobuilder 775784
# 'make' implicit rules from creating a file called install from it
rdobuilder 775784
# when there is no Makefile.
rdobuilder 775784
#
rdobuilder 775784
# This script is compatible with the BSD install script, but was written
rdobuilder 775784
# from scratch.
rdobuilder 775784
rdobuilder 775784
nl='
rdobuilder 775784
'
rdobuilder 775784
IFS=" ""	$nl"
rdobuilder 775784
rdobuilder 775784
# set DOITPROG to echo to test this script
rdobuilder 775784
rdobuilder 775784
# Don't use :- since 4.3BSD and earlier shells don't like it.
rdobuilder 775784
doit=${DOITPROG-}
rdobuilder 775784
if test -z "$doit"; then
rdobuilder 775784
  doit_exec=exec
rdobuilder 775784
else
rdobuilder 775784
  doit_exec=$doit
rdobuilder 775784
fi
rdobuilder 775784
rdobuilder 775784
# Put in absolute file names if you don't have them in your path;
rdobuilder 775784
# or use environment vars.
rdobuilder 775784
rdobuilder 775784
chgrpprog=${CHGRPPROG-chgrp}
rdobuilder 775784
chmodprog=${CHMODPROG-chmod}
rdobuilder 775784
chownprog=${CHOWNPROG-chown}
rdobuilder 775784
cmpprog=${CMPPROG-cmp}
rdobuilder 775784
cpprog=${CPPROG-cp}
rdobuilder 775784
mkdirprog=${MKDIRPROG-mkdir}
rdobuilder 775784
mvprog=${MVPROG-mv}
rdobuilder 775784
rmprog=${RMPROG-rm}
rdobuilder 775784
stripprog=${STRIPPROG-strip}
rdobuilder 775784
rdobuilder 775784
posix_glob='?'
rdobuilder 775784
initialize_posix_glob='
rdobuilder 775784
  test "$posix_glob" != "?" || {
rdobuilder 775784
    if (set -f) 2>/dev/null; then
rdobuilder 775784
      posix_glob=
rdobuilder 775784
    else
rdobuilder 775784
      posix_glob=:
rdobuilder 775784
    fi
rdobuilder 775784
  }
rdobuilder 775784
'
rdobuilder 775784
rdobuilder 775784
posix_mkdir=
rdobuilder 775784
rdobuilder 775784
# Desired mode of installed file.
rdobuilder 775784
mode=0755
rdobuilder 775784
rdobuilder 775784
chgrpcmd=
rdobuilder 775784
chmodcmd=$chmodprog
rdobuilder 775784
chowncmd=
rdobuilder 775784
mvcmd=$mvprog
rdobuilder 775784
rmcmd="$rmprog -f"
rdobuilder 775784
stripcmd=
rdobuilder 775784
rdobuilder 775784
src=
rdobuilder 775784
dst=
rdobuilder 775784
dir_arg=
rdobuilder 775784
dst_arg=
rdobuilder 775784
rdobuilder 775784
copy_on_change=false
rdobuilder 775784
no_target_directory=
rdobuilder 775784
rdobuilder 775784
usage="\
rdobuilder 775784
Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE
rdobuilder 775784
   or: $0 [OPTION]... SRCFILES... DIRECTORY
rdobuilder 775784
   or: $0 [OPTION]... -t DIRECTORY SRCFILES...
rdobuilder 775784
   or: $0 [OPTION]... -d DIRECTORIES...
rdobuilder 775784
rdobuilder 775784
In the 1st form, copy SRCFILE to DSTFILE.
rdobuilder 775784
In the 2nd and 3rd, copy all SRCFILES to DIRECTORY.
rdobuilder 775784
In the 4th, create DIRECTORIES.
rdobuilder 775784
rdobuilder 775784
Options:
rdobuilder 775784
     --help     display this help and exit.
rdobuilder 775784
     --version  display version info and exit.
rdobuilder 775784
rdobuilder 775784
  -c            (ignored)
rdobuilder 775784
  -C            install only if different (preserve the last data modification time)
rdobuilder 775784
  -d            create directories instead of installing files.
rdobuilder 775784
  -g GROUP      $chgrpprog installed files to GROUP.
rdobuilder 775784
  -m MODE       $chmodprog installed files to MODE.
rdobuilder 775784
  -o USER       $chownprog installed files to USER.
rdobuilder 775784
  -s            $stripprog installed files.
rdobuilder 775784
  -t DIRECTORY  install into DIRECTORY.
rdobuilder 775784
  -T            report an error if DSTFILE is a directory.
rdobuilder 775784
rdobuilder 775784
Environment variables override the default commands:
rdobuilder 775784
  CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG
rdobuilder 775784
  RMPROG STRIPPROG
rdobuilder 775784
"
rdobuilder 775784
rdobuilder 775784
while test $# -ne 0; do
rdobuilder 775784
  case $1 in
rdobuilder 775784
    -c) ;;
rdobuilder 775784
rdobuilder 775784
    -C) copy_on_change=true;;
rdobuilder 775784
rdobuilder 775784
    -d) dir_arg=true;;
rdobuilder 775784
rdobuilder 775784
    -g) chgrpcmd="$chgrpprog $2"
rdobuilder 775784
	shift;;
rdobuilder 775784
rdobuilder 775784
    --help) echo "$usage"; exit $?;;
rdobuilder 775784
rdobuilder 775784
    -m) mode=$2
rdobuilder 775784
	case $mode in
rdobuilder 775784
	  *' '* | *'	'* | *'
rdobuilder 775784
'*	  | *'*'* | *'?'* | *'['*)
rdobuilder 775784
	    echo "$0: invalid mode: $mode" >&2
rdobuilder 775784
	    exit 1;;
rdobuilder 775784
	esac
rdobuilder 775784
	shift;;
rdobuilder 775784
rdobuilder 775784
    -o) chowncmd="$chownprog $2"
rdobuilder 775784
	shift;;
rdobuilder 775784
rdobuilder 775784
    -s) stripcmd=$stripprog;;
rdobuilder 775784
rdobuilder 775784
    -t) dst_arg=$2
rdobuilder 775784
	# Protect names problematic for 'test' and other utilities.
rdobuilder 775784
	case $dst_arg in
rdobuilder 775784
	  -* | [=\(\)!]) dst_arg=./$dst_arg;;
rdobuilder 775784
	esac
rdobuilder 775784
	shift;;
rdobuilder 775784
rdobuilder 775784
    -T) no_target_directory=true;;
rdobuilder 775784
rdobuilder 775784
    --version) echo "$0 $scriptversion"; exit $?;;
rdobuilder 775784
rdobuilder 775784
    --)	shift
rdobuilder 775784
	break;;
rdobuilder 775784
rdobuilder 775784
    -*)	echo "$0: invalid option: $1" >&2
rdobuilder 775784
	exit 1;;
rdobuilder 775784
rdobuilder 775784
    *)  break;;
rdobuilder 775784
  esac
rdobuilder 775784
  shift
rdobuilder 775784
done
rdobuilder 775784
rdobuilder 775784
if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then
rdobuilder 775784
  # When -d is used, all remaining arguments are directories to create.
rdobuilder 775784
  # When -t is used, the destination is already specified.
rdobuilder 775784
  # Otherwise, the last argument is the destination.  Remove it from $@.
rdobuilder 775784
  for arg
rdobuilder 775784
  do
rdobuilder 775784
    if test -n "$dst_arg"; then
rdobuilder 775784
      # $@ is not empty: it contains at least $arg.
rdobuilder 775784
      set fnord "$@" "$dst_arg"
rdobuilder 775784
      shift # fnord
rdobuilder 775784
    fi
rdobuilder 775784
    shift # arg
rdobuilder 775784
    dst_arg=$arg
rdobuilder 775784
    # Protect names problematic for 'test' and other utilities.
rdobuilder 775784
    case $dst_arg in
rdobuilder 775784
      -* | [=\(\)!]) dst_arg=./$dst_arg;;
rdobuilder 775784
    esac
rdobuilder 775784
  done
rdobuilder 775784
fi
rdobuilder 775784
rdobuilder 775784
if test $# -eq 0; then
rdobuilder 775784
  if test -z "$dir_arg"; then
rdobuilder 775784
    echo "$0: no input file specified." >&2
rdobuilder 775784
    exit 1
rdobuilder 775784
  fi
rdobuilder 775784
  # It's OK to call 'install-sh -d' without argument.
rdobuilder 775784
  # This can happen when creating conditional directories.
rdobuilder 775784
  exit 0
rdobuilder 775784
fi
rdobuilder 775784
rdobuilder 775784
if test -z "$dir_arg"; then
rdobuilder 775784
  do_exit='(exit $ret); exit $ret'
rdobuilder 775784
  trap "ret=129; $do_exit" 1
rdobuilder 775784
  trap "ret=130; $do_exit" 2
rdobuilder 775784
  trap "ret=141; $do_exit" 13
rdobuilder 775784
  trap "ret=143; $do_exit" 15
rdobuilder 775784
rdobuilder 775784
  # Set umask so as not to create temps with too-generous modes.
rdobuilder 775784
  # However, 'strip' requires both read and write access to temps.
rdobuilder 775784
  case $mode in
rdobuilder 775784
    # Optimize common cases.
rdobuilder 775784
    *644) cp_umask=133;;
rdobuilder 775784
    *755) cp_umask=22;;
rdobuilder 775784
rdobuilder 775784
    *[0-7])
rdobuilder 775784
      if test -z "$stripcmd"; then
rdobuilder 775784
	u_plus_rw=
rdobuilder 775784
      else
rdobuilder 775784
	u_plus_rw='% 200'
rdobuilder 775784
      fi
rdobuilder 775784
      cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
rdobuilder 775784
    *)
rdobuilder 775784
      if test -z "$stripcmd"; then
rdobuilder 775784
	u_plus_rw=
rdobuilder 775784
      else
rdobuilder 775784
	u_plus_rw=,u+rw
rdobuilder 775784
      fi
rdobuilder 775784
      cp_umask=$mode$u_plus_rw;;
rdobuilder 775784
  esac
rdobuilder 775784
fi
rdobuilder 775784
rdobuilder 775784
for src
rdobuilder 775784
do
rdobuilder 775784
  # Protect names problematic for 'test' and other utilities.
rdobuilder 775784
  case $src in
rdobuilder 775784
    -* | [=\(\)!]) src=./$src;;
rdobuilder 775784
  esac
rdobuilder 775784
rdobuilder 775784
  if test -n "$dir_arg"; then
rdobuilder 775784
    dst=$src
rdobuilder 775784
    dstdir=$dst
rdobuilder 775784
    test -d "$dstdir"
rdobuilder 775784
    dstdir_status=$?
rdobuilder 775784
  else
rdobuilder 775784
rdobuilder 775784
    # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
rdobuilder 775784
    # might cause directories to be created, which would be especially bad
rdobuilder 775784
    # if $src (and thus $dsttmp) contains '*'.
rdobuilder 775784
    if test ! -f "$src" && test ! -d "$src"; then
rdobuilder 775784
      echo "$0: $src does not exist." >&2
rdobuilder 775784
      exit 1
rdobuilder 775784
    fi
rdobuilder 775784
rdobuilder 775784
    if test -z "$dst_arg"; then
rdobuilder 775784
      echo "$0: no destination specified." >&2
rdobuilder 775784
      exit 1
rdobuilder 775784
    fi
rdobuilder 775784
    dst=$dst_arg
rdobuilder 775784
rdobuilder 775784
    # If destination is a directory, append the input filename; won't work
rdobuilder 775784
    # if double slashes aren't ignored.
rdobuilder 775784
    if test -d "$dst"; then
rdobuilder 775784
      if test -n "$no_target_directory"; then
rdobuilder 775784
	echo "$0: $dst_arg: Is a directory" >&2
rdobuilder 775784
	exit 1
rdobuilder 775784
      fi
rdobuilder 775784
      dstdir=$dst
rdobuilder 775784
      dst=$dstdir/`basename "$src"`
rdobuilder 775784
      dstdir_status=0
rdobuilder 775784
    else
rdobuilder 775784
      # Prefer dirname, but fall back on a substitute if dirname fails.
rdobuilder 775784
      dstdir=`
rdobuilder 775784
	(dirname "$dst") 2>/dev/null ||
rdobuilder 775784
	expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
rdobuilder 775784
	     X"$dst" : 'X\(//\)[^/]' \| \
rdobuilder 775784
	     X"$dst" : 'X\(//\)$' \| \
rdobuilder 775784
	     X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
rdobuilder 775784
	echo X"$dst" |
rdobuilder 775784
	    sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
rdobuilder 775784
		   s//\1/
rdobuilder 775784
		   q
rdobuilder 775784
		 }
rdobuilder 775784
		 /^X\(\/\/\)[^/].*/{
rdobuilder 775784
		   s//\1/
rdobuilder 775784
		   q
rdobuilder 775784
		 }
rdobuilder 775784
		 /^X\(\/\/\)$/{
rdobuilder 775784
		   s//\1/
rdobuilder 775784
		   q
rdobuilder 775784
		 }
rdobuilder 775784
		 /^X\(\/\).*/{
rdobuilder 775784
		   s//\1/
rdobuilder 775784
		   q
rdobuilder 775784
		 }
rdobuilder 775784
		 s/.*/./; q'
rdobuilder 775784
      `
rdobuilder 775784
rdobuilder 775784
      test -d "$dstdir"
rdobuilder 775784
      dstdir_status=$?
rdobuilder 775784
    fi
rdobuilder 775784
  fi
rdobuilder 775784
rdobuilder 775784
  obsolete_mkdir_used=false
rdobuilder 775784
rdobuilder 775784
  if test $dstdir_status != 0; then
rdobuilder 775784
    case $posix_mkdir in
rdobuilder 775784
      '')
rdobuilder 775784
	# Create intermediate dirs using mode 755 as modified by the umask.
rdobuilder 775784
	# This is like FreeBSD 'install' as of 1997-10-28.
rdobuilder 775784
	umask=`umask`
rdobuilder 775784
	case $stripcmd.$umask in
rdobuilder 775784
	  # Optimize common cases.
rdobuilder 775784
	  *[2367][2367]) mkdir_umask=$umask;;
rdobuilder 775784
	  .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
rdobuilder 775784
rdobuilder 775784
	  *[0-7])
rdobuilder 775784
	    mkdir_umask=`expr $umask + 22 \
rdobuilder 775784
	      - $umask % 100 % 40 + $umask % 20 \
rdobuilder 775784
	      - $umask % 10 % 4 + $umask % 2
rdobuilder 775784
	    `;;
rdobuilder 775784
	  *) mkdir_umask=$umask,go-w;;
rdobuilder 775784
	esac
rdobuilder 775784
rdobuilder 775784
	# With -d, create the new directory with the user-specified mode.
rdobuilder 775784
	# Otherwise, rely on $mkdir_umask.
rdobuilder 775784
	if test -n "$dir_arg"; then
rdobuilder 775784
	  mkdir_mode=-m$mode
rdobuilder 775784
	else
rdobuilder 775784
	  mkdir_mode=
rdobuilder 775784
	fi
rdobuilder 775784
rdobuilder 775784
	posix_mkdir=false
rdobuilder 775784
	case $umask in
rdobuilder 775784
	  *[123567][0-7][0-7])
rdobuilder 775784
	    # POSIX mkdir -p sets u+wx bits regardless of umask, which
rdobuilder 775784
	    # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
rdobuilder 775784
	    ;;
rdobuilder 775784
	  *)
rdobuilder 775784
	    tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
rdobuilder 775784
	    trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
rdobuilder 775784
rdobuilder 775784
	    if (umask $mkdir_umask &&
rdobuilder 775784
		exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
rdobuilder 775784
	    then
rdobuilder 775784
	      if test -z "$dir_arg" || {
rdobuilder 775784
		   # Check for POSIX incompatibilities with -m.
rdobuilder 775784
		   # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
rdobuilder 775784
		   # other-writable bit of parent directory when it shouldn't.
rdobuilder 775784
		   # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
rdobuilder 775784
		   ls_ld_tmpdir=`ls -ld "$tmpdir"`
rdobuilder 775784
		   case $ls_ld_tmpdir in
rdobuilder 775784
		     d????-?r-*) different_mode=700;;
rdobuilder 775784
		     d????-?--*) different_mode=755;;
rdobuilder 775784
		     *) false;;
rdobuilder 775784
		   esac &&
rdobuilder 775784
		   $mkdirprog -m$different_mode -p -- "$tmpdir" && {
rdobuilder 775784
		     ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
rdobuilder 775784
		     test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
rdobuilder 775784
		   }
rdobuilder 775784
		 }
rdobuilder 775784
	      then posix_mkdir=:
rdobuilder 775784
	      fi
rdobuilder 775784
	      rmdir "$tmpdir/d" "$tmpdir"
rdobuilder 775784
	    else
rdobuilder 775784
	      # Remove any dirs left behind by ancient mkdir implementations.
rdobuilder 775784
	      rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
rdobuilder 775784
	    fi
rdobuilder 775784
	    trap '' 0;;
rdobuilder 775784
	esac;;
rdobuilder 775784
    esac
rdobuilder 775784
rdobuilder 775784
    if
rdobuilder 775784
      $posix_mkdir && (
rdobuilder 775784
	umask $mkdir_umask &&
rdobuilder 775784
	$doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
rdobuilder 775784
      )
rdobuilder 775784
    then :
rdobuilder 775784
    else
rdobuilder 775784
rdobuilder 775784
      # The umask is ridiculous, or mkdir does not conform to POSIX,
rdobuilder 775784
      # or it failed possibly due to a race condition.  Create the
rdobuilder 775784
      # directory the slow way, step by step, checking for races as we go.
rdobuilder 775784
rdobuilder 775784
      case $dstdir in
rdobuilder 775784
	/*) prefix='/';;
rdobuilder 775784
	[-=\(\)!]*) prefix='./';;
rdobuilder 775784
	*)  prefix='';;
rdobuilder 775784
      esac
rdobuilder 775784
rdobuilder 775784
      eval "$initialize_posix_glob"
rdobuilder 775784
rdobuilder 775784
      oIFS=$IFS
rdobuilder 775784
      IFS=/
rdobuilder 775784
      $posix_glob set -f
rdobuilder 775784
      set fnord $dstdir
rdobuilder 775784
      shift
rdobuilder 775784
      $posix_glob set +f
rdobuilder 775784
      IFS=$oIFS
rdobuilder 775784
rdobuilder 775784
      prefixes=
rdobuilder 775784
rdobuilder 775784
      for d
rdobuilder 775784
      do
rdobuilder 775784
	test X"$d" = X && continue
rdobuilder 775784
rdobuilder 775784
	prefix=$prefix$d
rdobuilder 775784
	if test -d "$prefix"; then
rdobuilder 775784
	  prefixes=
rdobuilder 775784
	else
rdobuilder 775784
	  if $posix_mkdir; then
rdobuilder 775784
	    (umask=$mkdir_umask &&
rdobuilder 775784
	     $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
rdobuilder 775784
	    # Don't fail if two instances are running concurrently.
rdobuilder 775784
	    test -d "$prefix" || exit 1
rdobuilder 775784
	  else
rdobuilder 775784
	    case $prefix in
rdobuilder 775784
	      *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
rdobuilder 775784
	      *) qprefix=$prefix;;
rdobuilder 775784
	    esac
rdobuilder 775784
	    prefixes="$prefixes '$qprefix'"
rdobuilder 775784
	  fi
rdobuilder 775784
	fi
rdobuilder 775784
	prefix=$prefix/
rdobuilder 775784
      done
rdobuilder 775784
rdobuilder 775784
      if test -n "$prefixes"; then
rdobuilder 775784
	# Don't fail if two instances are running concurrently.
rdobuilder 775784
	(umask $mkdir_umask &&
rdobuilder 775784
	 eval "\$doit_exec \$mkdirprog $prefixes") ||
rdobuilder 775784
	  test -d "$dstdir" || exit 1
rdobuilder 775784
	obsolete_mkdir_used=true
rdobuilder 775784
      fi
rdobuilder 775784
    fi
rdobuilder 775784
  fi
rdobuilder 775784
rdobuilder 775784
  if test -n "$dir_arg"; then
rdobuilder 775784
    { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
rdobuilder 775784
    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
rdobuilder 775784
    { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
rdobuilder 775784
      test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
rdobuilder 775784
  else
rdobuilder 775784
rdobuilder 775784
    # Make a couple of temp file names in the proper directory.
rdobuilder 775784
    dsttmp=$dstdir/_inst.$$_
rdobuilder 775784
    rmtmp=$dstdir/_rm.$$_
rdobuilder 775784
rdobuilder 775784
    # Trap to clean up those temp files at exit.
rdobuilder 775784
    trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
rdobuilder 775784
rdobuilder 775784
    # Copy the file name to the temp name.
rdobuilder 775784
    (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
rdobuilder 775784
rdobuilder 775784
    # and set any options; do chmod last to preserve setuid bits.
rdobuilder 775784
    #
rdobuilder 775784
    # If any of these fail, we abort the whole thing.  If we want to
rdobuilder 775784
    # ignore errors from any of these, just make sure not to ignore
rdobuilder 775784
    # errors from the above "$doit $cpprog $src $dsttmp" command.
rdobuilder 775784
    #
rdobuilder 775784
    { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } &&
rdobuilder 775784
    { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } &&
rdobuilder 775784
    { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } &&
rdobuilder 775784
    { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
rdobuilder 775784
rdobuilder 775784
    # If -C, don't bother to copy if it wouldn't change the file.
rdobuilder 775784
    if $copy_on_change &&
rdobuilder 775784
       old=`LC_ALL=C ls -dlL "$dst"	2>/dev/null` &&
rdobuilder 775784
       new=`LC_ALL=C ls -dlL "$dsttmp"	2>/dev/null` &&
rdobuilder 775784
rdobuilder 775784
       eval "$initialize_posix_glob" &&
rdobuilder 775784
       $posix_glob set -f &&
rdobuilder 775784
       set X $old && old=:$2:$4:$5:$6 &&
rdobuilder 775784
       set X $new && new=:$2:$4:$5:$6 &&
rdobuilder 775784
       $posix_glob set +f &&
rdobuilder 775784
rdobuilder 775784
       test "$old" = "$new" &&
rdobuilder 775784
       $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1
rdobuilder 775784
    then
rdobuilder 775784
      rm -f "$dsttmp"
rdobuilder 775784
    else
rdobuilder 775784
      # Rename the file to the real destination.
rdobuilder 775784
      $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||
rdobuilder 775784
rdobuilder 775784
      # The rename failed, perhaps because mv can't rename something else
rdobuilder 775784
      # to itself, or perhaps because mv is so ancient that it does not
rdobuilder 775784
      # support -f.
rdobuilder 775784
      {
rdobuilder 775784
	# Now remove or move aside any old file at destination location.
rdobuilder 775784
	# We try this two ways since rm can't unlink itself on some
rdobuilder 775784
	# systems and the destination file might be busy for other
rdobuilder 775784
	# reasons.  In this case, the final cleanup might fail but the new
rdobuilder 775784
	# file should still install successfully.
rdobuilder 775784
	{
rdobuilder 775784
	  test ! -f "$dst" ||
rdobuilder 775784
	  $doit $rmcmd -f "$dst" 2>/dev/null ||
rdobuilder 775784
	  { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null &&
rdobuilder 775784
	    { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }
rdobuilder 775784
	  } ||
rdobuilder 775784
	  { echo "$0: cannot unlink or rename $dst" >&2
rdobuilder 775784
	    (exit 1); exit 1
rdobuilder 775784
	  }
rdobuilder 775784
	} &&
rdobuilder 775784
rdobuilder 775784
	# Now rename the file to the real destination.
rdobuilder 775784
	$doit $mvcmd "$dsttmp" "$dst"
rdobuilder 775784
      }
rdobuilder 775784
    fi || exit 1
rdobuilder 775784
rdobuilder 775784
    trap '' 0
rdobuilder 775784
  fi
rdobuilder 775784
done
rdobuilder 775784
rdobuilder 775784
# Local variables:
rdobuilder 775784
# eval: (add-hook 'write-file-hooks 'time-stamp)
rdobuilder 775784
# time-stamp-start: "scriptversion="
rdobuilder 775784
# time-stamp-format: "%:y-%02m-%02d.%02H"
rdobuilder 775784
# time-stamp-time-zone: "UTC"
rdobuilder 775784
# time-stamp-end: "; # UTC"
rdobuilder 775784
# End: