83 lines
1.7 KiB
Bash
83 lines
1.7 KiB
Bash
#!/bin/sh -
|
|
#
|
|
# $Id: chk.rpc,v 1.2 2006/09/11 15:40:46 bostic Exp $
|
|
#
|
|
# Check to make sure that the code samples in the documents build.
|
|
|
|
r=../../rpc_server/rpc.src
|
|
i=../../dbinc/db.in
|
|
|
|
t1=__1
|
|
t2=__2
|
|
|
|
[ -d ../../dbinc ] || {
|
|
echo 'FAIL: cannot find source distribution directory.'
|
|
exit 1
|
|
}
|
|
|
|
exitv=0
|
|
|
|
# $1: handle name
|
|
# $2: handle prefix
|
|
# $3: method file
|
|
check()
|
|
{
|
|
echo "==== Checking $1/$2..."
|
|
|
|
# Build a list of DB_ENV handle methods from the include file.
|
|
sed -e "/$1 PUBLIC HANDLE LIST BEGIN/,/$1 PUBLIC HANDLE LIST END/p" \
|
|
-e d < $i |
|
|
grep '[\* ](\*[a-z]' |
|
|
sed -e 's/).*$//' \
|
|
-e 's/.*(\*//' \
|
|
-e '/^$/d' > $t1
|
|
|
|
# Build a list of handle methods from the rpc.src file.
|
|
egrep '^BEGIN|^LOCAL|^NOFUNC' $r |
|
|
awk '{print $2}' |
|
|
egrep "^$2_" |
|
|
sed -e "/^$2_create/d" \
|
|
-e "s/$2_//" > $t2
|
|
|
|
if cmp -s $t1 $t2 ; then
|
|
:
|
|
else
|
|
echo "FAIL: $1 handle methods do not match."
|
|
echo "<<< dbinc/db.in >>> rpc_server/rpc.src"
|
|
diff $t1 $t2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$3" ]; then
|
|
return
|
|
fi
|
|
|
|
# Build a list of handle methods from the env/env_method.c and
|
|
# db/db_method.c files.
|
|
sed -e "/$1 PUBLIC HANDLE LIST BEGIN/,/$1 PUBLIC HANDLE LIST END/p" \
|
|
-e d < "$3" |
|
|
sed -e '/^#ifdef.HAVE_REPLICATION_THREADS/d' \
|
|
-e '/^#else.*HAVE_REPLICATION_THREADS/,/^#endif/d' \
|
|
-e '/PUBLIC/d' \
|
|
-e 's/ = .*//' \
|
|
-e 's/^.*->//' > $t2
|
|
|
|
if cmp -s $t1 $t2 ; then
|
|
:
|
|
else
|
|
echo "FAIL: $1 handle methods do not match."
|
|
echo "<<< dbinc/db.in >>> $3"
|
|
diff $t1 $t2
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# We don't check the DB handle method limits from db/db_method.c, DB handle
|
|
# methods are set in per-access method routines, they aren't consolidated.
|
|
check DB db
|
|
check DBC dbc
|
|
check DB_ENV env ../../env/env_method.c
|
|
check DB_TXN txn
|
|
|
|
exit $exitv
|