Blame install-sh

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