1#!/bin/sh - 2# 3# $Id: chk.define,v 12.5 2008/05/07 12:40:08 bschmeck Exp $ 4# 5# Check to make sure that all #defines are actually used. 6# Check to make sure that all #defines start in column 1. 7 8d=../.. 9 10[ -f $d/LICENSE ] || { 11 echo 'FAIL: cannot find source distribution directory.' 12 exit 1 13} 14 15exitv=0 16t1=__1 17t2=__2 18t3=__3 19 20find $d -name '*.c' -o -name '*.cpp' | 21 sed -e '/\/php_db4\//d' | 22 xargs egrep '^[ ][ ]*#' > $t1 23test -s $t1 && { 24 echo "FAIL: found #defines with leading white space:" 25 cat $t1 26 exit 1 27} 28 29egrep '^#define' $d/dbinc/*.h $d/dbinc/*.in | 30 sed -e '/db_185.in/d' -e '/queue.h/d' -e '/xa.h/d' | 31 awk '{print $2}' | 32 sed -e '/^AI_CANONNAME/d' \ 33 -e '/^AI_NUMERICHOST/d' \ 34 -e '/^B_DELETE/d' \ 35 -e '/^B_MAX/d' \ 36 -e '/^CHECK_THREAD/d' \ 37 -e '/^DB_BTREEOLDVER/d' \ 38 -e '/^DB_DEGREE_2/d' \ 39 -e '/^DB_HASHOLDVER/d' \ 40 -e '/^DB_LOCKVERSION/d' \ 41 -e '/^DB_LOG_PERM_42_44/d' \ 42 -e '/^DB_LOG_RESEND_42_44/d' \ 43 -e '/^DB_MAX_PAGES/d' \ 44 -e '/^DB_PAGE_QUEUE_LEN/d' \ 45 -e '/^DB_QAMOLDVER/d' \ 46 -e '/^DB_RETURNS_A_KEY_HASH/d' \ 47 -e '/^DB_SPARE_FLAG/d' \ 48 -e '/^DB_TXNVERSION/d' \ 49 -e '/^DB_UNUSED/d' \ 50 -e '/^DEFINE_DB_CLASS/d' \ 51 -e '/^FHASH/d' \ 52 -e '/^HASH_UNUSED/d' \ 53 -e '/^HPUX_MUTEX_PAD/d' \ 54 -e '/^LOG_OP/d' \ 55 -e '/^MAX_ID/d' \ 56 -e '/^MAXHOSTNAMELEN/d' \ 57 -e '/^MINFILL/d' \ 58 -e '/^MUTEX_FIELDS/d' \ 59 -e '/^MUTEX_LOCK_PARTITION/d' \ 60 -e '/^MUTEX_UNLOCK_PARTITION/d' \ 61 -e '/^NAME_TO_SEQUENCE/d' \ 62 -e '/^NCACHED2X/d' \ 63 -e '/^NCACHED30/d' \ 64 -e '/^PAIR_MASK/d' \ 65 -e '/^P_16_COPY/d' \ 66 -e '/^P_32_COPY/d' \ 67 -e '/^P_32_SWAP/d' \ 68 -e '/^P_64_COPY/d' \ 69 -e '/^P_64_SWAP/d' \ 70 -e '/^P_TO_UINT16/d' \ 71 -e '/^QPAGE_CHKSUM/d' \ 72 -e '/^QPAGE_NORMAL/d' \ 73 -e '/^QPAGE_SEC/d' \ 74 -e '/^SIZEOF_PAGE/d' \ 75 -e '/^TAILQ_/d' \ 76 -e '/^UINT64_FMT/d' \ 77 -e '/^UINT64_MAX/d' \ 78 -e '/^VM_PAGESIZE/d' \ 79 -e '/^WRAPPED_CLASS/d' \ 80 -e '/^_WIN32_WINNT/d' \ 81 -e '/^__BIT_TYPES_DEFINED__/d' \ 82 -e '/^__DBC_INTERNAL/d' \ 83 -e '/^__STDC__/d' \ 84 -e '/^__lock_locker_hash/d' \ 85 -e '/^i_/d' \ 86 -e '/_H_/d' \ 87 -e 's/(.*//' | sort > $t1 88 89find $d -name '*.c' -o -name '*.cpp' > $t2 90for i in `cat $t1`; do 91 if egrep -w $i `cat $t2` > /dev/null; then 92 :; 93 else 94 f=`egrep -l "#define.*$i" $d/dbinc/*.h $d/dbinc/*.in | 95 sed 's;\.\.\/\.\.\/dbinc/;;' | tr -s "[:space:]" " "` 96 echo "FAIL: $i: $f" 97 fi 98done | sort -k 2 > $t3 99 100test -s $t3 && { 101 cat $t3 102 echo "FAIL: found unused #defines" 103 exit 1 104} 105 106exit $exitv 107