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