1# $Id: install-new.mk,v 1.4 2020/08/19 17:51:53 sjg Exp $ 2# 3# @(#) Copyright (c) 2009, Simon J. Gerraty 4# 5# This file is provided in the hope that it will 6# be of use. There is absolutely NO WARRANTY. 7# Permission to copy, redistribute or otherwise 8# use this file is hereby granted provided that 9# the above copyright notice and this notice are 10# left intact. 11# 12# Please send copies of changes and bug-fixes to: 13# sjg@crufty.net 14# 15 16.if !defined(InstallNew) 17 18# copy if src and target are different making a backup if desired 19CmpCp= CmpCp() { \ 20 src=$$1 target=$$2 _bak=$$3; \ 21 if ! test -s $$target || ! cmp -s $$target $$src; then \ 22 trap "" 1 2 3 15; \ 23 if test -s $$target; then \ 24 if test "x$$_bak" != x; then \ 25 rm -f $$target$$_bak; \ 26 mv $$target $$target$$_bak; \ 27 else \ 28 rm -f $$target; \ 29 fi; \ 30 fi; \ 31 cp $$src $$target; \ 32 fi; } 33 34# If the .new file is different, we want it. 35# Note: this function will work as is for *.new$RANDOM" 36InstallNew= ${CmpCp}; InstallNew() { \ 37 _t=-e; _bak=; \ 38 while :; do \ 39 case "$$1" in \ 40 -?) _t=$$1; shift;; \ 41 --bak) _bak=$$2; shift 2;; \ 42 *) break;; \ 43 esac; \ 44 done; \ 45 for new in "$$@"; do \ 46 if test $$_t $$new; then \ 47 target=`expr $$new : '\(.*\).new'`; \ 48 CmpCp $$new $$target $$_bak; \ 49 fi; \ 50 rm -f $$new; \ 51 done; :; } 52 53.endif 54