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 ||
 



Reply via email to