automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


From: Julien ÉLIE
Subject: [PATCH] install-sh: Add a new -B option to backup files being overwritten
Date: Sat, 17 Mar 2018 15:16:40 +0100
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:52.0) Gecko/20100101 Thunderbird/52.6.0

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

[Prev in Thread] Current Thread [Next in Thread]