Blame install-sh

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