Add BSD license file
[platform/upstream/db4.git] / dist / s_recover
1 #!/bin/sh -
2 #       $Id$
3 #
4 # Build the automatically generated logging/recovery files.
5
6 header=/tmp/__db_a
7 loglist=/tmp/__db_b
8 print=/tmp/__db_c
9 source=/tmp/__db_d
10 template=/tmp/__db_e
11 tmp=/tmp/__db_f
12
13 trap 'rm -f /tmp/__db_[abcdef]; exit 1' 1 2 3 13 15
14 trap 'rm -f /tmp/__db_[abcdef]; exit 0' 0
15
16 DIR="db dbreg btree fileops hash qam txn"
17
18 # Check to make sure we haven't duplicated a log record entry, and build
19 # the list of log record types that the test suite uses.
20 for i in $DIR; do
21         for f in ../$i/*.src; do
22                 # Grab the PREFIX;  there should only be one per file, and
23                 # so it's okay to just take the first.
24                 grep '^PREFIX' $f | sed q
25                 egrep '^BEGIN[   ]|^IGNORED[     ]|^DEPRECATED[  ]' $f |
26                     awk '{print $1 "\t" $2 "\t" $3 "\t" $4}'
27         done
28 done > $loglist
29 grep -v '^PREFIX' $loglist |
30     awk '{print $2 "\t" $3 "\t" $4}' | sort -n -k 3 | uniq -d -f 1 > $tmp
31 [ -s $tmp ] && {
32         echo "DUPLICATE LOG VALUES:"
33         cat $tmp
34         rm -f $tmp
35         exit 1
36 }
37 f=../test/logtrack.list
38 cmp $loglist $f > /dev/null 2>&1 ||
39     (echo "Building $f" && rm -f $f && cp $loglist $f && chmod 444 $f)
40
41 # Build DB's recovery routines.
42 for i in $DIR; do
43         for f in ../$i/*.src; do
44                 subsystem=`basename $f .src`
45                 awk -f gen_rec.awk \
46                     -v header_file=$header \
47                     -v print_file=$print\
48                     -v source_file=$source \
49                     -v template_file=$template < $f
50
51                 f=../dbinc_auto/${subsystem}_auto.h
52                 cmp $header $f > /dev/null 2>&1 ||
53                     (echo "Building $f" &&
54                     rm -f $f && cp $header $f && chmod 444 $f)
55                 f=../$i/${subsystem}_auto.c
56                 cmp $source $f > /dev/null 2>&1 ||
57                     (echo "Building $f" &&
58                     rm -f $f && cp $source $f && chmod 444 $f)
59                 f=../$i/${subsystem}_autop.c
60                 cmp $print $f > /dev/null 2>&1 ||
61                     (echo "Building $f" &&
62                     rm -f $f && cp $print $f && chmod 444 $f)
63                 f=template/rec_${subsystem}
64                 cmp $template $f > /dev/null 2>&1 ||
65                     (echo "Building $f" &&
66                     rm -f $f && cp $template $f && chmod 444 $f)
67         done
68 done
69
70 # Build the example application's recovery routines.
71 (cd ../examples_c/ex_apprec && sh auto_rebuild)