Author: vangyzen
Date: Thu Sep  8 15:53:49 2016
New Revision: 305620
URL: https://svnweb.freebsd.org/changeset/base/305620

Log:
  etcupdate: preserve the metadata of the destination file
  
  When using diff3 to perform a three-way merge, etcupdate lost the destination
  file's metadata. The metadata from the temporary file were used instead.
  This was unpleasant for rc.d scripts, which require execute permission.
  Use "cat >" to overwrite the destination file's contents while preserving its
  metadata.
  
  Reviewed by:  bapt
  Sponsored by: Dell Technologies
  Differential Revision:        https://reviews.freebsd.org/D7817

Modified:
  head/usr.sbin/etcupdate/etcupdate.sh

Modified: head/usr.sbin/etcupdate/etcupdate.sh
==============================================================================
--- head/usr.sbin/etcupdate/etcupdate.sh        Thu Sep  8 15:27:42 2016        
(r305619)
+++ head/usr.sbin/etcupdate/etcupdate.sh        Thu Sep  8 15:53:49 2016        
(r305620)
@@ -824,7 +824,9 @@ merge_file()
                        if [ -z "$dryrun" ]; then
                                temp=$(mktemp -t etcupdate)
                                diff3 -E -m ${DESTDIR}$1 ${OLDTREE}$1 
${NEWTREE}$1 > ${temp}
-                               mv -f ${temp} ${DESTDIR}$1
+                               # Use "cat >" to preserve metadata.
+                               cat ${temp} > ${DESTDIR}$1
+                               rm -f ${temp}
                        fi
                        post_install_file $1
                        echo "  M $1"
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to