[PATCH] install-sh: Add a new -B option to backup files being overwritten

Julien ÉLIE <[email protected]>
Newsgroups gmane.comp.sysutils.automake.patches
Organization TrigoFACILE -- http://www.trigofacile.com/
Message-ID <[email protected]>
Hi,

Here is a suggestion of patch we've been using for almost two decades with INN (a news server).
  https://inn.eyrie.org/trac/changeset/2777

-- 
Julien ÉLIE



Add a new "-B" option to request saving of the original file when install-sh
is overwriting an existing file.
"-B" takes an argument:  the suffix to use.
Example of invokation:  "install-sh -B .OLD".

* lib/install-sh: Add a new -B option to backup files being overwritten

--- install-sh.orig	2018-03-17 14:18:08.701045461 +0100
+++ install-sh.backupsuffix	2018-03-17 14:25:52.267384165 +0100
@@ -69,6 +69,7 @@
 # Desired mode of installed file.
 mode=0755
 
+backupsuffix=
 chgrpcmd=
 chmodcmd=$chmodprog
 chowncmd=
@@ -98,6 +99,7 @@
      --help     display this help and exit.
      --version  display version info and exit.
 
+  -B SUFFIX     backup a file with the suffix SUFFIX.
   -c            (ignored)
   -C            install only if different (preserve the last data modification time)
   -d            create directories instead of installing files.
@@ -115,6 +117,9 @@
 
 while test $# -ne 0; do
   case $1 in
+    -B) backupsuffix="$2"
+        shift;;
+
     -c) ;;
 
     -C) copy_on_change=true;;
@@ -477,6 +482,10 @@
     then
       rm -f "$dsttmp"
     else
+      # If $backupsuffix is set, rename the existing file if it exists.
+      if [ x"$backupsuffix" != x ] && [ -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 ||
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.