Blame build/install-sh

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