Author: bdrewery
Date: Fri Dec  4 03:17:07 2015
New Revision: 291732
URL: https://svnweb.freebsd.org/changeset/base/291732

Log:
  DIRDEPS_BUILD: Install new Makefile.depend files atomically.
  
  Sponsored by: EMC / Isilon Storage Division

Modified:
  head/share/mk/install-new.mk

Modified: head/share/mk/install-new.mk
==============================================================================
--- head/share/mk/install-new.mk        Fri Dec  4 03:17:04 2015        
(r291731)
+++ head/share/mk/install-new.mk        Fri Dec  4 03:17:07 2015        
(r291732)
@@ -32,9 +32,23 @@ CmpCp= CmpCp() { \
                cp $$src $$target; \
        fi; }
 
+# Replace the file if they are different and make a backup if desired
+CmpReplace= CmpReplace() { \
+       src=$$1 target=$$2 _bak=$$3; \
+       if ! test -s $$target || ! cmp -s $$target $$src; then \
+               trap "" 1 2 3 15; \
+               if test -s $$target; then \
+                       if test "x$$_bak" != x; then \
+                               rm -f $$target$$_bak; \
+                               cp -f $$target $$target$$_bak; \
+                       fi; \
+               fi; \
+               mv -f $$src $$target; \
+       fi; }
+
 # If the .new file is different, we want it.
 # Note: this function will work as is for *.new$RANDOM"
-InstallNew= ${CmpCp}; InstallNew() { \
+InstallNew= ${CmpReplace}; InstallNew() { \
        _t=-e; _bak=; \
        while :; do \
                case "$$1" in \
@@ -46,7 +60,7 @@ InstallNew= ${CmpCp}; InstallNew() { \
        for new in "$$@"; do \
                if test $$_t $$new; then \
                        target=`expr $$new : '\(.*\).new'`; \
-                       CmpCp $$new $$target $$_bak; \
+                       CmpReplace $$new $$target $$_bak; \
                fi; \
                rm -f $$new; \
        done; :; }
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to