1#!/bin/sh - 2# 3# Reconcile the list of public defines with the man pages and the Java files. 4 5d=../.. 6docs=$d/docs_src 7 8[ -f $d/LICENSE ] || { 9 echo 'FAIL: cannot find source distribution directory.' 10 exit 1 11} 12 13p=$d/dist/pubdef.in 14 15exitv=0 16 17cat <<END_OF_TEXT 18=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 19Check that pubdef.in has everything listed in m4.links. 20=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 21END_OF_TEXT 22 23f=$docs/m4/m4.links 24sed -n \ 25 -e 's/^\$1, \(DB_[^,]*\).*/\1/p' \ 26 -e d < $f | 27while read name; do 28 if `egrep -w "$name" $p > /dev/null`; then 29 : 30 else 31 echo "$f: $name is missing from $p" 32 exitv=1 33 fi 34done 35 36cat <<END_OF_TEXT 37=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 38Check that m4.links has everything listed in pubdef.in. 39=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 40END_OF_TEXT 41 42f=$docs/m4/m4.links 43sed '/^#/d' $p | 44while read name isdoc isinc isjava; do 45 if `egrep -w "^.1, $name" $f > /dev/null`; then 46 [ "X$isdoc" != "XD" ] && { 47 echo "$name should not appear in $f" 48 exitv=1 49 } 50 else 51 [ "X$isdoc" = "XD" ] && { 52 echo "$name does not appear in $f" 53 exitv=1; 54 } 55 fi 56done 57 58cat <<END_OF_TEXT 59=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 60Check that pubdef.in has everything listed in db.in plus api_flags.in. 61=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 62END_OF_TEXT 63 64cat $d/dbinc/db.in $d/dbinc_auto/api_flags.in | sed -n \ 65 -e 's/^#define[ ]*\(DB_[A-Z_0-9][A-Z_0-9]*\).*/\1/p' \ 66 -e 's/^[ ]*\(DB_[A-Z_]*\)=[0-9].*/\1/p' \ 67 -e d | 68while read name; do 69 if `egrep -w "$name" $p > /dev/null`; then 70 : 71 else 72 echo "db.in/api_flags.in: $name is missing from $p" 73 exitv=1 74 fi 75done 76 77cat <<END_OF_TEXT 78=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 79Check that api_flags.in plus db.in has everything listed in pubdef.in. 80=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 81END_OF_TEXT 82 83sed '/^#/d' $p | 84while read name isdoc isinc isjava; do 85 if `egrep -w "#define[ ]$name|[ ][ ]*$name=[0-9][0-9]*" \ 86 $d/dbinc/db.in $d/dbinc_auto/api_flags.in > /dev/null`; then 87 [ "X$isinc" != "XI" ] && { 88 echo "$name should not appear in db.in/api_flags.in" 89 exitv=1 90 } 91 else 92 [ "X$isinc" = "XI" ] && { 93 echo "$name does not appear in db.in/api_flags.in" 94 exitv=1 95 } 96 fi 97done 98 99cat <<END_OF_TEXT 100=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 101Check that pubdef.in has everything listed in DbConstants.java. 102=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 103END_OF_TEXT 104 105j=$d/java/src/com/sleepycat/db 106f=$j/internal/DbConstants.java 107sed -n -e 's/.*int[ ]\([^ ]*\).*;/\1/p' < $f | 108while read name; do 109 if `egrep -w "$name" $p > /dev/null`; then 110 : 111 else 112 echo "$f: $name is missing from $p" 113 exitv=1 114 fi 115done 116 117cat <<END_OF_TEXT 118=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 119Check that DbConstants.java has everything listed in pubdef.in. 120=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 121END_OF_TEXT 122 123f=$j/internal/DbConstants.java 124sed '/^#/d' $p | 125while read name isdoc isinc isjava; do 126 if `egrep -w "int[ ]$name =" $f > /dev/null`; then 127 [ "X$isjava" != "XJ" ] && { 128 echo "$name should not appear in $f" 129 exitv=1 130 } 131 else 132 [ "X$isjava" = "XJ" ] && { 133 echo "$name does not appear in $f" 134 exitv=1 135 } 136 fi 137done 138 139cat <<END_OF_TEXT 140=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 141Check that all constants in pubdef.in are wrapped by the Java API. 142=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 143END_OF_TEXT 144 145#Strip out Javadoc comments 146t=__1 147cat $j/*.java $d/rpc_server/java/*.java \ 148 $j/internal/Db.java $j/internal/DbEnv.java \ 149 $j/internal/db_javaJNI.java | sed '/\/\*\*/,/\*\// d' > $t 150 151sed '/^#/d' $p | 152while read name isdoc isinc isjava; do 153 if `egrep -w "$name" $t > /dev/null`; then 154 [ "X$isjava" != "XJ" ] && { 155 echo "$name should not appear in the Java API" 156 exitv=1 157 } 158 else 159 [ "X$isjava" = "XJ" ] && { 160 echo "$name does not appear in the Java API" 161 exitv=1 162 } 163 fi 164done 165 166cat <<END_OF_TEXT 167=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 168Check that all constants in pubdef.in are wrapped by the Java native layer. 169=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 170END_OF_TEXT 171 172sed '/^#/d' $p | 173while read name isdoc isinc isjava; do 174 if `egrep -w "$name" $d/libdb_java/db_java_wrap.c > /dev/null`; then 175 [ "X$isjava" != "XN" ] && [ "X$isjava" != "XJ" ] && { 176 echo "$name should not appear in the Java native layer" 177 exitv=1 178 } 179 else 180 [ "X$isjava" = "XN" ] && { 181 echo "$name does not appear in the Java native layer" 182 exitv=1 183 } 184 fi 185done 186 187exit $exitv 188