Blame install-sh

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