]> Savannah Git Hosting - gnulib.git/commitdiff
autoupdate
authorKarl Berry <karl@freefriends.org>
Fri, 13 Nov 2020 18:26:32 +0000 (10:26 -0800)
committerKarl Berry <karl@freefriends.org>
Fri, 13 Nov 2020 18:26:32 +0000 (10:26 -0800)
build-aux/install-sh

index b6d2a909d1b6e755df6a4b550d0f881d14c2ec6b..bf704a45273375a93093fb1d2fcd7d389d24e356 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # install - install a program, script, or datafile
 
-scriptversion=2020-11-11.03; # UTC
+scriptversion=2020-11-13.01; # UTC
 
 # This originates from X11R5 (mit/util/scripts/install.sh), which was
 # later released in X11R6 (xc/config/util/install.sh) with the
@@ -73,6 +73,7 @@ mode=0755
 # This is like GNU 'install' as of coreutils 8.32 (2020).
 mkdir_umask=22
 
+backupsuffix=
 chgrpcmd=
 chmodcmd=$chmodprog
 chowncmd=
@@ -110,6 +111,7 @@ Options:
   -o USER       $chownprog installed files to USER.
   -p            pass -p to $cpprog.
   -s            $stripprog installed files.
+  -S SUFFIX     attempt to back up existing files, with suffix SUFFIX.
   -t DIRECTORY  install into DIRECTORY.
   -T            report an error if DSTFILE is a directory.
 
@@ -120,6 +122,8 @@ Environment variables override the default commands:
 By default, rm is invoked with -f; when overridden with RMPROG,
 it's up to you to specify -f if you want it.
 
+If -S is not specified, no backups are attempted.
+
 Email bug reports to bug-automake@gnu.org.
 Automake home page: https://www.gnu.org/software/automake/
 "
@@ -152,6 +156,9 @@ while test $# -ne 0; do
 
     -s) stripcmd=$stripprog;;
 
+    -S) backupsuffix="$2"
+        shift;;
+
     -t)
         is_target_a_directory=always
         dst_arg=$2
@@ -486,6 +493,13 @@ do
     then
       rm -f "$dsttmp"
     else
+      # If $backupsuffix is set, and the file being installed
+      # already exists, attempt a backup.  Don't worry if it fails,
+      # e.g., if mv doesn't support -f.
+      if test -n "$backupsuffix" && test -f "$dst"; then
+        $doit $mvcmd -f "$dst" "$dst$backupsuffix" 2>/dev/null
+      fi
+      
       # Rename the file to the real destination.
       $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null ||