summaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorjbj <devnull@localhost>2001-05-13 19:58:25 +0000
committerjbj <devnull@localhost>2001-05-13 19:58:25 +0000
commit2af040895b279eca8fb5a44240da7e42c8b4ac66 (patch)
tree1b74621cfd1f4531a39786c4b06a59bc0e92dbf7 /db
parent9b44f1b7168b70652f7fad2e0da6fdade4b965d7 (diff)
downloadrpm-2af040895b279eca8fb5a44240da7e42c8b4ac66.tar.gz
rpm-2af040895b279eca8fb5a44240da7e42c8b4ac66.tar.bz2
rpm-2af040895b279eca8fb5a44240da7e42c8b4ac66.zip
Initial revision
CVS patchset: 4782 CVS date: 2001/05/13 19:58:25
Diffstat (limited to 'db')
-rw-r--r--db/build_win32/db_test.src96
-rw-r--r--db/db185/db185_int.in129
-rw-r--r--db/dist/build/chk.code35
-rwxr-xr-xdb/dist/build/chk.proto30
-rw-r--r--db/dist/build/chk.str22
-rw-r--r--db/dist/db.ecd.in64
-rw-r--r--db/dist/db.spec.in52
-rw-r--r--db/dist/gen_inc.awk77
-rw-r--r--db/dist/tags3061
-rw-r--r--db/dist/template/rec_ctemp62
-rw-r--r--db/docs/api_c/db_associate.html156
-rw-r--r--db/docs/api_c/db_set_alloc.html130
-rw-r--r--db/docs/api_c/db_truncate.html111
-rw-r--r--db/docs/api_c/dbt_bulk.html81
-rw-r--r--db/docs/api_c/env_err.html98
-rw-r--r--db/docs/api_c/env_set_alloc.html107
-rw-r--r--db/docs/api_c/env_set_lg_regionmax.html73
-rw-r--r--db/docs/api_c/env_set_rpc_server.html97
-rw-r--r--db/docs/api_c/txn_discard.html72
-rw-r--r--db/docs/api_c/txn_recover.html82
-rw-r--r--db/docs/api_cxx/db_associate.html158
-rw-r--r--db/docs/api_cxx/db_set_alloc.html138
-rw-r--r--db/docs/api_cxx/db_truncate.html114
-rw-r--r--db/docs/api_cxx/dbt_bulk.html81
-rw-r--r--db/docs/api_cxx/env_err.html101
-rw-r--r--db/docs/api_cxx/env_set_alloc.html116
-rw-r--r--db/docs/api_cxx/env_set_lg_regionmax.html77
-rw-r--r--db/docs/api_cxx/env_set_rpc_server.html101
-rw-r--r--db/docs/api_cxx/get_dbt.html43
-rw-r--r--db/docs/api_cxx/mem_class.html54
-rw-r--r--db/docs/api_cxx/txn_discard.html76
-rw-r--r--db/docs/api_cxx/txn_recover.html87
-rw-r--r--db/docs/api_java/db_associate.html154
-rw-r--r--db/docs/api_java/db_truncate.html107
-rw-r--r--db/docs/api_java/env_set_lg_regionmax.html76
-rw-r--r--db/docs/api_java/env_set_rpc_server.html94
-rw-r--r--db/docs/api_java/get_dbt.html43
-rw-r--r--db/docs/api_java/txn_discard.html74
-rw-r--r--db/docs/api_java/txn_recover.html81
-rw-r--r--db/docs/api_tcl/db_truncate.html48
-rw-r--r--db/docs/ref/am/second.html223
-rw-r--r--db/docs/ref/am/truncate.html24
-rw-r--r--db/docs/ref/am_misc/align.html28
-rw-r--r--db/docs/ref/am_misc/dbsizes.html45
-rw-r--r--db/docs/ref/am_misc/diskspace.html146
-rw-r--r--db/docs/ref/am_misc/error.html62
-rw-r--r--db/docs/ref/am_misc/faq.html59
-rw-r--r--db/docs/ref/am_misc/partial.html134
-rw-r--r--db/docs/ref/am_misc/perm.html36
-rw-r--r--db/docs/ref/am_misc/stability.html54
-rw-r--r--db/docs/ref/am_misc/tune.html84
-rw-r--r--db/docs/ref/build_unix/embedix.html36
-rw-r--r--db/docs/ref/env/faq.html41
-rw-r--r--db/docs/ref/install/multiple.html54
-rw-r--r--db/docs/ref/install/rpm.html28
-rw-r--r--db/docs/ref/simple_tut/example.cs73
-rw-r--r--db/docs/ref/transapp/nested.html65
-rw-r--r--db/docs/ref/transapp/transapp.cs492
-rw-r--r--db/docs/ref/transapp/tune.html92
-rw-r--r--db/docs/ref/transapp/writetest.cs100
-rw-r--r--db/docs/ref/upgrade.3.3/alloc.html62
-rw-r--r--db/docs/ref/upgrade.3.3/conflict.html24
-rw-r--r--db/docs/ref/upgrade.3.3/disk.html24
-rw-r--r--db/docs/ref/upgrade.3.3/intro.html26
-rw-r--r--db/docs/ref/upgrade.3.3/memp_fget.html36
-rw-r--r--db/docs/ref/upgrade.3.3/rpc.html28
-rw-r--r--db/docs/ref/upgrade.3.3/toc.html23
-rw-r--r--db/docs/ref/upgrade.3.3/txn_prepare.html26
-rw-r--r--db/docs/ref/xa/build.html172
-rw-r--r--db/docs/ref/xa/xa_config.html80
-rw-r--r--db/docs/ref/xa/xa_intro.html61
-rw-r--r--db/docs/reftoc.html335
-rw-r--r--db/include/cxx_common.h45
-rw-r--r--db/include/cxx_except.h78
-rw-r--r--db/include/db.in1388
-rw-r--r--db/include/db_185.in165
-rw-r--r--db/include/db_int.in442
-rw-r--r--db/include_auto/btree_auto.h209
-rw-r--r--db/include_auto/btree_ext.h133
-rw-r--r--db/include_auto/btree_ext.in256
-rw-r--r--db/include_auto/clib_ext.h39
-rw-r--r--db/include_auto/clib_ext.in48
-rw-r--r--db/include_auto/common_ext.h40
-rw-r--r--db/include_auto/common_ext.in64
-rw-r--r--db/include_auto/crdel_auto.h63
-rw-r--r--db/include_auto/db185_ext.in11
-rw-r--r--db/include_auto/db185_uext.in12
-rw-r--r--db/include_auto/db_auto.h108
-rw-r--r--db/include_auto/db_ext.h205
-rw-r--r--db/include_auto/db_ext.in400
-rw-r--r--db/include_auto/db_server.h904
-rw-r--r--db/include_auto/db_server.in994
-rw-r--r--db/include_auto/env_ext.h34
-rw-r--r--db/include_auto/env_ext.in58
-rw-r--r--db/include_auto/global_ext.in124
-rw-r--r--db/include_auto/global_uext.in213
-rw-r--r--db/include_auto/hash_auto.h195
-rw-r--r--db/include_auto/hash_ext.h121
-rw-r--r--db/include_auto/hash_ext.in232
-rw-r--r--db/include_auto/lock_ext.h34
-rw-r--r--db/include_auto/lock_ext.in58
-rw-r--r--db/include_auto/log_auto.h30
-rw-r--r--db/include_auto/log_ext.h37
-rw-r--r--db/include_auto/log_ext.in64
-rw-r--r--db/include_auto/mp_ext.h32
-rw-r--r--db/include_auto/mp_ext.in54
-rw-r--r--db/include_auto/mutex_ext.h28
-rw-r--r--db/include_auto/mutex_ext.in46
-rw-r--r--db/include_auto/os_ext.h61
-rw-r--r--db/include_auto/os_ext.in110
-rw-r--r--db/include_auto/qam_auto.h95
-rw-r--r--db/include_auto/qam_ext.h70
-rw-r--r--db/include_auto/qam_ext.in130
-rw-r--r--db/include_auto/rpc_client_ext.h153
-rw-r--r--db/include_auto/rpc_client_ext.in296
-rw-r--r--db/include_auto/rpc_defs.in4
-rw-r--r--db/include_auto/rpc_server_ext.h110
-rw-r--r--db/include_auto/rpc_server_ext.in165
-rw-r--r--db/include_auto/tcl_ext.h66
-rw-r--r--db/include_auto/tcl_ext.in118
-rw-r--r--db/include_auto/txn_auto.h84
-rw-r--r--db/include_auto/txn_ext.h47
-rw-r--r--db/include_auto/txn_ext.in84
-rw-r--r--db/include_auto/xa_ext.h17
-rw-r--r--db/include_auto/xa_ext.in24
-rw-r--r--db/java/src/com/sleepycat/db/DbClient.java21
-rw-r--r--db/java/src/com/sleepycat/db/DbMultipleDataIterator.java47
-rw-r--r--db/java/src/com/sleepycat/db/DbMultipleIterator.java52
-rw-r--r--db/java/src/com/sleepycat/db/DbMultipleKeyDataIterator.java57
-rw-r--r--db/java/src/com/sleepycat/db/DbMultipleRecnoDataIterator.java52
-rw-r--r--db/java/src/com/sleepycat/db/DbPreplist.java22
-rw-r--r--db/java/src/com/sleepycat/db/DbSecondaryKeyCreate.java22
-rw-r--r--db/java/src/com/sleepycat/db/DbUtil.java98
-rw-r--r--db/java/src/com/sleepycat/examples/BulkAccessExample.java205
-rw-r--r--db/libdb_java/com_sleepycat_db_DbUtil.h22
-rw-r--r--db/libdb_java/java_DbUtil.c31
-rw-r--r--db/mutex/tm.c340
-rw-r--r--db/test/bigfile.tcl84
-rw-r--r--db/test/ddoyscript.tcl165
-rw-r--r--db/test/dead004.tcl105
-rw-r--r--db/test/dead005.tcl91
-rw-r--r--db/test/recd015.tcl93
-rw-r--r--db/test/recd15script.tcl66
-rw-r--r--db/test/recdscript.tcl37
-rw-r--r--db/test/sdb011.tcl98
-rw-r--r--db/test/si001.tcl115
-rw-r--r--db/test/si002.tcl167
-rw-r--r--db/test/si003.tcl142
-rw-r--r--db/test/si004.tcl193
-rw-r--r--db/test/sindex.tcl247
-rw-r--r--db/test/test092.tcl238
-rw-r--r--db/test/test093.tcl306
-rw-r--r--db/test/test094.tcl184
-rw-r--r--db/txn/txn_recover.c283
-rw-r--r--db/txn/txn_stat.c110
155 files changed, 21522 insertions, 0 deletions
diff --git a/db/build_win32/db_test.src b/db/build_win32/db_test.src
new file mode 100644
index 000000000..23760dbf2
--- /dev/null
+++ b/db/build_win32/db_test.src
@@ -0,0 +1,96 @@
+# Microsoft Developer Studio Project File - Name="@project_name@" - Package Owner=<4>
+# Microsoft Developer Studio Generated Build File, Format Version 5.00
+# ** DO NOT EDIT **
+
+# TARGTYPE "Win32 (x86) Console Application" 0x0103
+
+CFG=@project_name@ - Win32 Debug
+!MESSAGE This is not a valid makefile. To build this project using NMAKE,
+!MESSAGE use the Export Makefile command and run
+!MESSAGE
+!MESSAGE NMAKE /f "@project_name@.mak".
+!MESSAGE
+!MESSAGE You can specify a configuration when running NMAKE
+!MESSAGE by defining the macro CFG on the command line. For example:
+!MESSAGE
+!MESSAGE NMAKE /f "@project_name@.mak" CFG="@project_name@ - Win32 Debug"
+!MESSAGE
+!MESSAGE Possible choices for configuration are:
+!MESSAGE
+!MESSAGE "@project_name@ - Win32 Release" (based on "Win32 (x86) Console Application")
+!MESSAGE "@project_name@ - Win32 Debug" (based on "Win32 (x86) Console Application")
+!MESSAGE
+
+# Begin Project
+# PROP Scc_ProjName ""
+# PROP Scc_LocalPath ""
+CPP=cl.exe
+RSC=rc.exe
+
+!IF "$(CFG)" == "@project_name@ - Win32 Release"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 0
+# PROP BASE Output_Dir "Release"
+# PROP BASE Intermediate_Dir "Release"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 0
+# PROP Output_Dir "Release"
+# PROP Intermediate_Dir "Release"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MD /W3 /GX /O2 /I "." /I "../include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "NDEBUG"
+# ADD RSC /l 0x409 /d "NDEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
+# ADD LINK32 Release/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@.lib /nologo /subsystem:console /machine:I386
+# Begin Special Build Tool
+SOURCE=$(InputPath)
+PostBuild_Desc=Copy built executable files.
+PostBuild_Cmds=copy Release\*.exe .
+# End Special Build Tool
+
+!ELSEIF "$(CFG)" == "@project_name@ - Win32 Debug"
+
+# PROP BASE Use_MFC 0
+# PROP BASE Use_Debug_Libraries 1
+# PROP BASE Output_Dir "db_recov"
+# PROP BASE Intermediate_Dir "db_recov"
+# PROP BASE Target_Dir ""
+# PROP Use_MFC 0
+# PROP Use_Debug_Libraries 1
+# PROP Output_Dir "Debug"
+# PROP Intermediate_Dir "Debug"
+# PROP Ignore_Export_Lib 0
+# PROP Target_Dir ""
+# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD CPP /nologo /MDd /W3 /GX /Z7 /Od /I "." /I "../include" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
+# ADD BASE RSC /l 0x409 /d "_DEBUG"
+# ADD RSC /l 0x409 /d "_DEBUG"
+BSC32=bscmake.exe
+# ADD BASE BSC32 /nologo
+# ADD BSC32 /nologo
+LINK32=link.exe
+# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
+# ADD LINK32 Debug/libdb@DB_VERSION_MAJOR@@DB_VERSION_MINOR@d.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /pdb:none /debug /machine:I386 /out:"Debug/dbkill.exe" /fixed:no
+# Begin Special Build Tool
+SOURCE=$(InputPath)
+PostBuild_Desc=Copy built executable files.
+PostBuild_Cmds=copy Debug\*.exe .
+# End Special Build Tool
+
+!ENDIF
+
+# Begin Target
+
+# Name "@project_name@ - Win32 Release"
+# Name "@project_name@ - Win32 Debug"
+@SOURCE_FILES@
+# End Target
+# End Project
diff --git a/db/db185/db185_int.in b/db/db185/db185_int.in
new file mode 100644
index 000000000..5c7c5fd7a
--- /dev/null
+++ b/db/db185/db185_int.in
@@ -0,0 +1,129 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997-2001
+ * Sleepycat Software. All rights reserved.
+ */
+/*
+ * Copyright (c) 1990, 1993, 1994, 1995, 1996
+ * Keith Bostic. All rights reserved.
+ */
+/*
+ * Copyright (c) 1990, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * Id: db185_int.in,v 11.9 2001/04/10 20:43:54 bostic Exp
+ */
+
+#ifndef _DB_185_H_
+#define _DB_185_H_
+
+/* Routine flags. */
+#define R_CURSOR 1 /* del, put, seq */
+#define __R_UNUSED 2 /* UNUSED */
+#define R_FIRST 3 /* seq */
+#define R_IAFTER 4 /* put (RECNO) */
+#define R_IBEFORE 5 /* put (RECNO) */
+#define R_LAST 6 /* seq (BTREE, RECNO) */
+#define R_NEXT 7 /* seq */
+#define R_NOOVERWRITE 8 /* put */
+#define R_PREV 9 /* seq (BTREE, RECNO) */
+#define R_SETCURSOR 10 /* put (RECNO) */
+#define R_RECNOSYNC 11 /* sync (RECNO) */
+
+typedef struct {
+ void *data; /* data */
+ size_t size; /* data length */
+} DBT185;
+
+/* Access method description structure. */
+typedef struct __db185 {
+ DBTYPE type; /* Underlying db type. */
+ int (*close) __P((struct __db185 *));
+ int (*del) __P((const struct __db185 *, const DBT185 *, u_int));
+ int (*get)
+ __P((const struct __db185 *, const DBT185 *, DBT185 *, u_int));
+ int (*put)
+ __P((const struct __db185 *, DBT185 *, const DBT185 *, u_int));
+ int (*seq)
+ __P((const struct __db185 *, DBT185 *, DBT185 *, u_int));
+ int (*sync) __P((const struct __db185 *, u_int));
+ DB *dbp; /* DB structure. Was void *internal. */
+ int (*fd) __P((const struct __db185 *));
+
+ /*
+ * !!!
+ * The following elements added to the end of the DB 1.85 DB
+ * structure.
+ */
+ DBC *dbc; /* DB cursor. */
+ /* Various callback functions. */
+ int (*compare) __P((const DBT *, const DBT *));
+ size_t (*prefix) __P((const DBT *, const DBT *));
+ u_int32_t (*hash) __P((const void *, size_t));
+} DB185;
+
+/* Structure used to pass parameters to the btree routines. */
+typedef struct {
+#define R_DUP 0x01 /* duplicate keys */
+ u_int32_t flags;
+ u_int32_t cachesize; /* bytes to cache */
+ u_int32_t maxkeypage; /* maximum keys per page */
+ u_int32_t minkeypage; /* minimum keys per page */
+ u_int32_t psize; /* page size */
+ int (*compare) /* comparison function */
+ __P((const DBT *, const DBT *));
+ size_t (*prefix) /* prefix function */
+ __P((const DBT *, const DBT *));
+ int lorder; /* byte order */
+} BTREEINFO;
+
+/* Structure used to pass parameters to the hashing routines. */
+typedef struct {
+ u_int32_t bsize; /* bucket size */
+ u_int32_t ffactor; /* fill factor */
+ u_int32_t nelem; /* number of elements */
+ u_int32_t cachesize; /* bytes to cache */
+ u_int32_t /* hash function */
+ (*hash) __P((const void *, size_t));
+ int lorder; /* byte order */
+} HASHINFO;
+
+/* Structure used to pass parameters to the record routines. */
+typedef struct {
+#define R_FIXEDLEN 0x01 /* fixed-length records */
+#define R_NOKEY 0x02 /* key not required */
+#define R_SNAPSHOT 0x04 /* snapshot the input */
+ u_int32_t flags;
+ u_int32_t cachesize; /* bytes to cache */
+ u_int32_t psize; /* page size */
+ int lorder; /* byte order */
+ size_t reclen; /* record length (fixed-length records) */
+ u_char bval; /* delimiting byte (variable-length records */
+ char *bfname; /* btree file name */
+} RECNOINFO;
+
diff --git a/db/dist/build/chk.code b/db/dist/build/chk.code
new file mode 100644
index 000000000..e88fcff15
--- /dev/null
+++ b/db/dist/build/chk.code
@@ -0,0 +1,35 @@
+#!/bin/sh -
+#
+# Id: chk.code,v 1.1 2001/05/08 15:07:05 bostic Exp
+#
+# Check to make sure that the code samples in the documents build.
+
+# Run from the top-level directory.
+[ -f db_config.h ] || {
+ echo 'chk.code must be run from a build directory.'
+ exit 1
+}
+
+t1=/tmp/__1
+
+find ../docs_src -name '*.cs' > ${t1}
+
+for i in `cat ${t1}`; do
+ echo "$i ..."
+ sed -e 's/m4_include(\(.*\))/#include <\1>/g' \
+ -e 's/m4_[a-z]*[(\[)]*//g' \
+ -e 's/(\[//g' \
+ -e '/argv/!s/])//g' \
+ -e 's/dnl//g' \
+ -e 's/__GT__/>/g' \
+ -e 's/__LB__/[/g' \
+ -e 's/__LT__/</g' \
+ -e 's/__RB__/]/g' < $i > t.c
+ if cc -Wall -I. t.c libdb.a -o t; then
+ :
+ else
+ exit 1
+ fi
+done
+
+rm -f ${t1}
diff --git a/db/dist/build/chk.proto b/db/dist/build/chk.proto
new file mode 100755
index 000000000..8ebfae809
--- /dev/null
+++ b/db/dist/build/chk.proto
@@ -0,0 +1,30 @@
+#!/bin/sh -
+#
+# Id: chk.proto,v 1.3 2001/05/05 14:48:11 bostic Exp
+#
+# Check to make sure that prototypes are actually needed.
+
+# Run from the top-level directory.
+[ -f db_config.h ] && cd ..
+
+t1=/tmp/__1
+
+egrep '__P' include_auto/*.h |
+ sed -e 's/[ ][ ]*__P.*//' \
+ -e 's/^.*[ *]//' \
+ -e '/__db_cprint/d' \
+ -e '/__db_lprint/d' \
+ -e '/__db_noop_log/d' \
+ -e '/__db_prnpage/d' \
+ -e '/__db_txnlist_print/d' \
+ -e '/__ham_func2/d' \
+ -e '/__ham_func3/d' \
+ -e '/_print$/d' \
+ -e '/_read$/d' > ${t1}
+
+for i in `cat ${t1}`; do
+ c=`egrep -low $i include/*.in include/*.h */*.c */*.cpp | wc -l`
+ echo "$i: $c"
+done | egrep ' 1$'
+
+rm -f ${t1}
diff --git a/db/dist/build/chk.str b/db/dist/build/chk.str
new file mode 100644
index 000000000..f4a3129a6
--- /dev/null
+++ b/db/dist/build/chk.str
@@ -0,0 +1,22 @@
+# This sed script can be used to check spelling in quoted strings:
+#
+# sed -f /tmp/f/i */*.c */*.cpp | tee /tmp/_f | spell > /tmp/f/spell.out
+
+
+#!/bin/sh -
+#
+# Id: chk.str,v 1.1 2001/05/05 14:48:42 bostic Exp
+#
+# Check spelling in quoted strings.
+
+# Run from the top-level directory.
+[ -f db_config.h ] && cd ..
+
+sed -e '/^#include/d' \
+ -e '/revid/d' \
+ -e '/"/!d' \
+ -e 's/^[^"]*//' \
+ -e 's/%s/ /g' \
+ -e 's/[^"]*$//' \
+ -e 's/\\[nt]/ /g' */*.c */*.cpp | \
+ tee /tmp/chk.str.orig | spell > /tmp/chk.str
diff --git a/db/dist/db.ecd.in b/db/dist/db.ecd.in
new file mode 100644
index 000000000..60bbf3ec3
--- /dev/null
+++ b/db/dist/db.ecd.in
@@ -0,0 +1,64 @@
+# Embedix Componenet Description (ECD) file for BerkeleyDB.
+#
+# Id: db.ecd.in,v 11.1 2001/04/04 14:06:13 bostic Exp
+
+<GROUP System>
+<GROUP Library>
+<COMPONENT BerkeleyDB>
+ SRPM=db
+ <SPECPATCH></SPECPATCH>
+ <HELP>
+ Berkeley DB is Sleepycat Software's programmatic database toolkit.
+ </HELP>
+
+ TYPE=bool
+ DEFAULT_VALUE=1
+ PROMPT=Include BerkeleyDB library?
+ <KEEPLIST>
+ /usr/lib/libdb-@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.so
+ /usr/include/db.h
+ /usr/lib/libdb.so
+ </KEEPLIST>
+ <PROVIDES>
+ libdb-@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.so
+ </PROVIDES>
+ <REQUIRES>
+ ld-linux.so.2
+ libc.so.6
+ </REQUIRES>
+ STATIC_SIZE=0
+ STARTUP_TIME=0
+
+ @EMBEDIX_ECD_CXX@
+
+ <OPTION db-extra>
+ TYPE=bool
+ DEFAULT_VALUE=1
+ PROMPT=Include BerkeleyDB Utilities?
+ <KEEPLIST>
+ /usr/bin/db_archive
+ /usr/bin/db_checkpoint
+ /usr/bin/db_deadlock
+ /usr/bin/db_dump
+ /usr/bin/db_load
+ /usr/bin/db_printlog
+ /usr/bin/db_recover
+ /usr/bin/db_stat
+ /usr/bin/db_upgrade
+ /usr/bin/db_verify
+ @EMBEDIX_ECD_RPC@
+ </KEEPLIST>
+ <REQUIRES>
+ libdb-@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.so
+ ld-linux.so.2
+ libc.so.6
+ libdl.so.2
+ libm.so.6
+ </REQUIRES>
+ STATIC_SIZE=0
+ STARTUP_TIME=0
+ </OPTION>
+
+</COMPONENT>
+</GROUP>
+</GROUP>
diff --git a/db/dist/db.spec.in b/db/dist/db.spec.in
new file mode 100644
index 000000000..a5f522c2b
--- /dev/null
+++ b/db/dist/db.spec.in
@@ -0,0 +1,52 @@
+# Berkeley DB @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
+
+Summary: Sleepycat Berkeley DB database library
+Name: db
+Version: @DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@
+Release: 1
+Copyright: Freely redistributable, see LICENSE for details.
+Source: http://www.sleepycat.com/update/@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@/db-@DB_VERSION_MAJOR@.@DB_VERSION_MINOR@.@DB_VERSION_PATCH@.tar.gz
+URL: http://www.sleepycat.com
+Group: System Environment/Libraries
+BuildRoot: @CONFIGURATION_PATH@/RPM_INSTALL
+
+%description
+Berkeley DB is a programmatic toolkit that provides fast, reliable,
+mission-critical, and scalable built-in database support for software
+ranging from embedded applications running on hand-held appliances to
+enterprise-scale servers.
+
+The Berkeley DB access methods include B+tree, Extended Linear Hashing,
+Fixed and Variable-length records, and Persistent Queues. Berkeley DB
+provides full transactional support, database recovery, online backups,
+and separate access to locking, logging and shared memory caching
+subsystems.
+
+Berkeley DB supports C, C++, Java, Tcl, Perl, and Python APIs. The
+software is available for Linux, a wide variety of UNIX platforms,
+Windows 95/98, Windows/NT, Windows 2000, VxWorks and QNX.
+
+%prep
+%setup
+
+%build
+cd build_unix
+CFLAGS="$RPM_OPT_FLAGS" ../dist/configure @CONFIGURATION_ARGS@
+make library_build
+
+%install
+cd build_unix
+make prefix=@CONFIGURATION_PATH@/RPM_INSTALL@EMBEDIX_ROOT@ install
+
+@RPM_POST_INSTALL@
+
+@RPM_POST_UNINSTALL@
+
+%files
+%defattr(-,root,root)
+%dir @EMBEDIX_ROOT@/bin
+%dir @EMBEDIX_ROOT@/docs
+%dir @EMBEDIX_ROOT@/include
+%dir @EMBEDIX_ROOT@/lib
+
+%changelog
diff --git a/db/dist/gen_inc.awk b/db/dist/gen_inc.awk
new file mode 100644
index 000000000..f308af484
--- /dev/null
+++ b/db/dist/gen_inc.awk
@@ -0,0 +1,77 @@
+# This awk script parses C input files looking for lines marked "PUBLIC:"
+# and "EXTERN:". (PUBLIC lines are DB internal function prototypes and
+# #defines, EXTERN are DB external function prototypes and #defines.) The
+# PUBLIC lines are put into two versions of per-directory include files:
+# one version for normal use, and one version to be post-processed based
+# on creating unique file names for every global symbol in the DB library.
+# The EXTERN lines are put into two versions of the db.h file, again, one
+# version for normal use, and one version to be post-processed for unique
+# naming.
+/PUBLIC:/ {
+ sub("^.*PUBLIC:[ ][ ]*", "")
+ if ($0 ~ "^#if|^#endif") {
+ print $0 >> inc_file
+ print $0 >> uinc_file
+ next
+ }
+ if ($0 ~ "^#define.*[(]") {
+ print $0 >> inc_file
+ def = gensub("[(]", "@DB_VERSION_UNIQUE_NAME@(", 2)
+ print def >> uinc_file
+ next
+ }
+ if ($0 ~ "^#define") {
+ print $0 >> inc_file
+ sub("[ ]*$", "@DB_VERSION_UNIQUE_NAME@")
+ print $0 >> uinc_file
+ next
+ }
+ pline = sprintf("%s %s", pline, $0)
+ if (pline ~ "));") {
+ sub("^[ ]*", "", pline)
+ print pline >> inc_file
+ if (pline ~ db_version_unique_name)
+ print pline >> uinc_file;
+ else {
+ def = gensub("[ ][ ]*__P.*", "", 1, pline)
+ sub("^.*[ ][*]*", "", def)
+ printf("#define %s %s@DB_VERSION_UNIQUE_NAME@\n%s\n",
+ def, def, pline) >> uinc_file
+ }
+ pline = ""
+ }
+}
+/EXTERN:/ {
+ sub("^.*EXTERN:[ ][ ]*", "")
+ if ($0 ~ "^#if|^#endif") {
+ print $0 >> ext_file
+ print $0 >> uext_file
+ next
+ }
+ if ($0 ~ "^#define.*[(]") {
+ print $0 >> ext_file
+ def = gensub("[(]", "@DB_VERSION_UNIQUE_NAME@(", 2)
+ print def >> uext_file
+ next
+ }
+ if ($0 ~ "^#define") {
+ print $0 >> ext_file
+ sub("[ ]*$", "@DB_VERSION_UNIQUE_NAME@")
+ print $0 >> uext_file
+ next
+ }
+ eline = sprintf("%s %s", eline, $0)
+ if (eline ~ "));") {
+ sub("^[ ]*", "", eline)
+ print eline >> ext_file
+ if (pline ~ db_version_unique_name)
+ print pline >> uext_file;
+ else {
+ def = gensub("[ ][ ]*__P.*", "", 1, eline)
+ sub("^.*[ ][*]*", "", def)
+ printf("#define %s %s@DB_VERSION_UNIQUE_NAME@\n%s\n",
+ def, def, eline) >> uext_file
+ }
+ eline = ""
+ }
+}
diff --git a/db/dist/tags b/db/dist/tags
new file mode 100644
index 000000000..b6fe89e6d
--- /dev/null
+++ b/db/dist/tags
@@ -0,0 +1,3061 @@
+ACQUIRE ../btree/bt_cursor.c /^#define ACQUIRE(dbc, mode, lpgno, lock, fpgno, pag/
+ACQUIRE_CUR ../btree/bt_cursor.c /^#define ACQUIRE_CUR(dbc, mode, ret) { \\$/
+ACQUIRE_CUR_SET ../btree/bt_cursor.c /^#define ACQUIRE_CUR_SET(dbc, mode, p, ret) { \\/
+ACQUIRE_WRITE_LOCK ../btree/bt_cursor.c /^#define ACQUIRE_WRITE_LOCK(dbc, ret) { \\$/
+ACTION ../include/db.in /^} ACTION;$/
+ACTIVATE_CTP ../include/db_server_int.h /^#define ACTIVATE_CTP(ctp, id, type) { \\$/
+ALIGN ../include/db_int.in /^#define ALIGN(value, bound) \\$/
+ALIGNP ../include/db_int.in /^#define ALIGNP(value, bound) ALIGN((db_alignp_t)va/
+APPNAME ../include/db_int.in /^} APPNAME;$/
+BACKUP_PREFIX ../db/db.c /^#define BACKUP_PREFIX "__db."$/
+BADARG ../clib/getopt.c /^#define BADARG (int)':'$/
+BADCH ../clib/getopt.c /^#define BADCH (int)'?'$/
+BAD_KILLID ../lock/lock_deadlock.c /^#define BAD_KILLID 0xffffffff$/
+BFMSG ../db185/db185.c /^#define BFMSG "DB: DB 1.85's recno bfname field is/
+BH ../include/mp.h /^struct __bh; typedef struct __bh BH;$/
+BH_CALLPGIN ../include/mp.h /^#define BH_CALLPGIN 0x001 \/* Page needs to be re/
+BH_DIRTY ../include/mp.h /^#define BH_DIRTY 0x002 \/* Page was modified. *\//
+BH_DISCARD ../include/mp.h /^#define BH_DISCARD 0x004 \/* Page is useless. *\//
+BH_LOCKED ../include/mp.h /^#define BH_LOCKED 0x008 \/* Page is locked (I\/O /
+BH_SYNC ../include/mp.h /^#define BH_SYNC 0x010 \/* memp sync: write the p/
+BH_SYNC_LOGFLSH ../include/mp.h /^#define BH_SYNC_LOGFLSH 0x020 \/* memp sync: also/
+BH_TO_CACHE ../include/mp.h /^#define BH_TO_CACHE(dbmp, bhp) \\$/
+BH_TRASH ../include/mp.h /^#define BH_TRASH 0x040 \/* Page is garbage. *\/$/
+BINTERNAL ../include/db_page.h /^} BINTERNAL;$/
+BINTERNAL_PSIZE ../include/db_page.h /^#define BINTERNAL_PSIZE(len) \\$/
+BINTERNAL_SIZE ../include/db_page.h /^#define BINTERNAL_SIZE(len) \\$/
+BI_DELETED ../include/btree.h /^#define BI_DELETED 0x01 \/* Key\/data pair only p/
+BKEYDATA ../include/db_page.h /^} BKEYDATA;$/
+BKEYDATA_PSIZE ../include/db_page.h /^#define BKEYDATA_PSIZE(len) \\$/
+BKEYDATA_SIZE ../include/db_page.h /^#define BKEYDATA_SIZE(len) \\$/
+BOVERFLOW ../include/db_page.h /^} BOVERFLOW;$/
+BOVERFLOW_PSIZE ../include/db_page.h /^#define BOVERFLOW_PSIZE \\$/
+BOVERFLOW_SIZE ../include/db_page.h /^#define BOVERFLOW_SIZE \\$/
+BS_TO_PAGE ../include/hash.h /^#define BS_TO_PAGE(bucket, spares) \\$/
+BTMETA ../include/db_page.h /^} BTMETA31, BTMETA;$/
+BTMETA2X ../include/db_upgrade.h /^} BTMETA2X;$/
+BTMETA30 ../include/db_upgrade.h /^} BTMETA30;$/
+BTM_DUP ../include/db_page.h /^#define BTM_DUP 0x001 \/* Duplicates. *\/$/
+BTM_DUPSORT ../include/db_page.h /^#define BTM_DUPSORT 0x040 \/* Duplicates are sor/
+BTM_FIXEDLEN ../include/db_page.h /^#define BTM_FIXEDLEN 0x008 \/* Recno: fixed leng/
+BTM_MASK ../include/db_page.h /^#define BTM_MASK 0x07f$/
+BTM_RECNO ../include/db_page.h /^#define BTM_RECNO 0x002 \/* Recno tree. *\/$/
+BTM_RECNUM ../include/db_page.h /^#define BTM_RECNUM 0x004 \/* Btree: maintain rec/
+BTM_RENUMBER ../include/db_page.h /^#define BTM_RENUMBER 0x010 \/* Recno: renumber o/
+BTM_SUBDB ../include/db_page.h /^#define BTM_SUBDB 0x020 \/* Subdatabases. *\/$/
+BTREE ../include/btree.h /^struct __btree; typedef struct __btree BTREE;$/
+BTREEINFO ../include/db_185.in /^} BTREEINFO;$/
+BTREEMAGIC ../include/db_185.in /^#define BTREEMAGIC 0x053162$/
+BTREEVERSION ../include/db_185.in /^#define BTREEVERSION 3$/
+BTREE_CURSOR ../include/btree.h /^struct __cursor; typedef struct __cursor BTREE_CUR/
+BT_STK_CLR ../include/btree.h /^#define BT_STK_CLR(c) do { \\$/
+BT_STK_ENTER ../include/btree.h /^#define BT_STK_ENTER(dbenv, c, pagep, page_indx, l/
+BT_STK_NUM ../include/btree.h /^#define BT_STK_NUM(dbenv, c, pagep, page_indx, ret/
+BT_STK_NUMPUSH ../include/btree.h /^#define BT_STK_NUMPUSH(dbenv, c, pagep, page_indx,/
+BT_STK_POP ../include/btree.h /^#define BT_STK_POP(c) \\$/
+BT_STK_PUSH ../include/btree.h /^#define BT_STK_PUSH(dbenv, c, pagep, page_indx, lo/
+BUCKET_INVALID ../include/hash.h /^#define BUCKET_INVALID 0xFFFFFFFF$/
+BUCKET_TO_PAGE ../include/hash.h /^#define BUCKET_TO_PAGE(I, B) (BS_TO_PAGE((B), (I)-/
+B_DCLR ../include/db_page.h /^#define B_DCLR(t) (t) &= ~B_DELETE$/
+B_DELETE ../include/db_page.h /^#define B_DELETE (0x80)$/
+B_DISSET ../include/db_page.h /^#define B_DISSET(t) ((t) & B_DELETE)$/
+B_DSET ../include/db_page.h /^#define B_DSET(t) (t) |= B_DELETE$/
+B_DUPLICATE ../include/db_page.h /^#define B_DUPLICATE 2 \/* Duplicate key\/data item/
+B_KEYDATA ../include/db_page.h /^#define B_KEYDATA 1 \/* Key\/data item. *\/$/
+B_MAX ../include/btree.h /^#define B_MAX(a,b) (((a) > (b)) ? (a) : (b))$/
+B_MAXSIZEONPAGE ../include/btree.h /^#define B_MAXSIZEONPAGE(ovflsize) \\$/
+B_MINKEY_TO_OVFLSIZE ../include/btree.h /^#define B_MINKEY_TO_OVFLSIZE(minkey, pgsize) \\/
+B_OVERFLOW ../include/db_page.h /^#define B_OVERFLOW 3 \/* Overflow key\/data item. /
+B_TSET ../include/db_page.h /^#define B_TSET(t, type, deleted) { \\$/
+B_TYPE ../include/db_page.h /^#define B_TYPE(t) ((t) & ~B_DELETE)$/
+C ../include/db_cxx.h /^\/\/ we allow you to declare the callbacks in C++ /
+CAD_UPDATEROOT ../include/btree.h /^#define CAD_UPDATEROOT 0x01 \/* Root page count w/
+CALC_QAM_RECNO_PER_PAGE ../include/qam.h /^#define CALC_QAM_RECNO_PER_PAGE(dbp) \\$/
+CDB_LOCKING ../include/db_int.in /^#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_C/
+CDB_LOCKING_COPY ../db/db_cam.c /^#define CDB_LOCKING_COPY(dbp, dbc_o, dbc_n) \\$/
+CDB_LOCKING_DONE ../db/db_cam.c /^#define CDB_LOCKING_DONE(dbp, dbc) \\$/
+CDB_LOCKING_INIT ../db/db_cam.c /^#define CDB_LOCKING_INIT(dbp, dbc) \\$/
+CD_CLR ../btree/bt_recno.c /^#define CD_CLR(cp) { \\$/
+CD_ISSET ../btree/bt_recno.c /^#define CD_ISSET(cp) \\$/
+CD_SET ../btree/bt_recno.c /^#define CD_SET(cp) { \\$/
+CHARKEY ../include/hash.h /^#define CHARKEY "%$sniglet^&"$/
+CHECK_LSN ../include/log.h /^#define CHECK_LSN(redo, cmp, lsn, prev) \\$/
+CIRCLEQ_ENTRY ../include/queue.h /^#define CIRCLEQ_ENTRY(type) \\$/
+CIRCLEQ_FIRST ../include/queue.h /^#define CIRCLEQ_FIRST(head) ((head)->cqh_first)$/
+CIRCLEQ_HEAD ../include/queue.h /^#define CIRCLEQ_HEAD(name, type) \\$/
+CIRCLEQ_INIT ../include/queue.h /^#define CIRCLEQ_INIT(head) do { \\$/
+CIRCLEQ_INSERT_AFTER ../include/queue.h /^#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, f/
+CIRCLEQ_INSERT_BEFORE ../include/queue.h /^#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, /
+CIRCLEQ_INSERT_HEAD ../include/queue.h /^#define CIRCLEQ_INSERT_HEAD(head, elm, field) do {/
+CIRCLEQ_INSERT_TAIL ../include/queue.h /^#define CIRCLEQ_INSERT_TAIL(head, elm, field) do {/
+CIRCLEQ_LAST ../include/queue.h /^#define CIRCLEQ_LAST(head) ((head)->cqh_last)$/
+CIRCLEQ_NEXT ../include/queue.h /^#define CIRCLEQ_NEXT(elm, field) ((elm)->field.cqe/
+CIRCLEQ_PREV ../include/queue.h /^#define CIRCLEQ_PREV(elm, field) ((elm)->field.cqe/
+CIRCLEQ_REMOVE ../include/queue.h /^#define CIRCLEQ_REMOVE(head, elm, field) do { /
+CLEAR_BYTE ../include/debug.h /^#define CLEAR_BYTE 0xdb$/
+CLEAR_MAP ../lock/lock_deadlock.c /^#define CLEAR_MAP(M, N) { \\$/
+CLR_MAP ../lock/lock_deadlock.c /^#define CLR_MAP(M, B) ((M)[(B) \/ 32] &= ~(1 << ((/
+COMPQUIET ../include/db_int.in /^#define COMPQUIET(n, v) (n) = (v)$/
+CONFIG_NAME ../env/env_open.c /^#define CONFIG_NAME "\/DB_CONFIG"$/
+CONFLICTS ../include/lock.h /^#define CONFLICTS(T, R, HELD, WANTED) \\$/
+COPY_RET_MEM ../include/db_int.in /^#define COPY_RET_MEM(src, dest) \\$/
+CT_CURSOR ../include/db_server_int.h /^#define CT_CURSOR 0x001 \/* Cursor *\/$/
+CT_DB ../include/db_server_int.h /^#define CT_DB 0x002 \/* Database *\/$/
+CT_ENV ../include/db_server_int.h /^#define CT_ENV 0x004 \/* Env *\/$/
+CT_JOIN ../include/db_server_int.h /^#define CT_JOIN 0x10000000 \/* Join cursor compon/
+CT_JOINCUR ../include/db_server_int.h /^#define CT_JOINCUR 0x20000000 \/* Join cursor *\/$/
+CT_TXN ../include/db_server_int.h /^#define CT_TXN 0x008 \/* Txn *\/$/
+CURADJ_LOG ../btree/bt_recno.c /^#define CURADJ_LOG(dbc) \\$/
+C_DELETED ../include/btree.h /^#define C_DELETED 0x0001 \/* Record was deleted. /
+C_EQUAL ../btree/bt_recno.c /^#define C_EQUAL(cp1, cp2) \\$/
+C_LESSTHAN ../btree/bt_recno.c /^#define C_LESSTHAN(cp1, cp2) \\$/
+C_RECNUM ../include/btree.h /^#define C_RECNUM 0x0002 \/* Tree requires record /
+C_RENUMBER ../include/btree.h /^#define C_RENUMBER 0x0004 \/* Tree records are mu/
+DATA_INIT_CNT ../env/env_method.c /^#define DATA_INIT_CNT 20 \/* Start with 20 data /
+DB ../include/db.in /^struct __db; typedef struct __db DB;$/
+DBC ../include/db.in /^struct __dbc; typedef struct __dbc DBC;$/
+DBC_ACTIVE ../include/db.in /^#define DBC_ACTIVE 0x001 \/* Cursor is being used/
+DBC_COMPENSATE ../include/db.in /^#define DBC_COMPENSATE 0x002 \/* Cursor is doing /
+DBC_DIRTY_READ ../include/db.in /^#define DBC_DIRTY_READ 0x004 \/* Cursor is suppor/
+DBC_INTERNAL ../include/db.in /^struct __dbc_internal; typedef struct __dbc_intern/
+DBC_MULTIPLE ../include/db.in /^#define DBC_MULTIPLE 0x400 \/* Return Multiple da/
+DBC_MULTIPLE_KEY ../include/db.in /^#define DBC_MULTIPLE_KEY 0x800 \/* Return Multipl/
+DBC_OPD ../include/db.in /^#define DBC_OPD 0x008 \/* Cursor references off-/
+DBC_RECOVER ../include/db.in /^#define DBC_RECOVER 0x010 \/* Cursor created by /
+DBC_RMW ../include/db.in /^#define DBC_RMW 0x020 \/* Acquire write flag in /
+DBC_TRANSIENT ../include/db.in /^#define DBC_TRANSIENT 0x040 \/* Cursor is transie/
+DBC_WRITECURSOR ../include/db.in /^#define DBC_WRITECURSOR 0x080 \/* Cursor may be u/
+DBC_WRITEDUP ../include/db.in /^#define DBC_WRITEDUP 0x100 \/* idup'ed DBC_WRITEC/
+DBC_WRITER ../include/db.in /^#define DBC_WRITER 0x200 \/* Cursor immediately w/
+DBLOG_FORCE_OPEN ../include/log.h /^#define DBLOG_FORCE_OPEN 0x02 \/* Force the db ope/
+DBLOG_RECOVER ../include/log.h /^#define DBLOG_RECOVER 0x01 \/* We are in recovery/
+DBM ../include/db.in /^typedef struct __db DBM;$/
+DBMETA ../include/db_page.h /^} DBMETA31, DBMETA;$/
+DBMETA30 ../include/db_upgrade.h /^} DBMETA30;$/
+DBMETASIZE ../include/db_page.h /^#define DBMETASIZE 256$/
+DBM_INSERT ../include/db.in /^#define DBM_INSERT 0 \/* Flags to dbm_store(). */
+DBM_REPLACE ../include/db.in /^#define DBM_REPLACE 1$/
+DBM_SUFFIX ../include/db.in /^#define DBM_SUFFIX ".db"$/
+DBT ../include/db_cxx.h /^ (DB *, const DBT *, const DBT *);$/
+DBTBUFLEN ../db/db_pr.c /^#define DBTBUFLEN 100$/
+DBTCL_DBM ../include/tcl_db.h /^#define DBTCL_DBM 1$/
+DBTCL_INFO ../include/tcl_db.h /^} DBTCL_INFO;$/
+DBTCL_NDBM ../include/tcl_db.h /^#define DBTCL_NDBM 2$/
+DBTCL_PREP ../include/tcl_db.h /^#define DBTCL_PREP 64 \/* Size of txn_recover prep/
+DBTYPE ../include/db.in /^} DBTYPE;$/
+DBT_JAVAINFO ../libdb_java/java_info.h /^DBT_JAVAINFO; \/* used with all 'dbtji' functions/
+DB_ADDSTR ../env/env_open.c /^#define DB_ADDSTR(add) { \\$/
+DB_ADD_BIG ../include/db_am.h /^#define DB_ADD_BIG 0x30$/
+DB_ADD_DUP ../include/db_am.h /^#define DB_ADD_DUP 0x10$/
+DB_ADD_PAGE ../include/db_am.h /^#define DB_ADD_PAGE 0x70$/
+DB_AFTER ../include/db.in /^#define DB_AFTER 1 \/* c_put() *\/$/
+DB_AGGRESSIVE ../include/db.in /^#define DB_AGGRESSIVE 0x0001 \/* Salvage an/
+DB_ALREADY_ABORTED ../include/db.in /^#define DB_ALREADY_ABORTED (-30899)$/
+DB_AM_DIRTY ../include/db.in /^#define DB_AM_DIRTY 0x000001 \/* Support Dirty Rea/
+DB_AM_DISCARD ../include/db.in /^#define DB_AM_DISCARD 0x000002 \/* Discard any cac/
+DB_AM_DUP ../include/db.in /^#define DB_AM_DUP 0x000004 \/* DB_DUP. *\/$/
+DB_AM_DUPSORT ../include/db.in /^#define DB_AM_DUPSORT 0x000008 \/* DB_DUPSORT. *\//
+DB_AM_INMEM ../include/db.in /^#define DB_AM_INMEM 0x000010 \/* In-memory; no syn/
+DB_AM_PGDEF ../include/db.in /^#define DB_AM_PGDEF 0x000020 \/* Page size was def/
+DB_AM_RDONLY ../include/db.in /^#define DB_AM_RDONLY 0x000040 \/* Database is read/
+DB_AM_RECOVER ../include/db.in /^#define DB_AM_RECOVER 0x000080 \/* DBP opened by r/
+DB_AM_SECONDARY ../include/db.in /^#define DB_AM_SECONDARY 0x000100 \/* Database is a/
+DB_AM_SUBDB ../include/db.in /^#define DB_AM_SUBDB 0x000200 \/* Subdatabases supp/
+DB_AM_SWAP ../include/db.in /^#define DB_AM_SWAP 0x000400 \/* Pages need to be b/
+DB_AM_TXN ../include/db.in /^#define DB_AM_TXN 0x000800 \/* DBP was in a transa/
+DB_AM_VERIFYING ../include/db.in /^#define DB_AM_VERIFYING 0x001000 \/* DB handle is /
+DB_APPEND ../include/db.in /^#define DB_APPEND 2 \/* put() *\/$/
+DB_ARCH_ABS ../include/db.in /^#define DB_ARCH_ABS 0x001 \/* Absolute pathnames./
+DB_ARCH_DATA ../include/db.in /^#define DB_ARCH_DATA 0x002 \/* Data files. *\/$/
+DB_ARCH_LOG ../include/db.in /^#define DB_ARCH_LOG 0x004 \/* Log files. *\/$/
+DB_ASSERT ../include/debug.h /^#define DB_ASSERT(e) ((e) ? (void)0 : __db_assert(/
+DB_BEFORE ../include/db.in /^#define DB_BEFORE 3 \/* c_put() *\/$/
+DB_BEGIN_SINGLE_THREAD ../include/mutex.h /^#define DB_BEGIN_SINGLE_THREAD$/
+DB_BTREEMAGIC ../include/db.in /^#define DB_BTREEMAGIC 0x053162$/
+DB_BTREEOLDVER ../include/db.in /^#define DB_BTREEOLDVER 6 \/* Oldest btree version/
+DB_BTREEVERSION ../include/db.in /^#define DB_BTREEVERSION 8 \/* Current btree versi/
+DB_BTREE_STAT ../include/db.in /^struct __db_bt_stat; typedef struct __db_bt_stat D/
+DB_BT_RECNUM ../include/db.in /^#define DB_BT_RECNUM 0x002000 \/* DB_RECNUM. *\/$/
+DB_BT_REVSPLIT ../include/db.in /^#define DB_BT_REVSPLIT 0x004000 \/* DB_REVSPLITOFF/
+DB_CACHED_COUNTS ../include/db.in /^#define DB_CACHED_COUNTS 4 \/* stat() *\/$/
+DB_CACHESIZE_MIN ../include/mp.h /^#define DB_CACHESIZE_MIN (40 * 1024)$/
+DB_CDB_ALLDB ../include/db.in /^#define DB_CDB_ALLDB 0x000400 \/* In CDB, lo/
+DB_CHECKPOINT ../include/db.in /^#define DB_CHECKPOINT 5 \/* log_put(), log_get()/
+DB_CHECK_TXN ../include/db_am.h /^#define DB_CHECK_TXN(dbp, txn) \\$/
+DB_CLIENT ../include/db.in /^#define DB_CLIENT 0x000400 \/* Open for a cl/
+DB_COMMIT ../include/db.in /^#define DB_COMMIT 6 \/* log_put() (internal) *\//
+DB_CONSUME ../include/db.in /^#define DB_CONSUME 7 \/* get() *\/$/
+DB_CONSUME_WAIT ../include/db.in /^#define DB_CONSUME_WAIT 8 \/* get() *\/$/
+DB_CREATE ../include/db.in /^#define DB_CREATE 0x000001 \/* Create file a/
+DB_CURLSN ../include/db.in /^#define DB_CURLSN 9 \/* log_put() *\/$/
+DB_CURRENT ../include/db.in /^#define DB_CURRENT 10 \/* c_get(), c_put(), log_g/
+DB_CXX_NO_EXCEPTIONS ../include/db.in /^#define DB_CXX_NO_EXCEPTIONS 0x000002 \/* C++: re/
+DB_CXX_PRIVATE_ENV ../include/cxx_int.h /^#define DB_CXX_PRIVATE_ENV 0x00000001$/
+DB_DBM_ERROR ../include/db.in /^#define DB_DBM_ERROR 0x008000 \/* Error in DBM\/ND/
+DB_DBM_HSEARCH ../include/db.in /^#define DB_DBM_HSEARCH 0 \/* No historic interfac/
+DB_DBT_APPMALLOC ../include/db.in /^#define DB_DBT_APPMALLOC 0x001 \/* Callback alloca/
+DB_DBT_DUPOK ../include/db.in /^#define DB_DBT_DUPOK 0x040 \/* Insert if duplicat/
+DB_DBT_ISSET ../include/db.in /^#define DB_DBT_ISSET 0x002 \/* Lower level calls /
+DB_DBT_MALLOC ../include/db.in /^#define DB_DBT_MALLOC 0x004 \/* Return in malloc'/
+DB_DBT_PARTIAL ../include/db.in /^#define DB_DBT_PARTIAL 0x008 \/* Partial put\/get/
+DB_DBT_REALLOC ../include/db.in /^#define DB_DBT_REALLOC 0x010 \/* Return in reallo/
+DB_DBT_USERMEM ../include/db.in /^#define DB_DBT_USERMEM 0x020 \/* Return in user's/
+DB_DEF_IOSIZE ../include/db_int.in /^#define DB_DEF_IOSIZE (8 * 1024)$/
+DB_DELETED ../include/db.in /^#define DB_DELETED (-30898)\/* Recovery file mark/
+DB_DIRTY_READ ../include/db.in /^#define DB_DIRTY_READ 0x10000000 \/* Support Dirty/
+DB_DONOTINDEX ../include/db.in /^#define DB_DONOTINDEX (-30999)\/* "Null" return f/
+DB_DUP ../include/db.in /^#define DB_DUP 0x0001 \/* Btree, Hash: duplicate/
+DB_DUPSORT ../include/db.in /^#define DB_DUPSORT 0x0002 \/* Btree, Hash: duplic/
+DB_END_SINGLE_THREAD ../include/mutex.h /^#define DB_END_SINGLE_THREAD$/
+DB_ENTRY ../include/log.h /^} DB_ENTRY;$/
+DB_ENV ../include/db.in /^struct __db_env; typedef struct __db_env DB_ENV;$/
+DB_ENV_CDB ../include/db.in /^#define DB_ENV_CDB 0x00001 \/* DB_INIT_CDB. *\/$/
+DB_ENV_CDB_ALLDB ../include/db.in /^#define DB_ENV_CDB_ALLDB 0x00002 \/* CDB environme/
+DB_ENV_CREATE ../include/db.in /^#define DB_ENV_CREATE 0x00004 \/* DB_CREATE set. /
+DB_ENV_DBLOCAL ../include/db.in /^#define DB_ENV_DBLOCAL 0x00008 \/* DB_ENV allocat/
+DB_ENV_JAVAINFO ../libdb_java/java_info.h /^DB_ENV_JAVAINFO; \/* used with all 'dbjie' functi/
+DB_ENV_LOCKDOWN ../include/db.in /^#define DB_ENV_LOCKDOWN 0x00010 \/* DB_LOCKDOWN s/
+DB_ENV_NOMMAP ../include/db.in /^#define DB_ENV_NOMMAP 0x00020 \/* DB_NOMMAP set. /
+DB_ENV_OPEN_CALLED ../include/db.in /^#define DB_ENV_OPEN_CALLED 0x00040 \/* DBENV->open/
+DB_ENV_PANIC_OK ../include/db.in /^#define DB_ENV_PANIC_OK 0x00080 \/* Removing env,/
+DB_ENV_PRIVATE ../include/db.in /^#define DB_ENV_PRIVATE 0x00100 \/* DB_PRIVATE set/
+DB_ENV_RPCCLIENT ../include/db.in /^#define DB_ENV_RPCCLIENT 0x00200 \/* DB_CLIENT set/
+DB_ENV_RPCCLIENT_GIVEN ../include/db.in /^#define DB_ENV_RPCCLIENT_GIVEN 0x00400 \/* User-su/
+DB_ENV_STANDALONE ../include/db.in /^#define DB_ENV_STANDALONE 0x00800 \/* Test: freest/
+DB_ENV_SYSTEM_MEM ../include/db.in /^#define DB_ENV_SYSTEM_MEM 0x01000 \/* DB_SYSTEM_ME/
+DB_ENV_THREAD ../include/db.in /^#define DB_ENV_THREAD 0x02000 \/* DB_THREAD set. /
+DB_ENV_TXN_NOSYNC ../include/db.in /^#define DB_ENV_TXN_NOSYNC 0x04000 \/* DB_TXN_NOSYN/
+DB_ENV_USER_ALLOC ../include/db.in /^#define DB_ENV_USER_ALLOC 0x08000 \/* User allocat/
+DB_EXCL ../include/db.in /^#define DB_EXCL 0x000400 \/* Exclusive open/
+DB_EXTENT ../include/db.in /^#define DB_EXTENT 0x008000 \/* UNDOC: deali/
+DB_FAST_STAT ../include/db.in /^#define DB_FAST_STAT 11 \/* stat() *\/$/
+DB_FCNTL_LOCKING ../include/db.in /^#define DB_FCNTL_LOCKING 0x000800 \/* UNDOC: /
+DB_FCNTL_OFF_GEN ../include/mutex.h /^#define DB_FCNTL_OFF_GEN 0 \/* Everything else. */
+DB_FCNTL_OFF_LOCK ../include/mutex.h /^#define DB_FCNTL_OFF_LOCK 1 \/* Lock subsystem of/
+DB_FCNTL_OFF_MPOOL ../include/mutex.h /^#define DB_FCNTL_OFF_MPOOL 2 \/* Mpool subsystem /
+DB_FH ../include/db.in /^struct __fh_t; typedef struct __fh_t DB_FH;$/
+DB_FH_NOSYNC ../include/os.h /^#define DB_FH_NOSYNC 0x01 \/* Handle doesn't need/
+DB_FH_VALID ../include/os.h /^#define DB_FH_VALID 0x02 \/* Handle is valid. *\//
+DB_FILE_ID_LEN ../include/db.in /^#define DB_FILE_ID_LEN 20 \/* DB file ID length. /
+DB_FILE_SETUP_CREATE ../db/db.c /^#define DB_FILE_SETUP_CREATE 0x01$/
+DB_FILE_SETUP_ZERO ../db/db.c /^#define DB_FILE_SETUP_ZERO 0x02$/
+DB_FIRST ../include/db.in /^#define DB_FIRST 12 \/* c_get(), log_get() *\/$/
+DB_FLUSH ../include/db.in /^#define DB_FLUSH 13 \/* log_put() *\/$/
+DB_FORCE ../include/db.in /^#define DB_FORCE 0x000004 \/* Force (anythin/
+DB_FTYPE_NOTSET ../include/db_int.in /^#define DB_FTYPE_NOTSET 0 \/* Don't call... *\/$/
+DB_FTYPE_SET ../include/db_int.in /^#define DB_FTYPE_SET -1 \/* Call pgin\/pgout func/
+DB_GET_BOTH ../include/db.in /^#define DB_GET_BOTH 14 \/* get(), c_get() *\/$/
+DB_GET_BOTHC ../include/db.in /^#define DB_GET_BOTHC 15 \/* c_get() (internal) */
+DB_GET_RECNO ../include/db.in /^#define DB_GET_RECNO 16 \/* c_get() *\/$/
+DB_GLOBAL ../include/db_int.in /^#define DB_GLOBAL(v) __db_global_values.v$/
+DB_GLOBALS ../include/db_int.in /^} DB_GLOBALS;$/
+DB_GROW_SIZE ../include/log.h /^#define DB_GROW_SIZE 64$/
+DB_HASHMAGIC ../include/db.in /^#define DB_HASHMAGIC 0x061561$/
+DB_HASHOLDVER ../include/db.in /^#define DB_HASHOLDVER 4 \/* Oldest hash version s/
+DB_HASHVERSION ../include/db.in /^#define DB_HASHVERSION 7 \/* Current hash version/
+DB_HASH_DUP ../include/db_page.h /^#define DB_HASH_DUP 0x01 \/* Duplicates. *\/$/
+DB_HASH_DUPSORT ../include/db_page.h /^#define DB_HASH_DUPSORT 0x04 \/* Duplicates are /
+DB_HASH_STAT ../include/db.in /^struct __db_h_stat; typedef struct __db_h_stat DB_/
+DB_HASH_SUBDB ../include/db_page.h /^#define DB_HASH_SUBDB 0x02 \/* Subdatabases. *\//
+DB_HTONL ../include/db_swap.h /^#define DB_HTONL(p)$/
+DB_ILLEGAL_AFTER_OPEN ../include/db_int.in /^#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \\$/
+DB_ILLEGAL_BEFORE_OPEN ../include/db_int.in /^#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \\$/
+DB_ILLEGAL_IN_ENV ../include/db_int.in /^#define DB_ILLEGAL_IN_ENV(dbp, name) \\$/
+DB_ILLEGAL_METHOD ../include/db_int.in /^#define DB_ILLEGAL_METHOD(dbp, flags) { \\$/
+DB_INCOMPLETE ../include/db.in /^#define DB_INCOMPLETE (-30998)\/* Sync didn't fin/
+DB_INITENV_CDB ../env/env_open.c /^#define DB_INITENV_CDB 0x0001 \/* DB_INIT_CDB *\//
+DB_INITENV_CDB_ALLDB ../env/env_open.c /^#define DB_INITENV_CDB_ALLDB 0x0002 \/* DB_INIT_CD/
+DB_INITENV_LOCK ../env/env_open.c /^#define DB_INITENV_LOCK 0x0004 \/* DB_INIT_LOCK */
+DB_INITENV_LOG ../env/env_open.c /^#define DB_INITENV_LOG 0x0008 \/* DB_INIT_LOG *\//
+DB_INITENV_MPOOL ../env/env_open.c /^#define DB_INITENV_MPOOL 0x0010 \/* DB_INIT_MPOOL /
+DB_INITENV_TXN ../env/env_open.c /^#define DB_INITENV_TXN 0x0020 \/* DB_INIT_TXN *\//
+DB_INITIALIZE_DB_GLOBALS ../env/env_method.c /^#define DB_INITIALIZE_DB_GLOBALS 1$/
+DB_INIT_CDB ../include/db.in /^#define DB_INIT_CDB 0x000400 \/* Concurrent /
+DB_INIT_LOCK ../include/db.in /^#define DB_INIT_LOCK 0x000800 \/* Initialize/
+DB_INIT_LOG ../include/db.in /^#define DB_INIT_LOG 0x001000 \/* Initialize /
+DB_INIT_MPOOL ../include/db.in /^#define DB_INIT_MPOOL 0x002000 \/* Initializ/
+DB_INIT_TXN ../include/db.in /^#define DB_INIT_TXN 0x004000 \/* Initialize /
+DB_IO ../include/os.h /^} DB_IO;$/
+DB_IO_READ ../include/os.h /^#define DB_IO_READ 1$/
+DB_IO_WRITE ../include/os.h /^#define DB_IO_WRITE 2$/
+DB_IS_THREADED ../include/db_int.in /^#define DB_IS_THREADED(dbp) \\$/
+DB_JAVAINFO ../libdb_java/java_info.h /^} DB_JAVAINFO;$/
+DB_JAVA_CALLBACK ../include/db.in /^#define DB_JAVA_CALLBACK (-30897)\/* Exception dur/
+DB_JOINENV ../include/db.in /^#define DB_JOINENV 0x008000 \/* Initialize /
+DB_JOIN_ITEM ../include/db.in /^#define DB_JOIN_ITEM 17 \/* c_get(); do not do pr/
+DB_JOIN_NOSORT ../include/db.in /^#define DB_JOIN_NOSORT 0x0001 \/* Don't try to o/
+DB_KEYEMPTY ../include/db.in /^#define DB_KEYEMPTY (-30997)\/* Key\/data deleted/
+DB_KEYEXIST ../include/db.in /^#define DB_KEYEXIST (-30996)\/* The key\/data pai/
+DB_KEYFIRST ../include/db.in /^#define DB_KEYFIRST 18 \/* c_put() *\/$/
+DB_KEYLAST ../include/db.in /^#define DB_KEYLAST 19 \/* c_put() *\/$/
+DB_KEY_RANGE ../include/db.in /^struct __key_range; typedef struct __key_range DB_/
+DB_LAST ../include/db.in /^#define DB_LAST 20 \/* c_get(), log_get() *\/$/
+DB_LINE ../include/db_int.in /^#define DB_LINE "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=/
+DB_LOCK ../include/db.in /^struct __db_lock_u; typedef struct __db_lock_u DB_/
+DB_LOCKDOWN ../include/db.in /^#define DB_LOCKDOWN 0x010000 \/* Lock memory/
+DB_LOCKER ../include/lock.h /^} DB_LOCKER;$/
+DB_LOCKER_DELETED ../include/lock.h /^#define DB_LOCKER_DELETED 0x0001$/
+DB_LOCKER_DIRTY ../include/lock.h /^#define DB_LOCKER_DIRTY 0x0002$/
+DB_LOCKER_INABORT ../include/lock.h /^#define DB_LOCKER_INABORT 0x0004$/
+DB_LOCKOBJ ../include/lock.h /^} DB_LOCKOBJ;$/
+DB_LOCKREGION ../include/lock.h /^} DB_LOCKREGION;$/
+DB_LOCKREQ ../include/db.in /^struct __db_lockreq; typedef struct __db_lockreq D/
+DB_LOCKTAB ../include/lock.h /^} DB_LOCKTAB;$/
+DB_LOCKVERSION ../include/db.in /^#define DB_LOCKVERSION 1$/
+DB_LOCK_CDB_N ../lock/lock_region.c /^#define DB_LOCK_CDB_N 5$/
+DB_LOCK_DEADLOCK ../include/db.in /^#define DB_LOCK_DEADLOCK (-30995)\/* Deadlock. *\//
+DB_LOCK_DEFAULT ../include/db.in /^#define DB_LOCK_DEFAULT 1 \/* Default policy. *\//
+DB_LOCK_DEFAULT_N ../include/lock.h /^#define DB_LOCK_DEFAULT_N 1000 \/* Default # of lo/
+DB_LOCK_DOALL ../include/lock.h /^#define DB_LOCK_DOALL 0x001$/
+DB_LOCK_FREE ../include/lock.h /^#define DB_LOCK_FREE 0x002$/
+DB_LOCK_IGNOREDEL ../include/lock.h /^#define DB_LOCK_IGNOREDEL 0x004$/
+DB_LOCK_ILOCK ../include/db.in /^struct __db_ilock; typedef struct __db_ilock DB_LO/
+DB_LOCK_INVALIDID ../include/lock.h /^#define DB_LOCK_INVALIDID 0$/
+DB_LOCK_MAXID ../include/lock.h /^#define DB_LOCK_MAXID 0x7fffffff$/
+DB_LOCK_MAXLOCKS ../include/db.in /^#define DB_LOCK_MAXLOCKS 2 \/* Abort txn with maxi/
+DB_LOCK_MINLOCKS ../include/db.in /^#define DB_LOCK_MINLOCKS 3 \/* Abort txn with mini/
+DB_LOCK_MINWRITE ../include/db.in /^#define DB_LOCK_MINWRITE 4 \/* Abort txn with mini/
+DB_LOCK_NOPROMOTE ../include/lock.h /^#define DB_LOCK_NOPROMOTE 0x008$/
+DB_LOCK_NORUN ../include/db.in /^#define DB_LOCK_NORUN 0$/
+DB_LOCK_NOTGRANTED ../include/db.in /^#define DB_LOCK_NOTGRANTED (-30994)\/* Lock unavai/
+DB_LOCK_NOWAIT ../include/db.in /^#define DB_LOCK_NOWAIT 0x01 \/* Don't wait on una/
+DB_LOCK_NOWAITERS ../include/lock.h /^#define DB_LOCK_NOWAITERS 0x020$/
+DB_LOCK_OLDEST ../include/db.in /^#define DB_LOCK_OLDEST 5 \/* Abort oldest transac/
+DB_LOCK_RANDOM ../include/db.in /^#define DB_LOCK_RANDOM 6 \/* Abort random transac/
+DB_LOCK_RECORD ../include/db.in /^#define DB_LOCK_RECORD 0x02 \/* Internal: record /
+DB_LOCK_RIW_N ../lock/lock_region.c /^#define DB_LOCK_RIW_N 9$/
+DB_LOCK_STAT ../include/db.in /^struct __db_lock_stat; typedef struct __db_lock_st/
+DB_LOCK_SWITCH ../include/db.in /^#define DB_LOCK_SWITCH 0x08 \/* Internal: switch /
+DB_LOCK_UNLINK ../include/lock.h /^#define DB_LOCK_UNLINK 0x010$/
+DB_LOCK_UPGRADE ../include/db.in /^#define DB_LOCK_UPGRADE 0x04 \/* Internal: upgrad/
+DB_LOCK_YOUNGEST ../include/db.in /^#define DB_LOCK_YOUNGEST 7 \/* Abort youngest tran/
+DB_LOG ../include/log.h /^struct __db_log; typedef struct __db_log DB_LOG;$/
+DB_LOGFILEID_INVALID ../include/db.in /^#define DB_LOGFILEID_INVALID -1$/
+DB_LOGGING ../include/db_int.in /^#define DB_LOGGING(dbc) \\$/
+DB_LOGMAGIC ../include/db.in /^#define DB_LOGMAGIC 0x040988$/
+DB_LOGOLDVER ../include/db.in /^#define DB_LOGOLDVER 3 \/* Oldest log version sup/
+DB_LOGVERSION ../include/db.in /^#define DB_LOGVERSION 3 \/* Current log version. /
+DB_LOG_STAT ../include/db.in /^struct __db_log_stat; typedef struct __db_log_stat/
+DB_LSN ../include/db.in /^struct __db_lsn; typedef struct __db_lsn DB_LSN;$/
+DB_MAXMMAPSIZE ../mp/mp_fopen.c /^#define DB_MAXMMAPSIZE (10 * 1024 * 1024) \/* 10 M/
+DB_MAX_HANDLES ../include/mutex.h /^#define DB_MAX_HANDLES 100 \/* Mutex slots for h/
+DB_MAX_PAGES ../include/db.in /^#define DB_MAX_PAGES 0xffffffff \/* >= # of pages /
+DB_MAX_PGSIZE ../include/db_int.in /^#define DB_MAX_PGSIZE 0x010000 \/* Maximum page si/
+DB_MAX_RECORDS ../include/db.in /^#define DB_MAX_RECORDS 0xffffffff \/* >= # of reco/
+DB_MINPAGECACHE ../include/db_am.h /^#define DB_MINPAGECACHE 10 \/* Min pages access m/
+DB_MIN_PGSIZE ../include/db_int.in /^#define DB_MIN_PGSIZE 0x000200 \/* Minimum page si/
+DB_MPOOL ../include/mp.h /^struct __db_mpool; typedef struct __db_mpool DB_MP/
+DB_MPOOLFILE ../include/db.in /^struct __db_mpoolfile; typedef struct __db_mpoolfi/
+DB_MPOOL_CLEAN ../include/db.in /^#define DB_MPOOL_CLEAN 0x001 \/* Page is not modi/
+DB_MPOOL_CREATE ../include/db.in /^#define DB_MPOOL_CREATE 0x001 \/* Create a page. /
+DB_MPOOL_DIRTY ../include/db.in /^#define DB_MPOOL_DIRTY 0x002 \/* Page is modified/
+DB_MPOOL_DISCARD ../include/db.in /^#define DB_MPOOL_DISCARD 0x004 \/* Don't cache the/
+DB_MPOOL_FINFO ../include/db.in /^struct __db_mpool_finfo;typedef struct __db_mpool_/
+DB_MPOOL_FSTAT ../include/db.in /^struct __db_mpool_fstat;typedef struct __db_mpool_/
+DB_MPOOL_LAST ../include/db.in /^#define DB_MPOOL_LAST 0x002 \/* Return the last p/
+DB_MPOOL_NEW ../include/db.in /^#define DB_MPOOL_NEW 0x004 \/* Create a new page./
+DB_MPOOL_NEW_GROUP ../include/db.in /^#define DB_MPOOL_NEW_GROUP 0x008 \/* Create a grou/
+DB_MPOOL_STAT ../include/db.in /^struct __db_mpool_stat; typedef struct __db_mpool_/
+DB_MPREG ../include/mp.h /^struct __db_mpreg; typedef struct __db_mpreg DB_MP/
+DB_MULTIPLE ../include/db.in /^#define DB_MULTIPLE 0x20000000 \/* Return multiple/
+DB_MULTIPLE_INIT ../include/db.in /^#define DB_MULTIPLE_INIT(pointer, dbt) \\$/
+DB_MULTIPLE_KEY ../include/db.in /^#define DB_MULTIPLE_KEY 0x40000000 \/* Return mult/
+DB_MULTIPLE_KEY_NEXT ../include/db.in /^#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey,/
+DB_MULTIPLE_NEXT ../include/db.in /^#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, re/
+DB_MULTIPLE_RECNO_NEXT ../include/db.in /^#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno/
+DB_NEEDSPLIT ../include/db.in /^#define DB_NEEDSPLIT (-30896)\/* Page needs to be/
+DB_NEXT ../include/db.in /^#define DB_NEXT 21 \/* c_get(), log_get() *\/$/
+DB_NEXT_DUP ../include/db.in /^#define DB_NEXT_DUP 22 \/* c_get() *\/$/
+DB_NEXT_NODUP ../include/db.in /^#define DB_NEXT_NODUP 23 \/* c_get() *\/$/
+DB_NODUPDATA ../include/db.in /^#define DB_NODUPDATA 24 \/* put(), c_put() *\/$/
+DB_NOMMAP ../include/db.in /^#define DB_NOMMAP 0x000008 \/* Don't mmap un/
+DB_NONBLOCK ../include/db_int.in /^#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSE/
+DB_NOORDERCHK ../include/db.in /^#define DB_NOORDERCHK 0x0002 \/* Skip order/
+DB_NOOVERWRITE ../include/db.in /^#define DB_NOOVERWRITE 25 \/* put() *\/$/
+DB_NOSERVER ../include/db.in /^#define DB_NOSERVER (-30993)\/* Server panic retu/
+DB_NOSERVER_HOME ../include/db.in /^#define DB_NOSERVER_HOME (-30992)\/* Bad home sent/
+DB_NOSERVER_ID ../include/db.in /^#define DB_NOSERVER_ID (-30991)\/* Bad ID sent to/
+DB_NOSYNC ../include/db.in /^#define DB_NOSYNC 26 \/* close() *\/$/
+DB_NOTFOUND ../include/db.in /^#define DB_NOTFOUND (-30990)\/* Key\/data pair no/
+DB_NTOHL ../include/db_swap.h /^#define DB_NTOHL(p)$/
+DB_ODDFILESIZE ../include/db.in /^#define DB_ODDFILESIZE 0x001000 \/* UNDOC: /
+DB_OK_BTREE ../include/db.in /^#define DB_OK_BTREE 0x01$/
+DB_OK_HASH ../include/db.in /^#define DB_OK_HASH 0x02$/
+DB_OK_QUEUE ../include/db.in /^#define DB_OK_QUEUE 0x04$/
+DB_OK_RECNO ../include/db.in /^#define DB_OK_RECNO 0x08$/
+DB_OLD_VERSION ../include/db.in /^#define DB_OLD_VERSION (-30989)\/* Out-of-date ve/
+DB_OPEN_CALLED ../include/db.in /^#define DB_OPEN_CALLED 0x010000 \/* DB->open calle/
+DB_OPFLAGS_MASK ../include/db.in /^#define DB_OPFLAGS_MASK 0x000000ff \/* Mask for op/
+DB_ORDERCHKONLY ../include/db.in /^#define DB_ORDERCHKONLY 0x0004 \/* Only per/
+DB_OSO_CREATE ../include/db_int.in /^#define DB_OSO_CREATE 0x001 \/* POSIX: O_CREAT */
+DB_OSO_EXCL ../include/db_int.in /^#define DB_OSO_EXCL 0x002 \/* POSIX: O_EXCL *\/$/
+DB_OSO_LOG ../include/db_int.in /^#define DB_OSO_LOG 0x004 \/* Opening a log file. /
+DB_OSO_RDONLY ../include/db_int.in /^#define DB_OSO_RDONLY 0x008 \/* POSIX: O_RDONLY */
+DB_OSO_REGION ../include/db_int.in /^#define DB_OSO_REGION 0x010 \/* Opening a region /
+DB_OSO_SEQ ../include/db_int.in /^#define DB_OSO_SEQ 0x020 \/* Expected sequential /
+DB_OSO_TEMP ../include/db_int.in /^#define DB_OSO_TEMP 0x040 \/* Remove after last c/
+DB_OSO_TRUNC ../include/db_int.in /^#define DB_OSO_TRUNC 0x080 \/* POSIX: O_TRUNC *\//
+DB_OS_SEEK ../include/db_int.in /^} DB_OS_SEEK;$/
+DB_PACKAGE_NAME ../libdb_java/java_util.h /^#define DB_PACKAGE_NAME "com\/sleepycat\/db\/"$/
+DB_PAGE_DB_LEN ../include/db_page.h /^#define DB_PAGE_DB_LEN 32$/
+DB_PAGE_LOCK ../include/db.in /^#define DB_PAGE_LOCK 2$/
+DB_PAGE_NOTFOUND ../include/db.in /^#define DB_PAGE_NOTFOUND (-30988)\/* Verify failed/
+DB_PAGE_QUEUE_LEN ../include/db_page.h /^#define DB_PAGE_QUEUE_LEN 0$/
+DB_PGINFO ../include/db_int.in /^} DB_PGINFO;$/
+DB_POSITION ../include/db.in /^#define DB_POSITION 27 \/* c_dup() *\/$/
+DB_POSITIONI ../include/db.in /^#define DB_POSITIONI 28 \/* c_dup() (internal) */
+DB_PREPLIST ../include/db.in /^} DB_PREPLIST;$/
+DB_PREV ../include/db.in /^#define DB_PREV 29 \/* c_get(), log_get() *\/$/
+DB_PREV_NODUP ../include/db.in /^#define DB_PREV_NODUP 30 \/* c_get(), log_get() */
+DB_PRIVATE ../include/db.in /^#define DB_PRIVATE 0x020000 \/* DB_ENV is pr/
+DB_PR_PAGE ../include/db.in /^#define DB_PR_PAGE 0x0008 \/* Show page con/
+DB_PR_RECOVERYTEST ../include/db.in /^#define DB_PR_RECOVERYTEST 0x0010 \/* Recovery/
+DB_QAMMAGIC ../include/db.in /^#define DB_QAMMAGIC 0x042253$/
+DB_QAMOLDVER ../include/db.in /^#define DB_QAMOLDVER 1 \/* Oldest queue version s/
+DB_QAMVERSION ../include/db.in /^#define DB_QAMVERSION 3 \/* Current queue version/
+DB_QUEUE_STAT ../include/db.in /^struct __db_qam_stat; typedef struct __db_qam_stat/
+DB_RDONLY ../include/db.in /^#define DB_RDONLY 0x000010 \/* Read-only (O_/
+DB_RDWRMASTER ../include/db.in /^#define DB_RDWRMASTER 0x002000 \/* UNDOC: a/
+DB_RECNUM ../include/db.in /^#define DB_RECNUM 0x0004 \/* Btree: record number/
+DB_RECORDCOUNT ../include/db.in /^#define DB_RECORDCOUNT 31 \/* stat() *\/$/
+DB_RECORD_LOCK ../include/db.in /^#define DB_RECORD_LOCK 1$/
+DB_RECOVER ../include/db.in /^#define DB_RECOVER 0x000020 \/* Run normal r/
+DB_RECOVER_FATAL ../include/db.in /^#define DB_RECOVER_FATAL 0x040000 \/* Run cat/
+DB_REDO ../include/db.in /^#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL)$/
+DB_REGION_ENV ../include/region.h /^#define DB_REGION_ENV "__db.001" \/* Primary envir/
+DB_REGION_FMT ../include/region.h /^#define DB_REGION_FMT "__db.%03d" \/* Region file /
+DB_REGION_MAGIC ../include/db.in /^#define DB_REGION_MAGIC 0x120897 \/* Environment m/
+DB_REGION_NAME_LENGTH ../include/region.h /^#define DB_REGION_NAME_LENGTH 8 \/* Length of file/
+DB_REGION_NAME_NUM ../include/region.h /^#define DB_REGION_NAME_NUM 5 \/* First digit offse/
+DB_REM_BIG ../include/db_am.h /^#define DB_REM_BIG 0x40$/
+DB_REM_DUP ../include/db_am.h /^#define DB_REM_DUP 0x20$/
+DB_REM_PAGE ../include/db_am.h /^#define DB_REM_PAGE 0x80$/
+DB_RENUMBER ../include/db.in /^#define DB_RENUMBER 0x0008 \/* Recno: renumber on/
+DB_REVSPLITOFF ../include/db.in /^#define DB_REVSPLITOFF 0x0010 \/* Btree: turn off/
+DB_RE_DELIMITER ../include/db.in /^#define DB_RE_DELIMITER 0x020000 \/* Variablen len/
+DB_RE_FIXEDLEN ../include/db.in /^#define DB_RE_FIXEDLEN 0x040000 \/* Fixed-length r/
+DB_RE_PAD ../include/db.in /^#define DB_RE_PAD 0x080000 \/* Fixed-length record/
+DB_RE_RENUMBER ../include/db.in /^#define DB_RE_RENUMBER 0x100000 \/* DB_RENUMBER. */
+DB_RE_SNAPSHOT ../include/db.in /^#define DB_RE_SNAPSHOT 0x200000 \/* DB_SNAPSHOT. */
+DB_RMW ../include/db.in /^#define DB_RMW 0x80000000 \/* Acquire write flag /
+DB_RUNRECOVERY ../include/db.in /^#define DB_RUNRECOVERY (-30987)\/* Panic return. /
+DB_SALVAGE ../include/db.in /^#define DB_SALVAGE 0x0020 \/* Salvage what /
+DB_SERVER_FLAGMASK ../include/db_server_int.h /^#define DB_SERVER_FLAGMASK ( \\$/
+DB_SERVER_IDLETIMEOUT ../include/db_server_int.h /^#define DB_SERVER_IDLETIMEOUT 86400 \/* 1 day *\/$/
+DB_SERVER_MAXTIMEOUT ../include/db_server_int.h /^#define DB_SERVER_MAXTIMEOUT 1200 \/* 20 minutes */
+DB_SERVER_TIMEOUT ../include/db_server_int.h /^#define DB_SERVER_TIMEOUT 300 \/* 5 minutes *\/$/
+DB_SET ../include/db.in /^#define DB_SET 32 \/* c_get(), log_get() *\/$/
+DB_SET_RANGE ../include/db.in /^#define DB_SET_RANGE 33 \/* c_get() *\/$/
+DB_SET_RECNO ../include/db.in /^#define DB_SET_RECNO 34 \/* get(), c_get() *\/$/
+DB_SNAPSHOT ../include/db.in /^#define DB_SNAPSHOT 0x0020 \/* Recno: snapshot th/
+DB_SWAPBYTES ../include/db.in /^#define DB_SWAPBYTES (-30895)\/* Database needs b/
+DB_SYSTEM_MEM ../include/db.in /^#define DB_SYSTEM_MEM 0x080000 \/* Use syste/
+DB_TEST_POSTLOG ../include/db.in /^#define DB_TEST_POSTLOG 4 \/* after logging all /
+DB_TEST_POSTLOGMETA ../include/db.in /^#define DB_TEST_POSTLOGMETA 3 \/* after logging m/
+DB_TEST_POSTOPEN ../include/db.in /^#define DB_TEST_POSTOPEN 2 \/* after __os_open */
+DB_TEST_POSTRENAME ../include/db.in /^#define DB_TEST_POSTRENAME 7 \/* after __os_renam/
+DB_TEST_POSTSYNC ../include/db.in /^#define DB_TEST_POSTSYNC 5 \/* after syncing the /
+DB_TEST_PREOPEN ../include/db.in /^#define DB_TEST_PREOPEN 1 \/* before __os_open */
+DB_TEST_PRERENAME ../include/db.in /^#define DB_TEST_PRERENAME 6 \/* before __os_renam/
+DB_TEST_RECOVERY ../include/debug.h /^#define DB_TEST_RECOVERY(dbp, val, ret, name) /
+DB_TEST_RECOVERY_LABEL ../include/debug.h /^#define DB_TEST_RECOVERY_LABEL db_tr_err:$/
+DB_THREAD ../include/db.in /^#define DB_THREAD 0x000040 \/* Applications /
+DB_TRAIL ../env/env_open.c /^#define DB_TRAIL "BDBXXXXXX"$/
+DB_TRUNCATE ../include/db.in /^#define DB_TRUNCATE 0x004000 \/* Discard exi/
+DB_TXN ../include/db.in /^struct __db_txn; typedef struct __db_txn DB_TXN;$/
+DB_TXNHEAD ../include/db_int.in /^struct __db_txnhead; typedef struct __db_txnhead D/
+DB_TXNLIST ../include/db_int.in /^struct __db_txnlist; typedef struct __db_txnlist D/
+DB_TXNLIST_MAX_PGNO ../db/db_dispatch.c /^#define DB_TXNLIST_MAX_PGNO 8 \/* A nice even numb/
+DB_TXNMGR ../include/txn.h /^struct __db_txnmgr; typedef struct __db_txnmgr DB_/
+DB_TXNREGION ../include/txn.h /^struct __db_txnregion; typedef struct __db_txnregi/
+DB_TXNVERSION ../include/db.in /^#define DB_TXNVERSION 1$/
+DB_TXN_ACTIVE ../include/db.in /^struct __db_txn_active; typedef struct __db_txn_ac/
+DB_TXN_CKP ../include/db.in /^#define DB_TXN_CKP (-30894)\/* Encountered ckp re/
+DB_TXN_NOSYNC ../include/db.in /^#define DB_TXN_NOSYNC 0x000080 \/* Do not sy/
+DB_TXN_NOWAIT ../include/db.in /^#define DB_TXN_NOWAIT 0x000400 \/* Do not wa/
+DB_TXN_STAT ../include/db.in /^struct __db_txn_stat; typedef struct __db_txn_stat/
+DB_TXN_SYNC ../include/db.in /^#define DB_TXN_SYNC 0x000800 \/* Always sync/
+DB_UNDO ../include/db.in /^#define DB_UNDO(op) ((op) == DB_TXN_ABORT || (op) /
+DB_UNUSED_1 ../include/db_am.h /^#define DB_UNUSED_1 0x50$/
+DB_UNUSED_2 ../include/db_am.h /^#define DB_UNUSED_2 0x60$/
+DB_UPDATE_SECONDARY ../include/db.in /^#define DB_UPDATE_SECONDARY 35 \/* c_get(), c_del(/
+DB_UPGRADE ../include/db.in /^#define DB_UPGRADE 0x000400 \/* Upgrading. */
+DB_USE_ENVIRON ../include/db.in /^#define DB_USE_ENVIRON 0x000100 \/* Use the /
+DB_USE_ENVIRON_ROOT ../include/db.in /^#define DB_USE_ENVIRON_ROOT 0x000200 \/* Use the/
+DB_VERB_CHKPOINT ../include/db.in /^#define DB_VERB_CHKPOINT 0x0001 \/* List checkpoin/
+DB_VERB_DEADLOCK ../include/db.in /^#define DB_VERB_DEADLOCK 0x0002 \/* Deadlock detec/
+DB_VERB_RECOVERY ../include/db.in /^#define DB_VERB_RECOVERY 0x0004 \/* Recovery infor/
+DB_VERB_WAITSFOR ../include/db.in /^#define DB_VERB_WAITSFOR 0x0008 \/* Dump waits-for/
+DB_VERIFY ../include/db.in /^#define DB_VERIFY 0x000800 \/* Verifying. */
+DB_VERIFY_BAD ../include/db.in /^#define DB_VERIFY_BAD (-30986)\/* Verify failed; /
+DB_VERIFY_FATAL ../include/db.in /^#define DB_VERIFY_FATAL (-30893)\/* Fatal: DB->ve/
+DB_VERSION_MAJOR ../include/db.in /^#define DB_VERSION_MAJOR @DB_VERSION_MAJOR@$/
+DB_VERSION_MINOR ../include/db.in /^#define DB_VERSION_MINOR @DB_VERSION_MINOR@$/
+DB_VERSION_PATCH ../include/db.in /^#define DB_VERSION_PATCH @DB_VERSION_PATCH@$/
+DB_VERSION_STRING ../include/db.in /^#define DB_VERSION_STRING @DB_VERSION_STRING@$/
+DB_WO_ACCESS ../include/cxx_int.h /^#define DB_WO_ACCESS(_class, _type, _cxx_name, _fi/
+DB_WRITECURSOR ../include/db.in /^#define DB_WRITECURSOR 36 \/* cursor() *\/$/
+DB_WRITELOCK ../include/db.in /^#define DB_WRITELOCK 37 \/* cursor() (internal) */
+DB_XA_CREATE ../include/db.in /^#define DB_XA_CREATE 0x000400 \/* Open in an/
+DB_XIDDATASIZE ../include/db.in /^#define DB_XIDDATASIZE 128$/
+DB_user_BEGIN ../include/db_dispatch.h /^#define DB_user_BEGIN 10000$/
+DCHARHASH ../hash/hash_func.c /^#define DCHARHASH(h, c) ((h) = 0x63c63cd9*(h) + 0x/
+DEBUG_LREAD ../include/debug.h /^#define DEBUG_LREAD(C, T, O, K, A, F) LOG_OP(C, T,/
+DEBUG_LWRITE ../include/debug.h /^#define DEBUG_LWRITE(C, T, O, K, A, F) LOG_OP(C, T/
+DEFMINKEYPAGE ../include/btree.h /^#define DEFMINKEYPAGE (2)$/
+DEF_MAX_TXNS ../include/txn.h /^#define DEF_MAX_TXNS 20 \/* Default max transacti/
+DELETE_GLOBAL_REF ../libdb_java/java_util.h /^#define DELETE_GLOBAL_REF(jnienv, obj) \\$/
+DELOVFL ../include/hash.h /^#define DELOVFL 0x50$/
+DELPAIR ../include/hash.h /^#define DELPAIR 0x30$/
+DISCARD ../btree/bt_cursor.c /^#define DISCARD(dbc, ldiscard, lock, pagep, ret) {/
+DISCARD_CUR ../btree/bt_cursor.c /^#define DISCARD_CUR(dbc, ret) { \\$/
+DO_PREPLIST ../tcl/tcl_txn.c /^#define DO_PREPLIST(count) \\$/
+DUP_SIZE ../include/hash.h /^#define DUP_SIZE(len) ((len) + 2 * sizeof(db_indx_/
+DbEnv_feedback_callback ../libdb_java/java_info.c /^static void DbEnv_feedback_callback(DB_ENV *dbenv,/
+DbEnv_initialize ../libdb_java/java_DbEnv.c /^static void DbEnv_initialize(JNIEnv *jnienv, DB_EN/
+DbEnv_recovery_init_callback ../libdb_java/java_info.c /^static int DbEnv_recovery_init_callback(DB_ENV *db/
+DbEnv_tx_recover_callback ../libdb_java/java_info.c /^static int DbEnv_tx_recover_callback(DB_ENV *dbenv/
+DbException ../cxx/cxx_except.cpp /^DbException::~DbException()$/
+DbLock ../cxx/cxx_lock.cpp /^DbLock::DbLock()$/
+DbMemoryException ../cxx/cxx_except.cpp /^DbMemoryException::~DbMemoryException()$/
+DbMpoolFile ../cxx/cxx_mpool.cpp /^DbMpoolFile::~DbMpoolFile()$/
+DbTxn ../cxx/cxx_txn.cpp /^DbTxn::~DbTxn()$/
+Db_append_recno_callback ../libdb_java/java_info.c /^static int Db_append_recno_callback(DB *db, DBT *d/
+Db_assoc_callback ../libdb_java/java_info.c /^static int Db_assoc_callback(DB *db,$/
+Db_bt_compare_callback ../libdb_java/java_info.c /^static int Db_bt_compare_callback(DB *db, const DB/
+Db_bt_prefix_callback ../libdb_java/java_info.c /^static size_t Db_bt_prefix_callback(DB *db, const /
+Db_dup_compare_callback ../libdb_java/java_info.c /^static int Db_dup_compare_callback(DB *db, const D/
+Db_feedback_callback ../libdb_java/java_info.c /^static void Db_feedback_callback(DB *db, int opcod/
+Db_h_hash_callback ../libdb_java/java_info.c /^static u_int32_t Db_h_hash_callback(DB *db, const /
+Db_tcl_Init ../tcl/tcl_db_pkg.c /^Db_tcl_Init(interp)$/
+EMSG ../clib/getopt.c /^#define EMSG ""$/
+ENTRY ../include/db.in /^} ENTRY;$/
+ENV_ILLEGAL_AFTER_OPEN ../include/db_int.in /^#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \\$/
+ENV_REQUIRES_CONFIG ../include/db_int.in /^#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flag/
+EPG ../include/btree.h /^struct __epg; typedef struct __epg EPG;$/
+EPRINT ../include/db_verify.h /^#define EPRINT(x) \\$/
+FAST_HASH ../lock/lock_util.c /^#define FAST_HASH(P) { \\$/
+FLAG_CHECK ../include/tcl_db.h /^#define FLAG_CHECK(flag) \\$/
+FLAG_CHECK2 ../include/tcl_db.h /^#define FLAG_CHECK2(flag,val) \\$/
+FLD_CLR ../include/db_int.in /^#define FLD_CLR(fld, f) (fld) &= ~(f)$/
+FLD_ISSET ../include/db_int.in /^#define FLD_ISSET(fld, f) ((fld) & (f))$/
+FLD_SET ../include/db_int.in /^#define FLD_SET(fld, f) (fld) |= (f)$/
+FMAP_ENTRIES ../mp/mp_stat.c /^#define FMAP_ENTRIES 200 \/* Files we map. *\/$/
+FN ../include/db_int.in /^} FN;$/
+FNAME ../include/log.h /^struct __fname; typedef struct __fname FNAME;$/
+FREE_IF_NEEDED ../include/db_int.in /^#define FREE_IF_NEEDED(sdbp, dbt) \\$/
+F_CLR ../include/db_int.in /^#define F_CLR(p, f) (p)->flags &= ~(f)$/
+F_ISSET ../include/db_int.in /^#define F_ISSET(p, f) ((p)->flags & (f))$/
+F_SET ../include/db_int.in /^#define F_SET(p, f) (p)->flags |= (f)$/
+GET_BINTERNAL ../include/db_page.h /^#define GET_BINTERNAL(pg, indx) \\$/
+GET_BKEYDATA ../include/db_page.h /^#define GET_BKEYDATA(pg, indx) \\$/
+GET_BOVERFLOW ../include/db_page.h /^#define GET_BOVERFLOW(pg, indx) \\$/
+GET_PAGE ../db/db_upg_opd.c /^#define GET_PAGE(dbp, fhp, pgno, page) { \\$/
+GET_RINTERNAL ../include/db_page.h /^#define GET_RINTERNAL(pg, indx) \\$/
+GIGABYTE ../include/db_int.in /^#define GIGABYTE 1073741824$/
+GLOB_CHAR ../tcl/tcl_internal.c /^#define GLOB_CHAR(c) ((c) == '*' || (c) == '?')$/
+GUARD_BYTE ../include/debug.h /^#define GUARD_BYTE 0xdc$/
+HASH ../include/hash.h /^} HASH;$/
+HASH4 ../hash/hash_func.c /^#define HASH4 HASH4b$/
+HASH4a ../hash/hash_func.c /^#define HASH4a h = (h << 5) - h + *k++;$/
+HASH4b ../hash/hash_func.c /^#define HASH4b h = (h << 5) + h + *k++;$/
+HASHC ../hash/hash_func.c /^#define HASHC n = *k++ + 65599 * n$/
+HASHHDR ../include/db_upgrade.h /^} HASHHDR;$/
+HASHINFO ../include/db_185.in /^} HASHINFO;$/
+HASHINSERT ../include/db_shash.h /^#define HASHINSERT(begin, ndx, type, field, elt) d/
+HASHMAGIC ../include/db_185.in /^#define HASHMAGIC 0x061561$/
+HASHREMOVE_EL ../include/db_shash.h /^#define HASHREMOVE_EL(begin, ndx, type, field, obj/
+HASHVERSION ../include/db_185.in /^#define HASHVERSION 2$/
+HASH_CURSOR ../include/hash.h /^} HASH_CURSOR;$/
+HASH_UNUSED1 ../include/hash.h /^#define HASH_UNUSED1 0x60$/
+HASH_UNUSED2 ../include/hash.h /^#define HASH_UNUSED2 0x70$/
+HDR ../include/log.h /^struct __hdr; typedef struct __hdr HDR;$/
+HKEYDATA ../include/db_page.h /^} HKEYDATA;$/
+HKEYDATA_DATA ../include/db_page.h /^#define HKEYDATA_DATA(p) (((u_int8_t *)p) + SSZA(H/
+HKEYDATA_PSIZE ../include/db_page.h /^#define HKEYDATA_PSIZE(len) \\$/
+HKEYDATA_SIZE ../include/db_page.h /^#define HKEYDATA_SIZE(len) \\$/
+HMETA ../include/db_page.h /^} HMETA31, HMETA;$/
+HMETA30 ../include/db_upgrade.h /^} HMETA30;$/
+HOFFDUP ../include/db_page.h /^} HOFFDUP;$/
+HOFFDUP_PGNO ../include/db_page.h /^#define HOFFDUP_PGNO(p) (((u_int8_t *)p) + SSZ(HO/
+HOFFDUP_SIZE ../include/db_page.h /^#define HOFFDUP_SIZE (sizeof(HOFFDUP))$/
+HOFFPAGE ../include/db_page.h /^} HOFFPAGE;$/
+HOFFPAGE_PGNO ../include/db_page.h /^#define HOFFPAGE_PGNO(p) (((u_int8_t *)p) + SSZ(HO/
+HOFFPAGE_PSIZE ../include/db_page.h /^#define HOFFPAGE_PSIZE (HOFFPAGE_SIZE + sizeof(db/
+HOFFPAGE_SIZE ../include/db_page.h /^#define HOFFPAGE_SIZE (sizeof(HOFFPAGE))$/
+HOFFPAGE_TLEN ../include/db_page.h /^#define HOFFPAGE_TLEN(p) (((u_int8_t *)p) + SSZ(HO/
+HOFFSET ../include/db_page.h /^#define HOFFSET(p) (((PAGE *)p)->hf_offset)$/
+HPAGE_PTYPE ../include/db_page.h /^#define HPAGE_PTYPE(p) (*(u_int8_t *)p)$/
+HPAGE_TYPE ../include/db_page.h /^#define HPAGE_TYPE(pg, indx) (*P_ENTRY(pg, indx))$/
+H_CONTINUE ../include/hash.h /^#define H_CONTINUE 0x0001 \/* Join--search strict/
+H_DATAINDEX ../include/db_page.h /^#define H_DATAINDEX(indx) ((indx) + 1)$/
+H_DELETED ../include/hash.h /^#define H_DELETED 0x0002 \/* Cursor item is delet/
+H_DIRTY ../include/hash.h /^#define H_DIRTY 0x0004 \/* Meta-data page needs /
+H_DUPLICATE ../include/db_page.h /^#define H_DUPLICATE 2 \/* Duplicate key\/data item/
+H_DUPONLY ../include/hash.h /^#define H_DUPONLY 0x0008 \/* Dups only; do not ch/
+H_EXPAND ../include/hash.h /^#define H_EXPAND 0x0010 \/* Table expanded. *\/$/
+H_ISDUP ../include/hash.h /^#define H_ISDUP 0x0020 \/* Cursor is within dupl/
+H_KEYDATA ../include/db_page.h /^#define H_KEYDATA 1 \/* Key\/data item. *\/$/
+H_KEYINDEX ../include/db_page.h /^#define H_KEYINDEX(indx) (indx)$/
+H_NEXT_NODUP ../include/hash.h /^#define H_NEXT_NODUP 0x0040 \/* Get next non-dup /
+H_NOMORE ../include/hash.h /^#define H_NOMORE 0x0080 \/* No more entries in bu/
+H_NUMPAIRS ../include/db_page.h /^#define H_NUMPAIRS(pg) (NUM_ENT(pg) \/ 2)$/
+H_OFFDUP ../include/db_page.h /^#define H_OFFDUP 4 \/* Overflow page of duplicates/
+H_OFFPAGE ../include/db_page.h /^#define H_OFFPAGE 3 \/* Overflow key\/data item. */
+H_OK ../include/hash.h /^#define H_OK 0x0100 \/* Request succeeded. *\/$/
+H_PAIRDATA ../include/db_page.h /^#define H_PAIRDATA(pg, indx) P_ENTRY(pg, H_DATAIN/
+H_PAIRKEY ../include/db_page.h /^#define H_PAIRKEY(pg, indx) P_ENTRY(pg, H_KEYINDE/
+H_PAIRSIZE ../include/db_page.h /^#define H_PAIRSIZE(pg, psize, indx) \\$/
+ILLEGAL_SIZE ../env/db_salloc.c /^#define ILLEGAL_SIZE 1$/
+INFOTYPE ../include/tcl_db.h /^enum INFOTYPE {$/
+INITIAL_DEAD_ALLOC ../lock/lock_deadlock.c /^#define INITIAL_DEAD_ALLOC 8$/
+INP_OFFSET ../db/db_vrfy.c /^#define INP_OFFSET(h, i) \\$/
+INVALID_LSNMSG ../tcl/tcl_internal.c /^#define INVALID_LSNMSG "Invalid LSN with %d parts./
+INVALID_ORDER ../include/btree.h /^#define INVALID_ORDER 0$/
+INVALID_REGION_ID ../include/region.h /^#define INVALID_REGION_ID 0 \/* Out-of-band region/
+INVALID_REGION_SEGID ../include/region.h /^#define INVALID_REGION_SEGID -1 \/* Segment IDs ar/
+INVALID_ROFF ../include/region.h /^#define INVALID_ROFF 0$/
+ISBIG ../include/hash.h /^#define ISBIG(I, N) (((N) > ((I)->hdr->dbmeta.page/
+ISDOT ../clib/getcwd.c /^#define ISDOT(dp) \\$/
+ISINTERNAL ../include/btree.h /^#define ISINTERNAL(p) (TYPE(p) == P_IBTREE || TYPE/
+ISLEAF ../include/btree.h /^#define ISLEAF(p) (TYPE(p) == P_LBTREE || \\$/
+ISSET_MAP ../lock/lock_deadlock.c /^#define ISSET_MAP(M, N) ((M)[(N) \/ 32] & (1 << (N/
+ISTEMPORARY ../mp/mp_fopen.c /^#define ISTEMPORARY (path == NULL)$/
+IS_BTREE_PAGE ../btree/bt_rec.c /^#define IS_BTREE_PAGE(pagep) \\$/
+IS_CUR_DELETED ../btree/bt_cursor.c /^#define IS_CUR_DELETED(dbc) \\$/
+IS_CUR_DUPLICATE ../btree/bt_cursor.c /^#define IS_CUR_DUPLICATE(dbc, orig_pgno, orig_indx/
+IS_DELETED ../btree/bt_cursor.c /^#define IS_DELETED(page, indx) \\$/
+IS_DUPLICATE ../btree/bt_cursor.c /^#define IS_DUPLICATE(dbc, i1, i2) \\$/
+IS_HELP ../include/tcl_db.h /^#define IS_HELP(s) \\$/
+IS_INITIALIZED ../include/db_int.in /^#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno/
+IS_MAX_LSN ../include/db_int.in /^#define IS_MAX_LSN(LSN) \\$/
+IS_RECOVERING ../include/db_int.in /^#define IS_RECOVERING(dbenv) \\$/
+IS_SUBDB_SETUP ../db/db.c /^#define IS_SUBDB_SETUP (meta_pgno != PGNO_BASE_MD)/
+IS_SUBTRANSACTION ../include/db_int.in /^#define IS_SUBTRANSACTION(txn) \\$/
+IS_VALID_PAGESIZE ../include/db_verify.h /^#define IS_VALID_PAGESIZE(x) \\$/
+IS_VALID_PGNO ../include/db_verify.h /^#define IS_VALID_PGNO(x) ((x) <= vdp->last_pgno)$/
+IS_WRITELOCK ../include/lock.h /^#define IS_WRITELOCK(m) \\$/
+IS_XA_TXN ../txn/txn_rec.c /^#define IS_XA_TXN(R) (R->xid.size != 0)$/
+IS_ZERO_LSN ../include/db_int.in /^#define IS_ZERO_LSN(LSN) ((LSN).file == 0)$/
+ITEM_BEGIN ../btree/bt_verify.c /^#define ITEM_BEGIN 1$/
+ITEM_END ../btree/bt_verify.c /^#define ITEM_END 2$/
+JAVADB_API_BEGIN ../libdb_java/java_util.h /^#define JAVADB_API_BEGIN(db, jthis) \\$/
+JAVADB_API_END ../libdb_java/java_util.h /^#define JAVADB_API_END(db) \\$/
+JAVADB_ENV_API_BEGIN ../libdb_java/java_util.h /^#define JAVADB_ENV_API_BEGIN(dbenv, jthis) \\$/
+JAVADB_ENV_API_END ../libdb_java/java_util.h /^#define JAVADB_ENV_API_END(dbenv) \\$/
+JAVADB_RO_ACCESS ../libdb_java/java_util.h /^#define JAVADB_RO_ACCESS(j_class, j_fieldtype, j_f/
+JAVADB_RW_ACCESS ../libdb_java/java_util.h /^#define JAVADB_RW_ACCESS(j_class, j_fieldtype, j_f/
+JAVADB_WO_ACCESS ../libdb_java/java_util.h /^#define JAVADB_WO_ACCESS(j_class, j_fieldtype, j_f/
+JAVADB_WO_ACCESS_METHOD ../libdb_java/java_Db.c /^JAVADB_WO_ACCESS_METHOD(Db, jint, flags, DB, flags/
+JAVADB_WO_ACCESS_STRING ../libdb_java/java_DbEnv.c /^JAVADB_WO_ACCESS_STRING(DbEnv, data_1dir, D/
+JDBT ../libdb_java/java_locked.h /^} JDBT;$/
+JOIN_CURSOR ../include/db_join.h /^} JOIN_CURSOR;$/
+JOIN_RETRY ../include/db_join.h /^#define JOIN_RETRY 0x01 \/* Error on primary get; /
+JSTR ../libdb_java/java_locked.h /^} JSTR;$/
+Java_com_sleepycat_db_DbUtil_am_1big_1endian ../libdb_java/java_DbUtil.c /^Java_com_sleepycat_db_DbUtil_am_1big_1endian (JNIE/
+LCK_ALWAYS ../include/db_am.h /^#define LCK_ALWAYS 0x02 \/* Lock even for off page/
+LCK_COUPLE ../include/db_am.h /^#define LCK_COUPLE 0x01 \/* Lock Couple *\/$/
+LCK_ROLLBACK ../include/db_am.h /^#define LCK_ROLLBACK 0x04 \/* Lock even if in roll/
+LEAFLEVEL ../include/db_page.h /^#define LEAFLEVEL 1$/
+LEN_HDATA ../include/db_page.h /^#define LEN_HDATA(p, psize, indx) LEN_HKEYDATA(p, /
+LEN_HITEM ../include/db_page.h /^#define LEN_HITEM(pg, pgsize, indx) \\$/
+LEN_HKEY ../include/db_page.h /^#define LEN_HKEY(p, psize, indx) LEN_HKEYDATA(p, p/
+LEN_HKEYDATA ../include/db_page.h /^#define LEN_HKEYDATA(pg, psize, indx) \\$/
+LEVEL ../include/db_page.h /^#define LEVEL(p) (((PAGE *)p)->level)$/
+LFNAME ../include/log.h /^#define LFNAME "log.%010d" \/* Log file name temp/
+LFNAME_V1 ../include/log.h /^#define LFNAME_V1 "log.%05d" \/* Log file name tem/
+LFPREFIX ../include/log.h /^#define LFPREFIX "log." \/* Log file name prefix./
+LF_CLR ../include/db_int.in /^#define LF_CLR(f) (flags &= ~(f))$/
+LF_ISSET ../include/db_int.in /^#define LF_ISSET(f) (flags & (f))$/
+LF_SET ../include/db_int.in /^#define LF_SET(f) (flags |= (f))$/
+LG_BASE_REGION_SIZE ../include/log.h /^#define LG_BASE_REGION_SIZE (60 * 1024) \/* 60 KB./
+LG_BSIZE_DEFAULT ../include/log.h /^#define LG_BSIZE_DEFAULT (32 * 1024) \/* 32 KB. */
+LG_MAINT_SIZE ../include/log.h /^#define LG_MAINT_SIZE (sizeof(roff_t) * DB_MAX_HAN/
+LG_MAX_DEFAULT ../include/log.h /^#define LG_MAX_DEFAULT (10 * MEGABYTE) \/* 10 MB./
+LIST_ENTRY ../include/queue.h /^#define LIST_ENTRY(type) \\$/
+LIST_FIRST ../include/queue.h /^#define LIST_FIRST(head) ((head)->lh_first)$/
+LIST_HEAD ../include/queue.h /^#define LIST_HEAD(name, type) \\$/
+LIST_INCREMENT ../log/log_archive.c /^#define LIST_INCREMENT 64$/
+LIST_INIT ../include/queue.h /^#define LIST_INIT(head) { \\$/
+LIST_INSERT_AFTER ../include/queue.h /^#define LIST_INSERT_AFTER(listelm, elm, field) do /
+LIST_INSERT_BEFORE ../include/queue.h /^#define LIST_INSERT_BEFORE(listelm, elm, field) do/
+LIST_INSERT_HEAD ../include/queue.h /^#define LIST_INSERT_HEAD(head, elm, field) do { /
+LIST_NEXT ../include/queue.h /^#define LIST_NEXT(elm, field) ((elm)->field.le_ne/
+LIST_REMOVE ../include/queue.h /^#define LIST_REMOVE(elm, field) do { \\$/
+LOAD_ACTUAL_MUTEX_CODE ../mutex/mut_tas.c /^#define LOAD_ACTUAL_MUTEX_CODE$/
+LOCKER_FREEABLE ../include/lock.h /^#define LOCKER_FREEABLE(lp) \\$/
+LOCKER_LOCK ../include/lock.h /^#define LOCKER_LOCK(lt, reg, locker, ndx) \\$/
+LOCKING_ON ../include/db_int.in /^#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != N/
+LOCKREGION ../include/lock.h /^#define LOCKREGION(dbenv, lt) R_LOCK((dbenv), &(l/
+LOCK_DUMP_ALL ../lock/lock_stat.c /^#define LOCK_DUMP_ALL 0x01f \/* Display all. *\//
+LOCK_DUMP_CONF ../lock/lock_stat.c /^#define LOCK_DUMP_CONF 0x001 \/* Conflict matrix/
+LOCK_DUMP_FREE ../lock/lock_stat.c /^#define LOCK_DUMP_FREE 0x002 \/* Display lock fr/
+LOCK_DUMP_LOCKERS ../lock/lock_stat.c /^#define LOCK_DUMP_LOCKERS 0x004 \/* Display locke/
+LOCK_DUMP_MEM ../lock/lock_stat.c /^#define LOCK_DUMP_MEM 0x008 \/* Display region m/
+LOCK_DUMP_OBJECTS ../lock/lock_stat.c /^#define LOCK_DUMP_OBJECTS 0x010 \/* Display objec/
+LOCK_INIT ../include/lock.h /^#define LOCK_INIT(lock) ((lock).off = LOCK_INVALID/
+LOCK_INVALID ../include/lock.h /^#define LOCK_INVALID INVALID_ROFF$/
+LOCK_ISSET ../include/lock.h /^#define LOCK_ISSET(lock) ((lock).off != LOCK_INVAL/
+LOFFSET ../include/db_page.h /^#define LOFFSET(pg) (P_OVERHEAD + NUM_ENT(pg) * s/
+LOG ../include/log.h /^struct __log; typedef struct __log LOG;$/
+LOGGING_ON ../include/db_int.in /^#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != N/
+LOGP ../include/log.h /^struct __log_persist; typedef struct __log_persist/
+LOG_CHECKPOINT ../include/log.h /^#define LOG_CHECKPOINT 1 \/* Checkpoint: file nam/
+LOG_CLOSE ../include/log.h /^#define LOG_CLOSE 2 \/* File close. *\/$/
+LOG_OP ../include/debug.h /^#define LOG_OP(C, T, O, K, A, F) { \\$/
+LOG_OPEN ../include/log.h /^#define LOG_OPEN 3 \/* File open. *\/$/
+LOG_RCLOSE ../include/log.h /^#define LOG_RCLOSE 4 \/* File close after recover/
+LSN ../include/db_page.h /^#define LSN(p) (((PAGE *)p)->lsn)$/
+LSN_NOT_LOGGED ../include/db_int.in /^#define LSN_NOT_LOGGED(LSN) do { \\$/
+MAKE_STAT_LSN ../tcl/tcl_txn.c /^#define MAKE_STAT_LSN(s, lsn) \\$/
+MAKE_STAT_STRLIST ../include/tcl_db.h /^#define MAKE_STAT_STRLIST(s,s1) \\$/
+MAP_FAILED ../mutex/tm.c /^#define MAP_FAILED (MUTEX *)-1$/
+MAP_FILE ../mutex/tm.c /^#define MAP_FILE 0$/
+MAXBQUALSIZE ../include/xa.h /^#define MAXBQUALSIZE 64 \/* maximum size in byte/
+MAXBTREELEVEL ../include/db_page.h /^#define MAXBTREELEVEL 255$/
+MAXGTRIDSIZE ../include/xa.h /^#define MAXGTRIDSIZE 64 \/* maximum size in byte/
+MAXINFOSIZE ../include/xa.h /^#define MAXINFOSIZE 256 \/* maximum size in bytes/
+MAXPATHLEN ../include/db_int.in /^#define MAXPATHLEN 1024$/
+MAX_ID ../include/tcl_db.h /^#define MAX_ID 8 \/* Maximum number of sub-id's w/
+MAX_LSN ../include/db_int.in /^#define MAX_LSN(LSN) do { \\$/
+MAX_LSN_TO_TEXT ../db/db.c /^#define MAX_LSN_TO_TEXT 21$/
+MAX_PAGE_NUMBER ../include/db_185.in /^#define MAX_PAGE_NUMBER 0xffffffff \/* >= # of pag/
+MAX_PAGE_OFFSET ../include/db_185.in /^#define MAX_PAGE_OFFSET 65535 \/* >= # of bytes i/
+MAX_REC_NUMBER ../include/db_185.in /^#define MAX_REC_NUMBER 0xffffffff \/* >= # of reco/
+MEGABYTE ../include/db_int.in /^#define MEGABYTE 1048576$/
+MEMP_FREMOVE ../mp/mp_fopen.c /^#define MEMP_FREMOVE(mfp) { \\$/
+MINFILL ../include/hash.h /^#define MINFILL 4$/
+MPFARRAY ../include/qam.h /^} MPFARRAY;$/
+MPOOL ../include/mp.h /^struct __mpool; typedef struct __mpool MPOOL;$/
+MPOOLFILE ../include/mp.h /^struct __mpoolfile; typedef struct __mpoolfile MPO/
+MPOOL_DUMP_ALL ../mp/mp_stat.c /^#define MPOOL_DUMP_ALL 0x07 \/* Debug all. *\/$/
+MPOOL_DUMP_HASH ../mp/mp_stat.c /^#define MPOOL_DUMP_HASH 0x01 \/* Debug hash chai/
+MPOOL_DUMP_LRU ../mp/mp_stat.c /^#define MPOOL_DUMP_LRU 0x02 \/* Debug LRU chains/
+MPOOL_DUMP_MEM ../mp/mp_stat.c /^#define MPOOL_DUMP_MEM 0x04 \/* Debug region mem/
+MPOOL_ON ../include/db_int.in /^#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NU/
+MP_CAN_MMAP ../include/mp.h /^#define MP_CAN_MMAP 0x01 \/* If the file can be m/
+MP_DEADFILE ../include/mp.h /^#define MP_DEADFILE 0x02 \/* Dirty pages can simp/
+MP_EXTENT ../include/mp.h /^#define MP_EXTENT 0x04 \/* Extent file. *\/$/
+MP_FLUSH ../include/mp.h /^#define MP_FLUSH 0x01 \/* Was opened to flush a b/
+MP_LSN_RETRY ../include/mp.h /^#define MP_LSN_RETRY 0x01 \/* Retry all BH_WRITE /
+MP_READONLY ../include/mp.h /^#define MP_READONLY 0x02 \/* File is readonly. */
+MP_TEMP ../include/mp.h /^#define MP_TEMP 0x08 \/* Backing file is a tempo/
+MP_UNLINK ../include/mp.h /^#define MP_UNLINK 0x10 \/* Unlink file on last cl/
+MP_UPGRADE ../include/mp.h /^#define MP_UPGRADE 0x04 \/* File descriptor is re/
+MP_UPGRADE_FAIL ../include/mp.h /^#define MP_UPGRADE_FAIL 0x08 \/* Upgrade wasn't p/
+MSG ../mutex/mut_fcntl.c /^#define MSG "mutex_unlock: ERROR: released lock t/
+MSG1 ../mutex/mut_pthread.c /^#define MSG1 "mutex_lock: ERROR: lock currently i/
+MSG2 ../mutex/mut_pthread.c /^#define MSG2 "mutex_unlock: ERROR: lock already u/
+MSGBUF_LEN ../lock/lock_deadlock.c /^#define MSGBUF_LEN ((nlockers + 1) * 10 + 64)$/
+MSG_SIZE ../include/tcl_db.h /^#define MSG_SIZE 100 \/* Message size *\/$/
+MS_PER_SEC ../include/db_int.in /^#define MS_PER_SEC 1000 \/* Milliseconds in a sec/
+MUTEX ../include/db_int.in /^struct __mutex_t; typedef struct __mutex_t MUTEX;$/
+MUTEX_ALIGN ../include/mutex.h /^#define MUTEX_ALIGN sizeof(int)$/
+MUTEX_DESTROY ../include/mutex.h /^#define MUTEX_DESTROY(x) sema_destroy(x)$/
+MUTEX_FIELDS ../include/mutex.h /^#define MUTEX_FIELDS \\$/
+MUTEX_IGNORE ../include/mutex.h /^#define MUTEX_IGNORE 0x001 \/* Ignore, no lock re/
+MUTEX_INIT ../include/mutex.h /^#define MUTEX_INIT(x) 0$/
+MUTEX_INITED ../include/mutex.h /^#define MUTEX_INITED 0x002 \/* Mutex is successfu/
+MUTEX_LOCK ../include/mutex.h /^#define MUTEX_LOCK(dbenv, mp, fh) \\$/
+MUTEX_NO_MALLOC_LOCKS ../include/mutex.h /^#define MUTEX_NO_MALLOC_LOCKS$/
+MUTEX_NO_SHMGET_LOCKS ../include/mutex.h /^#define MUTEX_NO_SHMGET_LOCKS$/
+MUTEX_SELF_BLOCK ../include/mutex.h /^#define MUTEX_SELF_BLOCK 0x004 \/* Must block self/
+MUTEX_SET ../include/mutex.h /^#define MUTEX_SET(x) (!_check_lock(x, 0, 1))$/
+MUTEX_SYSTEM_RESOURCES ../include/mutex.h /^#define MUTEX_SYSTEM_RESOURCES$/
+MUTEX_THREAD ../include/mutex.h /^#define MUTEX_THREAD 0x008 \/* Thread-only mutex./
+MUTEX_THREAD_LOCK ../include/mutex.h /^#define MUTEX_THREAD_LOCK(dbenv, mp) \\$/
+MUTEX_THREAD_UNLOCK ../include/mutex.h /^#define MUTEX_THREAD_UNLOCK(dbenv, mp) \\$/
+MUTEX_UNLOCK ../include/mutex.h /^#define MUTEX_UNLOCK(dbenv, mp) \\$/
+MUTEX_UNSET ../include/mutex.h /^#define MUTEX_UNSET(x) _clear_lock(x, 0)$/
+M_16_SWAP ../include/db_swap.h /^#define M_16_SWAP(a) { \\$/
+M_32_SWAP ../include/db_swap.h /^#define M_32_SWAP(a) { \\$/
+Mtm ../mutex/tm.c /^main(argc, argv)$/
+NBUCKET ../include/mp.h /^#define NBUCKET(mc, mf_offset, pgno) \\$/
+NCACHE ../include/mp.h /^#define NCACHE(mp, pgno) \\$/
+NCACHED ../include/db_page.h /^#define NCACHED 32 \/* number of spare points *\//
+NCACHED2X ../include/db_upgrade.h /^#define NCACHED2X 32 \/* number of spare points */
+NCACHED30 ../include/db_upgrade.h /^#define NCACHED30 32 \/* number of spare points */
+NDX_INVALID ../include/hash.h /^#define NDX_INVALID 0xFFFF$/
+NEW_GLOBAL_REF ../libdb_java/java_util.h /^#define NEW_GLOBAL_REF(jnienv, obj) \\$/
+NEXT_PGNO ../include/db_page.h /^#define NEXT_PGNO(p) (((PAGE *)p)->next_pgno)$/
+NOT_IMPLEMENTED ../libdb_java/java_util.h /^#define NOT_IMPLEMENTED(str) \\$/
+NUM_ENT ../include/db_page.h /^#define NUM_ENT(p) (((PAGE *)p)->entries)$/
+OBJECT_LOCK ../include/lock.h /^#define OBJECT_LOCK(lt, reg, obj, ndx) \\$/
+OBJ_LINKS_VALID ../include/lock.h /^#define OBJ_LINKS_VALID(L) ((L)->links.stqe_prev !/
+OKFLAGS ../btree/bt_verify.c /^#define OKFLAGS (DB_AGGRESSIVE | DB_NOORDERCHK | D/
+OKFLAGS_CDB ../env/env_open.c /^#define OKFLAGS_CDB \\$/
+OK_FLAGS ../env/env_method.c /^#define OK_FLAGS (DB_CDB_ALLDB | DB_NOMMAP | DB_TX/
+OPCODE_OF ../include/hash.h /^#define OPCODE_OF(N) (N & ~PAIR_MASK)$/
+OR_MAP ../lock/lock_deadlock.c /^#define OR_MAP(D, S, N) { \\$/
+OS_ROUNDOFF ../include/region.h /^#define OS_ROUNDOFF(i, s) { \\$/
+OS_VMPAGESIZE ../include/region.h /^#define OS_VMPAGESIZE (8 * 1024)$/
+OS_VMROUNDOFF ../include/region.h /^#define OS_VMROUNDOFF(i) OS_ROUNDOFF(i, OS_VMPAGES/
+OV_LEN ../include/db_page.h /^#define OV_LEN(p) (((PAGE *)p)->hf_offset)$/
+OV_REF ../include/db_page.h /^#define OV_REF(p) (((PAGE *)p)->entries)$/
+O_ACCMODE ../os/os_oflags.c /^#define O_ACCMODE (O_RDONLY | O_RDWR | O_WRONLY)$/
+O_INDX ../include/db_page.h /^#define O_INDX 1$/
+OpKind ../libdb_java/java_locked.h /^} OpKind;$/
+PAGE ../include/db_page.h /^} PAGE;$/
+PAIR_DATAMASK ../include/hash.h /^#define PAIR_DATAMASK 0x2$/
+PAIR_DUPMASK ../include/hash.h /^#define PAIR_DUPMASK 0x4$/
+PAIR_ISDATABIG ../include/hash.h /^#define PAIR_ISDATABIG(N) (N & PAIR_DATAMASK)$/
+PAIR_ISDATADUP ../include/hash.h /^#define PAIR_ISDATADUP(N) (N & PAIR_DUPMASK)$/
+PAIR_ISKEYBIG ../include/hash.h /^#define PAIR_ISKEYBIG(N) (N & PAIR_KEYMASK)$/
+PAIR_KEYMASK ../include/hash.h /^#define PAIR_KEYMASK 0x1$/
+PAIR_MASK ../include/hash.h /^#define PAIR_MASK 0xf$/
+PANIC_CHECK ../include/region.h /^#define PANIC_CHECK(dbenv) \\$/
+PATH_DOT ../include/db_int.in /^#define PATH_DOT "." \/* Current working directory/
+PATH_SEPARATOR ../include/db_int.in /^#define PATH_SEPARATOR "\/" \/* Path separator cha/
+PGNO ../include/db_page.h /^#define PGNO(p) (((PAGE *)p)->pgno)$/
+PGNO_BASE_MD ../include/db_page.h /^#define PGNO_BASE_MD 0 \/* Base database: metadata/
+PGNO_INVALID ../include/db_page.h /^#define PGNO_INVALID 0 \/* Invalid page number in /
+POWER_OF_TWO ../include/db_verify.h /^#define POWER_OF_TWO(x) (((x) & ((x) - 1)) == 0)$/
+PREV_PGNO ../include/db_page.h /^#define PREV_PGNO(p) (((PAGE *)p)->prev_pgno)$/
+PSIZE_BOUNDARY ../db/db_pr.c /^#define PSIZE_BOUNDARY (64 * 1024 + 1)$/
+PTHREAD_UNLOCK_ATTEMPTS ../mutex/mut_pthread.c /^#define PTHREAD_UNLOCK_ATTEMPTS 5$/
+PUTOVFL ../include/hash.h /^#define PUTOVFL 0x40$/
+PUTPAIR ../include/hash.h /^#define PUTPAIR 0x20$/
+PUT_HKEYDATA ../include/db_page.h /^#define PUT_HKEYDATA(pe, kd, len, type) { \\$/
+PUT_PAGE ../db/db_upg_opd.c /^#define PUT_PAGE(dbp, fhp, pgno, page) { \\$/
+P_16_COPY ../include/db_swap.h /^#define P_16_COPY(a, b) { \\$/
+P_16_SWAP ../include/db_swap.h /^#define P_16_SWAP(a) { \\$/
+P_32_COPY ../include/db_swap.h /^#define P_32_COPY(a, b) { \\$/
+P_32_SWAP ../include/db_swap.h /^#define P_32_SWAP(a) { \\$/
+P_BTREEMETA ../include/db_page.h /^#define P_BTREEMETA 9 \/* Btree metadata page. *\//
+P_ENTRY ../include/db_page.h /^#define P_ENTRY(pg, indx) ((u_int8_t *)pg + ((PAGE/
+P_FREESPACE ../include/db_page.h /^#define P_FREESPACE(pg) (HOFFSET(pg) - LOFFSET(pg/
+P_HASH ../include/db_page.h /^#define P_HASH 2 \/* Hash. *\/$/
+P_HASHMETA ../include/db_page.h /^#define P_HASHMETA 8 \/* Hash metadata page. *\/$/
+P_IBTREE ../include/db_page.h /^#define P_IBTREE 3 \/* Btree internal. *\/$/
+P_INDX ../include/db_page.h /^#define P_INDX 2$/
+P_INIT ../include/db_page.h /^#define P_INIT(pg, pg_size, n, pg_prev, pg_next, b/
+P_INVALID ../include/db_page.h /^#define P_INVALID 0 \/* Invalid page type. *\/$/
+P_IRECNO ../include/db_page.h /^#define P_IRECNO 4 \/* Recno internal. *\/$/
+P_LBTREE ../include/db_page.h /^#define P_LBTREE 5 \/* Btree leaf. *\/$/
+P_LDUP ../include/db_page.h /^#define P_LDUP 12 \/* Off-page duplicate leaf. */
+P_LRECNO ../include/db_page.h /^#define P_LRECNO 6 \/* Recno leaf. *\/$/
+P_MAXSPACE ../include/db_page.h /^#define P_MAXSPACE(psize) ((psize) - P_OVERHEAD)$/
+P_OVERFLOW ../include/db_page.h /^#define P_OVERFLOW 7 \/* Overflow. *\/$/
+P_OVERHEAD ../include/db_page.h /^#define P_OVERHEAD (SSZA(PAGE, inp))$/
+P_OVFLSPACE ../include/db_page.h /^#define P_OVFLSPACE(psize, pg) (P_MAXSPACE(psize)/
+P_PAGETYPE_MAX ../include/db_page.h /^#define P_PAGETYPE_MAX 13$/
+P_QAMDATA ../include/db_page.h /^#define P_QAMDATA 11 \/* Queue data page. *\/$/
+P_QAMMETA ../include/db_page.h /^#define P_QAMMETA 10 \/* Queue metadata page. *\/$/
+P_TO_ULONG ../include/db_int.in /^#define P_TO_ULONG(p) ((u_long)(db_alignp_t)(p))$/
+QAMDATA ../include/qam.h /^} QAMDATA;$/
+QAM_AFTER_CURRENT ../include/qam.h /^#define QAM_AFTER_CURRENT(meta, recno) \\$/
+QAM_BEFORE_FIRST ../include/qam.h /^#define QAM_BEFORE_FIRST(meta, recno) \\$/
+QAM_GET_RECORD ../include/qam.h /^#define QAM_GET_RECORD(dbp, page, index) \\$/
+QAM_NOT_VALID ../include/qam.h /^#define QAM_NOT_VALID(meta, recno) \\$/
+QAM_RECNO_INDEX ../include/qam.h /^#define QAM_RECNO_INDEX(dbp, pgno, recno) \\$/
+QAM_RECNO_PAGE ../include/qam.h /^#define QAM_RECNO_PAGE(dbp, recno) \\$/
+QAM_RECNO_PER_PAGE ../include/qam.h /^#define QAM_RECNO_PER_PAGE(dbp) (((QUEUE*)(dbp)->q/
+QAM_SET ../include/qam.h /^#define QAM_SET 0x02$/
+QAM_SETCUR ../include/qam.h /^#define QAM_SETCUR 0x02$/
+QAM_SETFIRST ../include/qam.h /^#define QAM_SETFIRST 0x01$/
+QAM_VALID ../include/qam.h /^#define QAM_VALID 0x01$/
+QDEBUG ../qam/qam.c /^#define QDEBUG$/
+QMETA ../include/db_page.h /^} QMETA32, QMETA;$/
+QMETA30 ../include/db_upgrade.h /^} QMETA30;$/
+QMETA31 ../include/db_upgrade.h /^} QMETA31;$/
+QPAGE ../include/db_page.h /^} QPAGE;$/
+QUEUE ../include/qam.h /^struct __queue; typedef struct __queue QUEUE;$/
+QUEUE_CURSOR ../include/qam.h /^struct __qcursor; typedef struct __qcursor QUEUE_C/
+QUEUE_EXTENT ../include/qam.h /^#define QUEUE_EXTENT "%s\/__dbq.%s.%d"$/
+QUEUE_FILELIST ../include/qam.h /^} QUEUE_FILELIST;$/
+RAND_MAX ../tcl/tcl_compat.c /^#define RAND_MAX 0x7fffffff$/
+RECNO ../include/btree.h /^struct __recno; typedef struct __recno RECNO;$/
+RECNOINFO ../include/db_185.in /^} RECNOINFO;$/
+RECNO_OOB ../include/db_int.in /^#define RECNO_OOB 0 \/* Illegal record number. */
+REC_CLOSE ../include/db_am.h /^#define REC_CLOSE { \\$/
+REC_INTRO ../include/db_am.h /^#define REC_INTRO(func, inc_count) { \\$/
+REC_NOOP_CLOSE ../include/db_am.h /^#define REC_NOOP_CLOSE \\$/
+REC_NOOP_INTRO ../include/db_am.h /^#define REC_NOOP_INTRO(func) { \\$/
+REC_PRINT ../include/db_am.h /^#define REC_PRINT(func) \\$/
+REGENV ../include/region.h /^} REGENV;$/
+REGENV_REF ../include/region.h /^} REGENV_REF;$/
+REGINFO ../include/db_int.in /^struct __db_reginfo_t; typedef struct __db_reginfo/
+REGION ../include/region.h /^} REGION;$/
+REGION_CREATE ../include/region.h /^#define REGION_CREATE 0x01 \/* Caller created reg/
+REGION_CREATE_OK ../include/region.h /^#define REGION_CREATE_OK 0x02 \/* Caller willing t/
+REGION_ID_ENV ../include/region.h /^#define REGION_ID_ENV 1 \/* Primary environment I/
+REGION_JOIN_OK ../include/region.h /^#define REGION_JOIN_OK 0x04 \/* Caller is looking/
+REGMAINT ../include/region.h /^} REGMAINT;$/
+REGMAINT_STAT ../include/region.h /^} REGMAINT_STAT;$/
+RESET_RET_MEM ../include/db_int.in /^#define RESET_RET_MEM(dbc) \\$/
+RET_ERROR ../include/db_185.in /^#define RET_ERROR -1 \/* Return values. *\/$/
+RET_SPECIAL ../include/db_185.in /^#define RET_SPECIAL 1$/
+RET_SUCCESS ../include/db_185.in /^#define RET_SUCCESS 0$/
+RE_NREC ../include/db_page.h /^#define RE_NREC(p) \\$/
+RE_NREC_ADJ ../include/db_page.h /^#define RE_NREC_ADJ(p, adj) \\$/
+RE_NREC_SET ../include/db_page.h /^#define RE_NREC_SET(p, num) \\$/
+RINTERNAL ../include/db_page.h /^} RINTERNAL;$/
+RINTERNAL_PSIZE ../include/db_page.h /^#define RINTERNAL_PSIZE \\$/
+RINTERNAL_SIZE ../include/db_page.h /^#define RINTERNAL_SIZE \\$/
+RMNAMESZ ../include/xa.h /^#define RMNAMESZ 32 \/* length of resource manage/
+RPC_SVC_FG ../rpc_server/db_server_svc.c /^#define RPC_SVC_FG$/
+RSMSG ../db185/db185.c /^#define RSMSG "DB: DB 1.85's R_RECNOSYNC sync flag/
+R_ADDR ../include/region.h /^#define R_ADDR(base, offset) \\$/
+R_CURSOR ../include/db_185.in /^#define R_CURSOR 1 \/* del, put, seq *\/$/
+R_DUP ../include/db_185.in /^#define R_DUP 0x01 \/* duplicate keys *\/$/
+R_FIRST ../include/db_185.in /^#define R_FIRST 3 \/* seq *\/$/
+R_FIXEDLEN ../include/db_185.in /^#define R_FIXEDLEN 0x01 \/* fixed-length records */
+R_IAFTER ../include/db_185.in /^#define R_IAFTER 4 \/* put (RECNO) *\/$/
+R_IBEFORE ../include/db_185.in /^#define R_IBEFORE 5 \/* put (RECNO) *\/$/
+R_LAST ../include/db_185.in /^#define R_LAST 6 \/* seq (BTREE, RECNO) *\/$/
+R_LOCK ../include/region.h /^#define R_LOCK(dbenv, reginfo) \\$/
+R_NEXT ../include/db_185.in /^#define R_NEXT 7 \/* seq *\/$/
+R_NOKEY ../include/db_185.in /^#define R_NOKEY 0x02 \/* key not required *\/$/
+R_NOOVERWRITE ../include/db_185.in /^#define R_NOOVERWRITE 8 \/* put *\/$/
+R_OFFSET ../include/region.h /^#define R_OFFSET(base, p) \\$/
+R_PREV ../include/db_185.in /^#define R_PREV 9 \/* seq (BTREE, RECNO) *\/$/
+R_RECNOSYNC ../include/db_185.in /^#define R_RECNOSYNC 11 \/* sync (RECNO) *\/$/
+R_SETCURSOR ../include/db_185.in /^#define R_SETCURSOR 10 \/* put (RECNO) *\/$/
+R_SNAPSHOT ../include/db_185.in /^#define R_SNAPSHOT 0x04 \/* snapshot the input *\//
+R_UNLOCK ../include/region.h /^#define R_UNLOCK(dbenv, reginfo) \\$/
+SALVAGE_HASH ../include/db_verify.h /^#define SALVAGE_HASH 6$/
+SALVAGE_IGNORE ../include/db_verify.h /^#define SALVAGE_IGNORE 1$/
+SALVAGE_INVALID ../include/db_verify.h /^#define SALVAGE_INVALID 0$/
+SALVAGE_LBTREE ../include/db_verify.h /^#define SALVAGE_LBTREE 5$/
+SALVAGE_LDUP ../include/db_verify.h /^#define SALVAGE_LDUP 2$/
+SALVAGE_LRECNO ../include/db_verify.h /^#define SALVAGE_LRECNO 7$/
+SALVAGE_LRECNODUP ../include/db_verify.h /^#define SALVAGE_LRECNODUP 3$/
+SALVAGE_OVERFLOW ../include/db_verify.h /^#define SALVAGE_OVERFLOW 4$/
+SALVAGE_PRINTFOOTER ../include/db_verify.h /^#define SALVAGE_PRINTFOOTER 0x02$/
+SALVAGE_PRINTHEADER ../include/db_verify.h /^#define SALVAGE_PRINTHEADER 0x01$/
+SA_SKIPFIRSTKEY ../include/db_verify.h /^#define SA_SKIPFIRSTKEY 0x00080000$/
+SERIAL_INIT ../os/os_fid.c /^#define SERIAL_INIT 0$/
+SET_MAP ../lock/lock_deadlock.c /^#define SET_MAP(M, B) ((M)[(B) \/ 32] |= (1 << ((B/
+SET_RET_MEM ../include/db_int.in /^#define SET_RET_MEM(dbc, owner) \\$/
+SHALLOC_FRAGMENT ../env/db_salloc.c /^#define SHALLOC_FRAGMENT 32$/
+SHOBJECT_LOCK ../include/lock.h /^#define SHOBJECT_LOCK(lt, reg, shobj, ndx) \\$/
+SH_CIRCLEQ_ENTRY ../include/shqueue.h /^#define SH_CIRCLEQ_ENTRY \\$/
+SH_CIRCLEQ_FIRST ../include/shqueue.h /^#define SH_CIRCLEQ_FIRST(head, type) \\$/
+SH_CIRCLEQ_FIRSTP ../include/shqueue.h /^#define SH_CIRCLEQ_FIRSTP(head, type) \\$/
+SH_CIRCLEQ_HEAD ../include/shqueue.h /^#define SH_CIRCLEQ_HEAD(name) \\$/
+SH_CIRCLEQ_INIT ../include/shqueue.h /^#define SH_CIRCLEQ_INIT(head) { \\$/
+SH_CIRCLEQ_INSERT_AFTER ../include/shqueue.h /^#define SH_CIRCLEQ_INSERT_AFTER(head, listelm, elm/
+SH_CIRCLEQ_INSERT_BEFORE ../include/shqueue.h /^#define SH_CIRCLEQ_INSERT_BEFORE(head, listelm, el/
+SH_CIRCLEQ_INSERT_HEAD ../include/shqueue.h /^#define SH_CIRCLEQ_INSERT_HEAD(head, elm, field, t/
+SH_CIRCLEQ_INSERT_TAIL ../include/shqueue.h /^#define SH_CIRCLEQ_INSERT_TAIL(head, elm, field, t/
+SH_CIRCLEQ_LAST ../include/shqueue.h /^#define SH_CIRCLEQ_LAST(head, type) \\$/
+SH_CIRCLEQ_LASTP ../include/shqueue.h /^#define SH_CIRCLEQ_LASTP(head, type) \\$/
+SH_CIRCLEQ_NEXT ../include/shqueue.h /^#define SH_CIRCLEQ_NEXT(head, elm, field, type) /
+SH_CIRCLEQ_NEXTP ../include/shqueue.h /^#define SH_CIRCLEQ_NEXTP(elm, field, type) \\$/
+SH_CIRCLEQ_PREV ../include/shqueue.h /^#define SH_CIRCLEQ_PREV(head, elm, field, type) /
+SH_CIRCLEQ_PREVP ../include/shqueue.h /^#define SH_CIRCLEQ_PREVP(elm, field, type) \\$/
+SH_CIRCLEQ_REMOVE ../include/shqueue.h /^#define SH_CIRCLEQ_REMOVE(head, elm, field, type) /
+SH_DBT ../include/lock.h /^} SH_DBT;$/
+SH_DBT_PTR ../include/lock.h /^#define SH_DBT_PTR(p) ((void *)(((u_int8_t *)(p)) /
+SH_LIST_ENTRY ../include/shqueue.h /^#define SH_LIST_ENTRY \\$/
+SH_LIST_FIRST ../include/shqueue.h /^#define SH_LIST_FIRST(head, type) \\$/
+SH_LIST_FIRSTP ../include/shqueue.h /^#define SH_LIST_FIRSTP(head, type) \\$/
+SH_LIST_HEAD ../include/shqueue.h /^#define SH_LIST_HEAD(name) \\$/
+SH_LIST_INIT ../include/shqueue.h /^#define SH_LIST_INIT(head) (head)->slh_first = -1$/
+SH_LIST_INSERT_AFTER ../include/shqueue.h /^#define SH_LIST_INSERT_AFTER(listelm, elm, field, /
+SH_LIST_INSERT_HEAD ../include/shqueue.h /^#define SH_LIST_INSERT_HEAD(head, elm, field, type/
+SH_LIST_NEXT ../include/shqueue.h /^#define SH_LIST_NEXT(elm, field, type) \\$/
+SH_LIST_NEXTP ../include/shqueue.h /^#define SH_LIST_NEXTP(elm, field, type) \\$/
+SH_LIST_NEXT_TO_PREV ../include/shqueue.h /^#define SH_LIST_NEXT_TO_PREV(elm, field) \\$/
+SH_LIST_PREV ../include/shqueue.h /^#define SH_LIST_PREV(elm, field) \\$/
+SH_LIST_REMOVE ../include/shqueue.h /^#define SH_LIST_REMOVE(elm, field, type) do { /
+SH_PTR_TO_OFF ../include/shqueue.h /^#define SH_PTR_TO_OFF(src, dest) \\$/
+SH_TAILQ_ENTRY ../include/shqueue.h /^#define SH_TAILQ_ENTRY \\$/
+SH_TAILQ_FIRST ../include/shqueue.h /^#define SH_TAILQ_FIRST(head, type) \\$/
+SH_TAILQ_FIRSTP ../include/shqueue.h /^#define SH_TAILQ_FIRSTP(head, type) \\$/
+SH_TAILQ_HEAD ../include/db_shash.h /^typedef SH_TAILQ_HEAD(__hash_head) DB_HASHTAB;$/
+SH_TAILQ_INIT ../include/shqueue.h /^#define SH_TAILQ_INIT(head) { \\$/
+SH_TAILQ_INSERT_AFTER ../include/shqueue.h /^#define SH_TAILQ_INSERT_AFTER(head, listelm, elm, /
+SH_TAILQ_INSERT_HEAD ../include/shqueue.h /^#define SH_TAILQ_INSERT_HEAD(head, elm, field, typ/
+SH_TAILQ_INSERT_TAIL ../include/shqueue.h /^#define SH_TAILQ_INSERT_TAIL(head, elm, field) do /
+SH_TAILQ_LAST ../include/shqueue.h /^#define SH_TAILQ_LAST(head) \\$/
+SH_TAILQ_NEXT ../include/shqueue.h /^#define SH_TAILQ_NEXT(elm, field, type) \\$/
+SH_TAILQ_NEXTP ../include/shqueue.h /^#define SH_TAILQ_NEXTP(elm, field, type) \\$/
+SH_TAILQ_NEXT_TO_PREV ../include/shqueue.h /^#define SH_TAILQ_NEXT_TO_PREV(elm, field) \\$/
+SH_TAILQ_PREVP ../include/shqueue.h /^#define SH_TAILQ_PREVP(elm, field) \\$/
+SH_TAILQ_REMOVE ../include/shqueue.h /^#define SH_TAILQ_REMOVE(head, elm, field, type) do/
+SORTED_SET ../db/db_join.c /^#define SORTED_SET(jc, n) ((jc)->j_curslist[(n)]/
+SPLITNEW ../include/hash.h /^#define SPLITNEW 0x90$/
+SPLITOLD ../include/hash.h /^#define SPLITOLD 0x80$/
+SPL_NRECS ../include/btree.h /^#define SPL_NRECS 0x01 \/* Split tree has record /
+SSZ ../include/db_int.in /^#define SSZ(name, field) ((int)&(((name *)0)->fiel/
+SSZA ../include/db_int.in /^#define SSZA(name, field) ((int)&(((name *)0)->fie/
+STDERR_FILENO ../db185/db185.c /^#define STDERR_FILENO 2$/
+STD_LOCKING ../include/db_int.in /^#define STD_LOCKING(dbc) \\$/
+STK_CLRDBC ../include/btree.h /^#define STK_CLRDBC 0x01 \/* Clear dbc->page refer/
+STK_NOLOCK ../include/btree.h /^#define STK_NOLOCK 0x02 \/* Don't retain locks. */
+ST_DUPOK ../include/db_verify.h /^#define ST_DUPOK 0x00010000 \/* Duplicates are acc/
+ST_DUPSET ../include/db_verify.h /^#define ST_DUPSET 0x00020000 \/* Subtree is in a d/
+ST_DUPSORT ../include/db_verify.h /^#define ST_DUPSORT 0x00040000 \/* Duplicates are s/
+ST_IS_RECNO ../include/db_verify.h /^#define ST_IS_RECNO 0x00080000 \/* Subtree is a re/
+ST_OVFL_LEAF ../include/db_verify.h /^#define ST_OVFL_LEAF 0x00100000 \/* Overflow reffe/
+ST_RECNUM ../include/db_verify.h /^#define ST_RECNUM 0x00200000 \/* Subtree has recor/
+ST_RELEN ../include/db_verify.h /^#define ST_RELEN 0x00400000 \/* Subtree has fixed-/
+ST_TOPLEVEL ../include/db_verify.h /^#define ST_TOPLEVEL 0x00800000 \/* Subtree == enti/
+SWAP16 ../include/db_swap.h /^#define SWAP16(p) { \\$/
+SWAP32 ../include/db_swap.h /^#define SWAP32(p) { \\$/
+S_APPEND ../include/btree.h /^#define S_APPEND 0x00040 \/* Append to the tree. /
+S_DELETE ../include/btree.h /^#define S_DELETE (S_WRITE | S_DUPFIRST | S_DELNO |/
+S_DELNO ../include/btree.h /^#define S_DELNO 0x00080 \/* Don't return deleted/
+S_DUPFIRST ../include/btree.h /^#define S_DUPFIRST 0x00100 \/* Return first dupli/
+S_DUPLAST ../include/btree.h /^#define S_DUPLAST 0x00200 \/* Return last duplica/
+S_EXACT ../include/btree.h /^#define S_EXACT 0x00400 \/* Exact items only. */
+S_FIND ../include/btree.h /^#define S_FIND (S_READ | S_DUPFIRST | S_DELNO)$/
+S_FIND_WR ../include/btree.h /^#define S_FIND_WR (S_WRITE | S_DUPFIRST | S_DELNO)/
+S_INSERT ../include/btree.h /^#define S_INSERT (S_WRITE | S_DUPLAST | S_PAST_EOF/
+S_IRGRP ../os/os_oflags.c /^#define S_IRGRP 0 \/* R for group *\/$/
+S_IROTH ../os/os_oflags.c /^#define S_IROTH 0 \/* R for other *\/$/
+S_IRUSR ../os/os_oflags.c /^#define S_IRUSR S_IREAD \/* R for owner *\/$/
+S_ISDIR ../os/os_stat.c /^#define S_ISDIR(m) (_S_IFDIR & (m))$/
+S_IWGRP ../os/os_oflags.c /^#define S_IWGRP 0 \/* W for group *\/$/
+S_IWOTH ../os/os_oflags.c /^#define S_IWOTH 0 \/* W for other *\/$/
+S_IWUSR ../os/os_oflags.c /^#define S_IWUSR S_IWRITE \/* W for owner *\/$/
+S_KEYFIRST ../include/btree.h /^#define S_KEYFIRST (S_WRITE | S_DUPFIRST | S_PAST_/
+S_KEYLAST ../include/btree.h /^#define S_KEYLAST (S_WRITE | S_DUPLAST | S_PAST_EO/
+S_PARENT ../include/btree.h /^#define S_PARENT 0x00800 \/* Lock page pair. *\/$/
+S_PAST_EOF ../include/btree.h /^#define S_PAST_EOF 0x02000 \/* If doing insert se/
+S_READ ../include/btree.h /^#define S_READ 0x00001 \/* Read locks. *\/$/
+S_STACK ../include/btree.h /^#define S_STACK 0x01000 \/* Need a complete stac/
+S_STK_ONLY ../include/btree.h /^#define S_STK_ONLY 0x04000 \/* Just return info i/
+S_WRITE ../include/btree.h /^#define S_WRITE 0x00002 \/* Write locks. *\/$/
+S_WRPAIR ../include/btree.h /^#define S_WRPAIR (S_WRITE | S_DUPLAST | S_PAST_EOF/
+TAILQ_ENTRY ../include/queue.h /^#define TAILQ_ENTRY(type) \\$/
+TAILQ_FIRST ../include/queue.h /^#define TAILQ_FIRST(head) ((head)->tqh_first)$/
+TAILQ_HEAD ../include/queue.h /^#define TAILQ_HEAD(name, type) \\$/
+TAILQ_INIT ../include/queue.h /^#define TAILQ_INIT(head) do { \\$/
+TAILQ_INSERT_AFTER ../include/queue.h /^#define TAILQ_INSERT_AFTER(head, listelm, elm, fie/
+TAILQ_INSERT_BEFORE ../include/queue.h /^#define TAILQ_INSERT_BEFORE(listelm, elm, field) d/
+TAILQ_INSERT_HEAD ../include/queue.h /^#define TAILQ_INSERT_HEAD(head, elm, field) do { /
+TAILQ_INSERT_TAIL ../include/queue.h /^#define TAILQ_INSERT_TAIL(head, elm, field) do { /
+TAILQ_NEXT ../include/queue.h /^#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_/
+TAILQ_REINSERT_HEAD ../include/queue.h /^#define TAILQ_REINSERT_HEAD(head, elm, field) do {/
+TAILQ_REMOVE ../include/queue.h /^#define TAILQ_REMOVE(head, elm, field) do { \\$/
+TLOOP ../clib/memmove.c /^#define TLOOP(s) if (t) TLOOP1(s)$/
+TLOOP1 ../clib/memmove.c /^#define TLOOP1(s) do { s; } while (--t)$/
+TMASYNC ../include/xa.h /^#define TMASYNC 0x80000000L \/* perform routine a/
+TMENDRSCAN ../include/xa.h /^#define TMENDRSCAN 0x00800000L \/* end a recovery /
+TMER_INVAL ../include/xa.h /^#define TMER_INVAL -2 \/* invalid arguments were /
+TMER_PROTO ../include/xa.h /^#define TMER_PROTO -3 \/* routine invoked in an i/
+TMER_TMERR ../include/xa.h /^#define TMER_TMERR -1 \/* an error occurred in th/
+TMFAIL ../include/xa.h /^#define TMFAIL 0x20000000L \/* dissociates caller/
+TMJOIN ../include/xa.h /^#define TMJOIN 0x00200000L \/* caller is joining /
+TMMIGRATE ../include/xa.h /^#define TMMIGRATE 0x00100000L \/* caller intends t/
+TMMULTIPLE ../include/xa.h /^#define TMMULTIPLE 0x00400000L \/* wait for any as/
+TMNOFLAGS ../include/xa.h /^#define TMNOFLAGS 0x00000000L \/* no resource mana/
+TMNOMIGRATE ../include/xa.h /^#define TMNOMIGRATE 0x00000002L \/* resource manag/
+TMNOWAIT ../include/xa.h /^#define TMNOWAIT 0x10000000L \/* return if blockin/
+TMONEPHASE ../include/xa.h /^#define TMONEPHASE 0x40000000L \/* caller is using/
+TMREGISTER ../include/xa.h /^#define TMREGISTER 0x00000001L \/* resource manage/
+TMRESUME ../include/xa.h /^#define TMRESUME 0x08000000L \/* caller is resumin/
+TMSTARTRSCAN ../include/xa.h /^#define TMSTARTRSCAN 0x01000000L \/* start a recov/
+TMSUCCESS ../include/xa.h /^#define TMSUCCESS 0x04000000L \/* dissociate calle/
+TMSUSPEND ../include/xa.h /^#define TMSUSPEND 0x02000000L \/* caller is suspen/
+TMUSEASYNC ../include/xa.h /^#define TMUSEASYNC 0x00000004L \/* resource manage/
+TM_JOIN ../include/xa.h /^#define TM_JOIN 2 \/* caller is joining existing/
+TM_OK ../include/xa.h /^#define TM_OK 0 \/* normal execution *\/$/
+TM_RESUME ../include/xa.h /^#define TM_RESUME 1 \/* caller is resuming associ/
+TXNLIST_FLAG_CLOSED ../include/db_dispatch.h /^#define TXNLIST_FLAG_CLOSED 0x2$/
+TXNLIST_FLAG_DELETED ../include/db_dispatch.h /^#define TXNLIST_FLAG_DELETED 0x1$/
+TXNLIST_INVALID_ID ../include/db_dispatch.h /^#define TXNLIST_INVALID_ID 0xffffffff$/
+TXNLIST_NEW ../include/db_dispatch.h /^#define TXNLIST_NEW 0x1$/
+TXN_ABORT ../include/txn.h /^#define TXN_ABORT 3$/
+TXN_ABORTED ../include/txn.h /^#define TXN_ABORTED 2$/
+TXN_BUBBLE ../db/db_dispatch.c /^#define TXN_BUBBLE(AP, MAX) { \\$/
+TXN_CHILDCOMMIT ../include/txn.h /^#define TXN_CHILDCOMMIT 0x01 \/* Transaction that/
+TXN_COLLECTED ../include/txn.h /^#define TXN_COLLECTED 0x1$/
+TXN_COMMIT ../include/txn.h /^#define TXN_COMMIT 1$/
+TXN_COMMITTED ../include/txn.h /^#define TXN_COMMITTED 4$/
+TXN_DETAIL ../include/txn.h /^} TXN_DETAIL;$/
+TXN_DIRTY_READ ../include/txn.h /^#define TXN_DIRTY_READ 0x02 \/* Transaction does /
+TXN_INVALID ../include/txn.h /^#define TXN_INVALID 0xffffffff \/* Maximum number /
+TXN_INVALID_ID ../include/txn.h /^#define TXN_INVALID_ID 0 \/* Invalid transaction /
+TXN_MAINT_SIZE ../include/txn.h /^#define TXN_MAINT_SIZE (sizeof(roff_t) * DB_MAX_HA/
+TXN_MALLOC ../include/txn.h /^#define TXN_MALLOC 0x04 \/* Structure allocated b/
+TXN_MINIMUM ../include/txn.h /^#define TXN_MINIMUM 0x80000000$/
+TXN_NOSYNC ../include/txn.h /^#define TXN_NOSYNC 0x08 \/* Do not sync on prepar/
+TXN_NOTFOUND ../include/txn.h /^#define TXN_NOTFOUND 4$/
+TXN_NOWAIT ../include/txn.h /^#define TXN_NOWAIT 0x10 \/* Do not wait on locks./
+TXN_OK ../include/txn.h /^#define TXN_OK 0$/
+TXN_ON ../include/db_int.in /^#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL/
+TXN_PREPARE ../include/txn.h /^#define TXN_PREPARE 2$/
+TXN_PREPARED ../include/txn.h /^#define TXN_PREPARED 3$/
+TXN_RESTORED ../include/txn.h /^#define TXN_RESTORED 0x2$/
+TXN_RUNNING ../include/txn.h /^#define TXN_RUNNING 1$/
+TXN_SYNC ../include/txn.h /^#define TXN_SYNC 0x20 \/* Sync on prepare and com/
+TXN_XA_ABORTED ../include/txn.h /^#define TXN_XA_ABORTED 1$/
+TXN_XA_DEADLOCKED ../include/txn.h /^#define TXN_XA_DEADLOCKED 2$/
+TXN_XA_ENDED ../include/txn.h /^#define TXN_XA_ENDED 3$/
+TXN_XA_PREPARED ../include/txn.h /^#define TXN_XA_PREPARED 4$/
+TXN_XA_STARTED ../include/txn.h /^#define TXN_XA_STARTED 5$/
+TXN_XA_SUSPENDED ../include/txn.h /^#define TXN_XA_SUSPENDED 6$/
+TYPE ../include/db_page.h /^#define TYPE(p) (((PAGE *)p)->type)$/
+TYPE_ERR_PRINT ../include/db_verify.h /^#define TYPE_ERR_PRINT(dbenv, func, pgno, ptype) /
+UINT16_T_MAX ../include/db_int.in /^#define UINT16_T_MAX 0xffff \/* Maximum 16 bit/
+UINT32_T_MAX ../include/db_int.in /^#define UINT32_T_MAX 0xffffffff \/* Maximum 32 bit/
+UMRW_SET ../include/debug.h /^#define UMRW_SET(v) (v) = 0$/
+UNLOCKREGION ../include/lock.h /^#define UNLOCKREGION(dbenv, lt) R_UNLOCK((dbenv),/
+UPREFIX ../clib/strerror.c /^#define UPREFIX "Unknown error: "$/
+USEC_PER_MS ../include/db_int.in /^#define USEC_PER_MS 1000 \/* Microseconds in a mi/
+VRFY_CHILDINFO ../include/db_int.in /^struct __vrfy_childinfo; typedef struct __vrfy_chi/
+VRFY_DBINFO ../include/db_int.in /^struct __vrfy_dbinfo; typedef struct __vrfy_dbin/
+VRFY_DUPS_UNSORTED ../include/db_verify.h /^#define VRFY_DUPS_UNSORTED 0x0001 \/* Have to flag/
+VRFY_HAS_DUPS ../include/db_verify.h /^#define VRFY_HAS_DUPS 0x0002$/
+VRFY_HAS_DUPSORT ../include/db_verify.h /^#define VRFY_HAS_DUPSORT 0x0004 \/* Has the flag s/
+VRFY_HAS_RECNUMS ../include/db_verify.h /^#define VRFY_HAS_RECNUMS 0x0010$/
+VRFY_HAS_SUBDBS ../include/db_verify.h /^#define VRFY_HAS_SUBDBS 0x0008$/
+VRFY_INCOMPLETE ../include/db_verify.h /^#define VRFY_INCOMPLETE 0x0020 \/* Meta or item o/
+VRFY_IS_ALLZEROES ../include/db_verify.h /^#define VRFY_IS_ALLZEROES 0x0040 \/* Hash page we /
+VRFY_IS_FIXEDLEN ../include/db_verify.h /^#define VRFY_IS_FIXEDLEN 0x0080$/
+VRFY_IS_RECNO ../include/db_verify.h /^#define VRFY_IS_RECNO 0x0100$/
+VRFY_IS_RRECNO ../include/db_verify.h /^#define VRFY_IS_RRECNO 0x0200$/
+VRFY_OVFL_LEAFSEEN ../include/db_verify.h /^#define VRFY_OVFL_LEAFSEEN 0x0400$/
+VRFY_PAGEINFO ../include/db_int.in /^struct __vrfy_pageinfo; typedef struct __vrfy_page/
+V_DUPLICATE ../include/db_verify.h /^#define V_DUPLICATE 1 \/* off-page dup metadata */
+V_OVERFLOW ../include/db_verify.h /^#define V_OVERFLOW 2 \/* overflow page *\/$/
+V_RECNO ../include/db_verify.h /^#define V_RECNO 3 \/* btree internal or leaf pag/
+WORDS_BIGENDIAN ../common/db_byteorder.c /^#define WORDS_BIGENDIAN 1$/
+WRAPPED_CLASS ../include/cxx_int.h /^WRAPPED_CLASS(DbMpoolFile, DbMpoolFileImp, DB_MPOO/
+XAER_ASYNC ../include/xa.h /^#define XAER_ASYNC -2 \/* asynchronous operation /
+XAER_DUPID ../include/xa.h /^#define XAER_DUPID -8 \/* the XID already exists /
+XAER_INVAL ../include/xa.h /^#define XAER_INVAL -5 \/* invalid arguments were /
+XAER_NOTA ../include/xa.h /^#define XAER_NOTA -4 \/* the XID is not valid *\//
+XAER_OUTSIDE ../include/xa.h /^#define XAER_OUTSIDE -9 \/* resource manager doin/
+XAER_PROTO ../include/xa.h /^#define XAER_PROTO -6 \/* routine invoked in an i/
+XAER_RMERR ../include/xa.h /^#define XAER_RMERR -3 \/* a resource manager erro/
+XAER_RMFAIL ../include/xa.h /^#define XAER_RMFAIL -7 \/* resource manager unava/
+XA_FLAGS ../xa/xa.c /^#define XA_FLAGS \\$/
+XA_H ../include/xa.h /^#define XA_H$/
+XA_HEURCOM ../include/xa.h /^#define XA_HEURCOM 7 \/* the transaction branch h/
+XA_HEURHAZ ../include/xa.h /^#define XA_HEURHAZ 8 \/* the transaction branch m/
+XA_HEURMIX ../include/xa.h /^#define XA_HEURMIX 5 \/* the transaction branch h/
+XA_HEURRB ../include/xa.h /^#define XA_HEURRB 6 \/* the transaction branch ha/
+XA_METHODS ../xa/xa_db.c /^} XA_METHODS;$/
+XA_NOMIGRATE ../include/xa.h /^#define XA_NOMIGRATE 9 \/* resumption must occur /
+XA_OK ../include/xa.h /^#define XA_OK 0 \/* normal execution *\/$/
+XA_RBBASE ../include/xa.h /^#define XA_RBBASE 100 \/* The inclusive lower bou/
+XA_RBCOMMFAIL ../include/xa.h /^#define XA_RBCOMMFAIL XA_RBBASE+1 \/* The rollback/
+XA_RBDEADLOCK ../include/xa.h /^#define XA_RBDEADLOCK XA_RBBASE+2 \/* A deadlock w/
+XA_RBEND ../include/xa.h /^#define XA_RBEND XA_RBTRANSIENT \/* The inclusive /
+XA_RBINTEGRITY ../include/xa.h /^#define XA_RBINTEGRITY XA_RBBASE+3 \/* A condition/
+XA_RBOTHER ../include/xa.h /^#define XA_RBOTHER XA_RBBASE+4 \/* The resource ma/
+XA_RBPROTO ../include/xa.h /^#define XA_RBPROTO XA_RBBASE+5 \/* A protocol erro/
+XA_RBROLLBACK ../include/xa.h /^#define XA_RBROLLBACK XA_RBBASE \/* The rollback w/
+XA_RBTIMEOUT ../include/xa.h /^#define XA_RBTIMEOUT XA_RBBASE+6 \/* A transaction/
+XA_RBTRANSIENT ../include/xa.h /^#define XA_RBTRANSIENT XA_RBBASE+7 \/* May retry t/
+XA_RDONLY ../include/xa.h /^#define XA_RDONLY 3 \/* the transaction branch wa/
+XA_RETRY ../include/xa.h /^#define XA_RETRY 4 \/* routine returned with no e/
+XID ../include/xa.h /^typedef struct xid_t XID;$/
+XIDDATASIZE ../include/xa.h /^#define XIDDATASIZE 128 \/* size in bytes *\/$/
+ZERO_LSN ../include/db_int.in /^#define ZERO_LSN(LSN) do { \\$/
+_CXX_COMMON_H_ ../include/cxx_common.h /^#define _CXX_COMMON_H_$/
+_CXX_EXCEPT_H_ ../include/cxx_except.h /^#define _CXX_EXCEPT_H_$/
+_CXX_INT_H_ ../include/cxx_int.h /^#define _CXX_INT_H_$/
+_DB_185_H_ ../include/db_185.in /^#define _DB_185_H_$/
+_DB_AM_H_ ../include/db_am.h /^#define _DB_AM_H_$/
+_DB_CXX_H_ ../include/db_cxx.h /^#define _DB_CXX_H_$/
+_DB_DISPATCH_H_ ../include/db_dispatch.h /^#define _DB_DISPATCH_H_$/
+_DB_H_ ../include/db.in /^#define _DB_H_$/
+_DB_INTERNAL_H_ ../include/db_int.in /^#define _DB_INTERNAL_H_$/
+_DB_JOIN_H_ ../include/db_join.h /^#define _DB_JOIN_H_$/
+_DB_PAGE_H_ ../include/db_page.h /^#define _DB_PAGE_H_$/
+_DB_SERVER_INT_H_ ../include/db_server_int.h /^#define _DB_SERVER_INT_H_$/
+_DB_SWAP_H_ ../include/db_swap.h /^#define _DB_SWAP_H_$/
+_DB_UPGRADE_H_ ../include/db_upgrade.h /^#define _DB_UPGRADE_H_$/
+_DB_VERIFY_H_ ../include/db_verify.h /^#define _DB_VERIFY_H_$/
+_DeleteInfo ../tcl/tcl_internal.c /^_DeleteInfo(p)$/
+_EnvInfoDelete ../tcl/tcl_env.c /^_EnvInfoDelete(interp, envip)$/
+_ErrorFunc ../tcl/tcl_internal.c /^_ErrorFunc(pfx, msg)$/
+_ErrorSetup ../tcl/tcl_internal.c /^_ErrorSetup(interp, ret, errmsg)$/
+_GetGlobPrefix ../tcl/tcl_internal.c /^_GetGlobPrefix(pattern, prefix)$/
+_GetLsn ../tcl/tcl_internal.c /^_GetLsn(interp, obj, lsn)$/
+_GetThisLock ../tcl/tcl_lock.c /^_GetThisLock(interp, envp, lockid, flag, objp, mod/
+_Included_com_sleepycat_db_Db ../libdb_java/com_sleepycat_db_Db.h /^#define _Included_com_sleepycat_db_Db$/
+_Included_com_sleepycat_db_DbEnv ../libdb_java/com_sleepycat_db_DbEnv.h /^#define _Included_com_sleepycat_db_DbEnv$/
+_Included_com_sleepycat_db_DbLock ../libdb_java/com_sleepycat_db_DbLock.h /^#define _Included_com_sleepycat_db_DbLock$/
+_Included_com_sleepycat_db_DbLsn ../libdb_java/com_sleepycat_db_DbLsn.h /^#define _Included_com_sleepycat_db_DbLsn$/
+_Included_com_sleepycat_db_DbTxn ../libdb_java/com_sleepycat_db_DbTxn.h /^#define _Included_com_sleepycat_db_DbTxn$/
+_Included_com_sleepycat_db_DbUtil ../libdb_java/com_sleepycat_db_DbUtil.h /^#define _Included_com_sleepycat_db_DbUtil$/
+_Included_com_sleepycat_db_Dbc ../libdb_java/com_sleepycat_db_Dbc.h /^#define _Included_com_sleepycat_db_Dbc$/
+_Included_com_sleepycat_db_Dbt ../libdb_java/com_sleepycat_db_Dbt.h /^#define _Included_com_sleepycat_db_Dbt$/
+_JAVA_INFO_H_ ../libdb_java/java_info.h /^#define _JAVA_INFO_H_$/
+_JAVA_LOCKED_H_ ../libdb_java/java_locked.h /^#define _JAVA_LOCKED_H_$/
+_JAVA_UTIL_H_ ../libdb_java/java_util.h /^#define _JAVA_UTIL_H_$/
+_LOG_H_ ../include/log.h /^#define _LOG_H_$/
+_LockMode ../tcl/tcl_lock.c /^_LockMode(interp, obj, mode)$/
+_LockPutInfo ../tcl/tcl_lock.c /^_LockPutInfo(interp, op, lock, lockid, objp)$/
+_MUTEX_DATA ../include/tcl_db.h /^} _MUTEX_DATA;$/
+_MUTEX_ENTRY ../include/tcl_db.h /^} _MUTEX_ENTRY;$/
+_MpInfoDelete ../tcl/tcl_mp.c /^_MpInfoDelete(interp, mpip)$/
+_NameToInfo ../tcl/tcl_internal.c /^_NameToInfo(name)$/
+_NameToPtr ../tcl/tcl_internal.c /^_NameToPtr(name)$/
+_NewInfo ../tcl/tcl_internal.c /^_NewInfo(interp, anyp, name, type)$/
+_PtrToInfo ../tcl/tcl_internal.c /^_PtrToInfo(ptr)$/
+_ReturnSetup ../tcl/tcl_internal.c /^_ReturnSetup(interp, ret, errmsg)$/
+_SYS_SHQUEUE_H_ ../include/shqueue.h /^#define _SYS_SHQUEUE_H_$/
+_Set3DBTList ../tcl/tcl_internal.c /^_Set3DBTList(interp, list, elem1, is1recno, elem2,/
+_SetInfoData ../tcl/tcl_internal.c /^_SetInfoData(p, data)$/
+_SetListElem ../tcl/tcl_internal.c /^_SetListElem(interp, list, elem1, e1cnt, elem2, e2/
+_SetListElemInt ../tcl/tcl_internal.c /^_SetListElemInt(interp, list, elem1, elem2)$/
+_SetListRecnoElem ../tcl/tcl_internal.c /^_SetListRecnoElem(interp, list, elem1, elem2, e2si/
+_SetMultiList ../tcl/tcl_internal.c /^_SetMultiList(interp, list, key, data, type, flag)/
+_TXN_H_ ../include/txn.h /^#define _TXN_H_$/
+_TxnInfoDelete ../tcl/tcl_txn.c /^_TxnInfoDelete(interp, txnip)$/
+__BIT_TYPES_DEFINED__ ../include/db.in /^#define __BIT_TYPES_DEFINED__$/
+__DBC_INTERNAL ../include/db_int.in /^#define __DBC_INTERNAL \\$/
+__LPUT ../include/db_am.h /^#define __LPUT(dbc, lock) \\$/
+__P ../include/db.in /^#define __P(protos) protos \/* ANSI C prototypes /
+__P_DUPLICATE ../include/db_page.h /^#define __P_DUPLICATE 1 \/* Duplicate. DEPRECATED /
+__R_UNUSED ../include/db_185.in /^#define __R_UNUSED 2 \/* UNUSED *\/$/
+__TLPUT ../include/db_am.h /^#define __TLPUT(dbc, lock) \\$/
+__absname ../log/log_archive.c /^__absname(dbenv, pref, name, newnamep)$/
+__bam_30_btreemeta ../btree/bt_upgrade.c /^__bam_30_btreemeta(dbp, real_name, buf)$/
+__bam_31_btreemeta ../btree/bt_upgrade.c /^__bam_31_btreemeta(dbp, real_name, flags, fhp, h, /
+__bam_31_lbtree ../btree/bt_upgrade.c /^__bam_31_lbtree(dbp, real_name, flags, fhp, h, dir/
+__bam_adj_log ../btree/btree_auto.c /^__bam_adj_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_adj_print ../btree/btree_auto.c /^__bam_adj_print(dbenv, dbtp, lsnp, notused2, notus/
+__bam_adj_read ../btree/btree_auto.c /^__bam_adj_read(dbenv, recbuf, argpp)$/
+__bam_adj_recover ../btree/bt_rec.c /^__bam_adj_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_adjindx ../btree/bt_delete.c /^__bam_adjindx(dbc, h, indx, indx_copy, is_insert)$/
+__bam_adjust ../btree/bt_rsearch.c /^__bam_adjust(dbc, adjust)$/
+__bam_broot ../btree/bt_split.c /^__bam_broot(dbc, rootp, lp, rp)$/
+__bam_build ../btree/bt_put.c /^__bam_build(dbc, op, dbt, h, indx, nbytes)$/
+__bam_bulk ../btree/bt_cursor.c /^__bam_bulk(dbc, data, flags)$/
+__bam_bulk_duplicates ../btree/bt_cursor.c /^__bam_bulk_duplicates(dbc, pgno, dbuf, keyoff, off/
+__bam_bulk_overflow ../btree/bt_cursor.c /^__bam_bulk_overflow(dbc, len, pgno, dp)$/
+__bam_c_close ../btree/bt_cursor.c /^__bam_c_close(dbc, root_pgno, rmroot)$/
+__bam_c_count ../btree/bt_cursor.c /^__bam_c_count(dbc, recnop)$/
+__bam_c_del ../btree/bt_cursor.c /^__bam_c_del(dbc)$/
+__bam_c_destroy ../btree/bt_cursor.c /^__bam_c_destroy(dbc)$/
+__bam_c_dup ../btree/bt_cursor.c /^__bam_c_dup(orig_dbc, new_dbc)$/
+__bam_c_first ../btree/bt_cursor.c /^__bam_c_first(dbc)$/
+__bam_c_get ../btree/bt_cursor.c /^__bam_c_get(dbc, key, data, flags, pgnop)$/
+__bam_c_getstack ../btree/bt_cursor.c /^__bam_c_getstack(dbc)$/
+__bam_c_init ../btree/bt_cursor.c /^__bam_c_init(dbc, dbtype)$/
+__bam_c_last ../btree/bt_cursor.c /^__bam_c_last(dbc)$/
+__bam_c_next ../btree/bt_cursor.c /^__bam_c_next(dbc, initial_move, deleted_okay)$/
+__bam_c_physdel ../btree/bt_cursor.c /^__bam_c_physdel(dbc)$/
+__bam_c_prev ../btree/bt_cursor.c /^__bam_c_prev(dbc)$/
+__bam_c_put ../btree/bt_cursor.c /^__bam_c_put(dbc, key, data, flags, pgnop)$/
+__bam_c_refresh ../btree/bt_cursor.c /^__bam_c_refresh(dbc)$/
+__bam_c_reset ../btree/bt_cursor.c /^__bam_c_reset(cp)$/
+__bam_c_rget ../btree/bt_cursor.c /^__bam_c_rget(dbc, data)$/
+__bam_c_search ../btree/bt_cursor.c /^__bam_c_search(dbc, root_pgno, key, flags, exactp)/
+__bam_c_writelock ../btree/bt_cursor.c /^__bam_c_writelock(dbc)$/
+__bam_ca_delete ../btree/bt_curadj.c /^__bam_ca_delete(dbp, pgno, indx, delete)$/
+__bam_ca_di ../btree/bt_curadj.c /^__bam_ca_di(my_dbc, pgno, indx, adjust)$/
+__bam_ca_dup ../btree/bt_curadj.c /^__bam_ca_dup(my_dbc, first, fpgno, fi, tpgno, ti)$/
+__bam_ca_rsplit ../btree/bt_curadj.c /^__bam_ca_rsplit(my_dbc, fpgno, tpgno)$/
+__bam_ca_split ../btree/bt_curadj.c /^__bam_ca_split(my_dbc, ppgno, lpgno, rpgno, split_/
+__bam_ca_undodup ../btree/bt_curadj.c /^__bam_ca_undodup(dbp, first, fpgno, fi, ti)$/
+__bam_ca_undosplit ../btree/bt_curadj.c /^__bam_ca_undosplit(dbp, frompgno, topgno, lpgno, s/
+__bam_cadjust_log ../btree/btree_auto.c /^__bam_cadjust_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_cadjust_print ../btree/btree_auto.c /^__bam_cadjust_print(dbenv, dbtp, lsnp, notused2, n/
+__bam_cadjust_read ../btree/btree_auto.c /^__bam_cadjust_read(dbenv, recbuf, argpp)$/
+__bam_cadjust_recover ../btree/bt_rec.c /^__bam_cadjust_recover(dbenv, dbtp, lsnp, op, info)/
+__bam_cdel_log ../btree/btree_auto.c /^__bam_cdel_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_cdel_print ../btree/btree_auto.c /^__bam_cdel_print(dbenv, dbtp, lsnp, notused2, notu/
+__bam_cdel_read ../btree/btree_auto.c /^__bam_cdel_read(dbenv, recbuf, argpp)$/
+__bam_cdel_recover ../btree/bt_rec.c /^__bam_cdel_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_cmp ../btree/bt_compare.c /^__bam_cmp(dbp, dbt, h, indx, func, cmpp)$/
+__bam_copy ../btree/bt_split.c /^__bam_copy(dbp, pp, cp, nxt, stop)$/
+__bam_cprint ../btree/bt_curadj.c /^__bam_cprint(dbc)$/
+__bam_curadj_log ../btree/btree_auto.c /^__bam_curadj_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_curadj_print ../btree/btree_auto.c /^__bam_curadj_print(dbenv, dbtp, lsnp, notused2, no/
+__bam_curadj_read ../btree/btree_auto.c /^__bam_curadj_read(dbenv, recbuf, argpp)$/
+__bam_curadj_recover ../btree/bt_rec.c /^__bam_curadj_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_db_close ../btree/bt_method.c /^__bam_db_close(dbp)$/
+__bam_db_create ../btree/bt_method.c /^__bam_db_create(dbp)$/
+__bam_defcmp ../btree/bt_compare.c /^__bam_defcmp(dbp, a, b)$/
+__bam_defpfx ../btree/bt_compare.c /^__bam_defpfx(dbp, a, b)$/
+__bam_ditem ../btree/bt_delete.c /^__bam_ditem(dbc, h, indx)$/
+__bam_dpages ../btree/bt_delete.c /^__bam_dpages(dbc, stack_epg)$/
+__bam_dup_convert ../btree/bt_put.c /^__bam_dup_convert(dbc, h, indx)$/
+__bam_get_prev ../btree/bt_cursor.c /^__bam_get_prev(dbc)$/
+__bam_getboth_finddatum ../btree/bt_cursor.c /^__bam_getboth_finddatum(dbc, data)$/
+__bam_getbothc ../btree/bt_cursor.c /^__bam_getbothc(dbc, data)$/
+__bam_iitem ../btree/bt_put.c /^__bam_iitem(dbc, key, data, op, flags)$/
+__bam_init_print ../btree/btree_auto.c /^__bam_init_print(dbenv)$/
+__bam_init_recover ../btree/btree_auto.c /^__bam_init_recover(dbenv)$/
+__bam_isopd ../btree/bt_cursor.c /^__bam_isopd(dbc, pgnop)$/
+__bam_key_range ../btree/bt_stat.c /^__bam_key_range(dbp, txn, dbt, kp, flags)$/
+__bam_meta2pgset ../btree/bt_verify.c /^__bam_meta2pgset(dbp, vdp, btmeta, flags, pgset)$/
+__bam_metachk ../btree/bt_open.c /^__bam_metachk(dbp, name, btm)$/
+__bam_mswap ../btree/bt_conv.c /^__bam_mswap(pg)$/
+__bam_nrecs ../btree/bt_rsearch.c /^__bam_nrecs(dbc, rep)$/
+__bam_opd_cursor ../btree/bt_curadj.c /^__bam_opd_cursor(dbp, dbc, first, tpgno, ti)$/
+__bam_open ../btree/bt_open.c /^__bam_open(dbp, name, base_pgno, flags)$/
+__bam_ovput ../btree/bt_put.c /^__bam_ovput(dbc, type, pgno, h, indx, item)$/
+__bam_page ../btree/bt_split.c /^__bam_page(dbc, pp, cp)$/
+__bam_partsize ../btree/bt_put.c /^__bam_partsize(op, data, h, indx)$/
+__bam_pg_alloc1_print ../btree/btree_auto.c /^__bam_pg_alloc1_print(dbenv, dbtp, lsnp, notused2,/
+__bam_pg_alloc1_read ../btree/btree_auto.c /^__bam_pg_alloc1_read(dbenv, recbuf, argpp)$/
+__bam_pg_alloc_log ../btree/btree_auto.c /^__bam_pg_alloc_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_pg_alloc_print ../btree/btree_auto.c /^__bam_pg_alloc_print(dbenv, dbtp, lsnp, notused2, /
+__bam_pg_alloc_read ../btree/btree_auto.c /^__bam_pg_alloc_read(dbenv, recbuf, argpp)$/
+__bam_pg_alloc_recover ../btree/bt_rec.c /^__bam_pg_alloc_recover(dbenv, dbtp, lsnp, op, info/
+__bam_pg_free1_print ../btree/btree_auto.c /^__bam_pg_free1_print(dbenv, dbtp, lsnp, notused2, /
+__bam_pg_free1_read ../btree/btree_auto.c /^__bam_pg_free1_read(dbenv, recbuf, argpp)$/
+__bam_pg_free_log ../btree/btree_auto.c /^__bam_pg_free_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_pg_free_print ../btree/btree_auto.c /^__bam_pg_free_print(dbenv, dbtp, lsnp, notused2, n/
+__bam_pg_free_read ../btree/btree_auto.c /^__bam_pg_free_read(dbenv, recbuf, argpp)$/
+__bam_pg_free_recover ../btree/bt_rec.c /^__bam_pg_free_recover(dbenv, dbtp, lsnp, op, info)/
+__bam_pgin ../btree/bt_conv.c /^__bam_pgin(dbenv, pg, pp, cookie)$/
+__bam_pgout ../btree/bt_conv.c /^__bam_pgout(dbenv, pg, pp, cookie)$/
+__bam_pinsert ../btree/bt_split.c /^__bam_pinsert(dbc, parent, lchild, rchild, space_c/
+__bam_psplit ../btree/bt_split.c /^__bam_psplit(dbc, cp, lp, rp, splitret)$/
+__bam_rcuradj_log ../btree/btree_auto.c /^__bam_rcuradj_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_rcuradj_print ../btree/btree_auto.c /^__bam_rcuradj_print(dbenv, dbtp, lsnp, notused2, n/
+__bam_rcuradj_read ../btree/btree_auto.c /^__bam_rcuradj_read(dbenv, recbuf, argpp)$/
+__bam_rcuradj_recover ../btree/bt_rec.c /^__bam_rcuradj_recover(dbenv, dbtp, lsnp, op, info)/
+__bam_read_root ../btree/bt_open.c /^__bam_read_root(dbp, name, base_pgno, flags)$/
+__bam_reclaim ../btree/bt_reclaim.c /^__bam_reclaim(dbp, txn)$/
+__bam_repl_log ../btree/btree_auto.c /^__bam_repl_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_repl_print ../btree/btree_auto.c /^__bam_repl_print(dbenv, dbtp, lsnp, notused2, notu/
+__bam_repl_read ../btree/btree_auto.c /^__bam_repl_read(dbenv, recbuf, argpp)$/
+__bam_repl_recover ../btree/bt_rec.c /^__bam_repl_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_ritem ../btree/bt_put.c /^__bam_ritem(dbc, h, indx, data)$/
+__bam_root ../btree/bt_split.c /^__bam_root(dbc, cp)$/
+__bam_root_log ../btree/btree_auto.c /^__bam_root_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_root_print ../btree/btree_auto.c /^__bam_root_print(dbenv, dbtp, lsnp, notused2, notu/
+__bam_root_read ../btree/btree_auto.c /^__bam_root_read(dbenv, recbuf, argpp)$/
+__bam_root_recover ../btree/bt_rec.c /^__bam_root_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_rsearch ../btree/bt_rsearch.c /^__bam_rsearch(dbc, recnop, flags, stop, exactp)$/
+__bam_rsplit1_print ../btree/btree_auto.c /^__bam_rsplit1_print(dbenv, dbtp, lsnp, notused2, n/
+__bam_rsplit1_read ../btree/btree_auto.c /^__bam_rsplit1_read(dbenv, recbuf, argpp)$/
+__bam_rsplit_log ../btree/btree_auto.c /^__bam_rsplit_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_rsplit_print ../btree/btree_auto.c /^__bam_rsplit_print(dbenv, dbtp, lsnp, notused2, no/
+__bam_rsplit_read ../btree/btree_auto.c /^__bam_rsplit_read(dbenv, recbuf, argpp)$/
+__bam_rsplit_recover ../btree/bt_rec.c /^__bam_rsplit_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_safe_getdata ../btree/bt_verify.c /^__bam_safe_getdata(dbp, h, i, ovflok, dbt, freedbt/
+__bam_salvage ../btree/bt_verify.c /^__bam_salvage(dbp, vdp, pgno, pgtype, h, handle, c/
+__bam_salvage_walkdupint ../btree/bt_verify.c /^__bam_salvage_walkdupint(dbp, vdp, h, key, handle,/
+__bam_search ../btree/bt_search.c /^__bam_search(dbc, root_pgno, key, flags, stop, rec/
+__bam_set_bt_compare ../btree/bt_method.c /^__bam_set_bt_compare(dbp, func)$/
+__bam_set_bt_maxkey ../btree/bt_method.c /^__bam_set_bt_maxkey(dbp, bt_maxkey)$/
+__bam_set_bt_minkey ../btree/bt_method.c /^__bam_set_bt_minkey(dbp, bt_minkey)$/
+__bam_set_bt_prefix ../btree/bt_method.c /^__bam_set_bt_prefix(dbp, func)$/
+__bam_set_flags ../btree/bt_method.c /^__bam_set_flags(dbp, flagsp)$/
+__bam_split ../btree/bt_split.c /^__bam_split(dbc, arg, root_pgnop)$/
+__bam_split1_print ../btree/btree_auto.c /^__bam_split1_print(dbenv, dbtp, lsnp, notused2, no/
+__bam_split1_read ../btree/btree_auto.c /^__bam_split1_read(dbenv, recbuf, argpp)$/
+__bam_split_log ../btree/btree_auto.c /^__bam_split_log(dbenv, txnid, ret_lsnp, flags,$/
+__bam_split_print ../btree/btree_auto.c /^__bam_split_print(dbenv, dbtp, lsnp, notused2, not/
+__bam_split_read ../btree/btree_auto.c /^__bam_split_read(dbenv, recbuf, argpp)$/
+__bam_split_recover ../btree/bt_rec.c /^__bam_split_recover(dbenv, dbtp, lsnp, op, info)$/
+__bam_stat ../btree/bt_stat.c /^__bam_stat(dbp, spp, flags)$/
+__bam_stat_callback ../btree/bt_stat.c /^__bam_stat_callback(dbp, h, cookie, putp)$/
+__bam_stkgrow ../btree/bt_search.c /^__bam_stkgrow(dbenv, cp)$/
+__bam_stkrel ../btree/bt_search.c /^__bam_stkrel(dbc, flags)$/
+__bam_total ../btree/bt_rsearch.c /^__bam_total(h)$/
+__bam_traverse ../btree/bt_stat.c /^__bam_traverse(dbc, mode, root_pgno, callback, coo/
+__bam_truncate ../btree/bt_reclaim.c /^__bam_truncate(dbp, txn, countp)$/
+__bam_vrfy ../btree/bt_verify.c /^__bam_vrfy(dbp, vdp, h, pgno, flags)$/
+__bam_vrfy_inp ../btree/bt_verify.c /^__bam_vrfy_inp(dbp, vdp, h, pgno, nentriesp, flags/
+__bam_vrfy_itemorder ../btree/bt_verify.c /^__bam_vrfy_itemorder(dbp, vdp, h, pgno, nentries, /
+__bam_vrfy_meta ../btree/bt_verify.c /^__bam_vrfy_meta(dbp, vdp, meta, pgno, flags)$/
+__bam_vrfy_structure ../btree/bt_verify.c /^__bam_vrfy_structure(dbp, vdp, meta_pgno, flags)$/
+__bam_vrfy_subtree ../btree/bt_verify.c /^__bam_vrfy_subtree(dbp,$/
+__bam_vrfy_treeorder ../btree/bt_verify.c /^__bam_vrfy_treeorder(dbp, pgno, h, lp, rp, func, f/
+__bh ../include/mp.h /^struct __bh {$/
+__bhcmp ../mp/mp_sync.c /^__bhcmp(p1, p2)$/
+__btree ../include/btree.h /^struct __btree { \/* Btree access method. *\/$/
+__build_data ../log/log_archive.c /^__build_data(dbenv, pref, listp)$/
+__cmpfunc ../log/log_archive.c /^__cmpfunc(p1, p2)$/
+__crdel_delete_log ../db/crdel_auto.c /^__crdel_delete_log(dbenv, txnid, ret_lsnp, flags,$/
+__crdel_delete_print ../db/crdel_auto.c /^__crdel_delete_print(dbenv, dbtp, lsnp, notused2, /
+__crdel_delete_read ../db/crdel_auto.c /^__crdel_delete_read(dbenv, recbuf, argpp)$/
+__crdel_delete_recover ../db/crdel_rec.c /^__crdel_delete_recover(dbenv, dbtp, lsnp, op, info/
+__crdel_fileopen_log ../db/crdel_auto.c /^__crdel_fileopen_log(dbenv, txnid, ret_lsnp, flags/
+__crdel_fileopen_print ../db/crdel_auto.c /^__crdel_fileopen_print(dbenv, dbtp, lsnp, notused2/
+__crdel_fileopen_read ../db/crdel_auto.c /^__crdel_fileopen_read(dbenv, recbuf, argpp)$/
+__crdel_fileopen_recover ../db/crdel_rec.c /^__crdel_fileopen_recover(dbenv, dbtp, lsnp, op, in/
+__crdel_init_print ../db/crdel_auto.c /^__crdel_init_print(dbenv)$/
+__crdel_init_recover ../db/crdel_auto.c /^__crdel_init_recover(dbenv)$/
+__crdel_metapage_log ../db/crdel_auto.c /^__crdel_metapage_log(dbenv, txnid, ret_lsnp, flags/
+__crdel_metapage_print ../db/crdel_auto.c /^__crdel_metapage_print(dbenv, dbtp, lsnp, notused2/
+__crdel_metapage_read ../db/crdel_auto.c /^__crdel_metapage_read(dbenv, recbuf, argpp)$/
+__crdel_metapage_recover ../db/crdel_rec.c /^__crdel_metapage_recover(dbenv, dbtp, lsnp, op, in/
+__crdel_metasub_log ../db/crdel_auto.c /^__crdel_metasub_log(dbenv, txnid, ret_lsnp, flags,/
+__crdel_metasub_print ../db/crdel_auto.c /^__crdel_metasub_print(dbenv, dbtp, lsnp, notused2,/
+__crdel_metasub_read ../db/crdel_auto.c /^__crdel_metasub_read(dbenv, recbuf, argpp)$/
+__crdel_metasub_recover ../db/crdel_rec.c /^__crdel_metasub_recover(dbenv, dbtp, lsnp, op, inf/
+__crdel_old_delete_print ../db/crdel_auto.c /^__crdel_old_delete_print(dbenv, dbtp, lsnp, notuse/
+__crdel_old_delete_read ../db/crdel_auto.c /^__crdel_old_delete_read(dbenv, recbuf, argpp)$/
+__crdel_rename_log ../db/crdel_auto.c /^__crdel_rename_log(dbenv, txnid, ret_lsnp, flags,$/
+__crdel_rename_print ../db/crdel_auto.c /^__crdel_rename_print(dbenv, dbtp, lsnp, notused2, /
+__crdel_rename_read ../db/crdel_auto.c /^__crdel_rename_read(dbenv, recbuf, argpp)$/
+__crdel_rename_recover ../db/crdel_rec.c /^__crdel_rename_recover(dbenv, dbtp, lsnp, op, info/
+__cursor ../include/btree.h /^struct __cursor {$/
+__data ../env/db_salloc.c /^struct __data {$/
+__db ../include/db.in /^struct __db {$/
+__db185_open ../db185/db185.c /^__db185_open(file, oflags, mode, type, openinfo)$/
+__db_31_offdup ../db/db_upg_opd.c /^__db_31_offdup(dbp, real_name, fhp, sorted, pgnop)/
+__db_add_limbo ../db/db_dispatch.c /^__db_add_limbo(dbenv, info, fileid, pgno, count)$/
+__db_add_recovery ../db/db_dispatch.c /^__db_add_recovery(dbenv, func, ndx)$/
+__db_addpage_print ../db/db_auto.c /^__db_addpage_print(dbenv, dbtp, lsnp, notused2, no/
+__db_addpage_read ../db/db_auto.c /^__db_addpage_read(dbenv, recbuf, argpp)$/
+__db_addrem_log ../db/db_auto.c /^__db_addrem_log(dbenv, txnid, ret_lsnp, flags,$/
+__db_addrem_print ../db/db_auto.c /^__db_addrem_print(dbenv, dbtp, lsnp, notused2, not/
+__db_addrem_read ../db/db_auto.c /^__db_addrem_read(dbenv, recbuf, argpp)$/
+__db_addrem_recover ../db/db_rec.c /^__db_addrem_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_append_primary ../db/db_am.c /^__db_append_primary(dbc, key, data)$/
+__db_appname ../env/env_open.c /^__db_appname(dbenv, appname, dir, file, tmp_oflags/
+__db_apprec ../env/env_recover.c /^__db_apprec(dbenv, flags)$/
+__db_assert ../common/db_err.c /^__db_assert(failedexpr, file, line)$/
+__db_associate ../db/db_am.c /^__db_associate(dbp, sdbp, callback, flags)$/
+__db_associate_proc ../rpc_server/db_server_proc.c /^__db_associate_proc(dbpcl_id, sdbpcl_id,$/
+__db_associatechk ../db/db_iface.c /^__db_associatechk(dbp, sdbp, callback, flags)$/
+__db_backup_name ../db/db.c /^__db_backup_name(dbenv, name, backup, lsn)$/
+__db_big_log ../db/db_auto.c /^__db_big_log(dbenv, txnid, ret_lsnp, flags,$/
+__db_big_print ../db/db_auto.c /^__db_big_print(dbenv, dbtp, lsnp, notused2, notuse/
+__db_big_read ../db/db_auto.c /^__db_big_read(dbenv, recbuf, argpp)$/
+__db_big_recover ../db/db_rec.c /^__db_big_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_bmeta ../db/db_pr.c /^__db_bmeta(dbp, fp, h, flags)$/
+__db_bt_maxkey_proc ../rpc_server/db_server_proc.c /^__db_bt_maxkey_proc(dbpcl_id, maxkey, replyp)$/
+__db_bt_minkey_proc ../rpc_server/db_server_proc.c /^__db_bt_minkey_proc(dbpcl_id, minkey, replyp)$/
+__db_bt_stat ../include/db.in /^struct __db_bt_stat {$/
+__db_build_bi ../db/db_upg_opd.c /^__db_build_bi(dbp, fhp, ipage, page, indx, nomemp)/
+__db_build_ri ../db/db_upg_opd.c /^__db_build_ri(dbp, fhp, ipage, page, indx, nomemp)/
+__db_buildpartial ../db/db_cam.c /^__db_buildpartial(dbp, oldrec, partial, newrec)$/
+__db_byteorder ../common/db_byteorder.c /^__db_byteorder(dbenv, lorder)$/
+__db_byteswap ../db/db_conv.c /^__db_byteswap(dbenv, pg, h, pagesize, pgin)$/
+__db_c_cleanup ../db/db_cam.c /^__db_c_cleanup(dbc, dbc_n, failed)$/
+__db_c_close ../db/db_cam.c /^__db_c_close(dbc)$/
+__db_c_count ../db/db_cam.c /^__db_c_count(dbc, recnop, flags)$/
+__db_c_del ../db/db_cam.c /^__db_c_del(dbc, flags)$/
+__db_c_del_primary ../db/db_cam.c /^__db_c_del_primary(dbc)$/
+__db_c_del_secondary ../db/db_cam.c /^__db_c_del_secondary(dbc)$/
+__db_c_destroy ../db/db_cam.c /^__db_c_destroy(dbc)$/
+__db_c_dup ../db/db_cam.c /^__db_c_dup(dbc_orig, dbcp, flags)$/
+__db_c_get ../db/db_cam.c /^__db_c_get(dbc_arg, key, data, flags)$/
+__db_c_idup ../db/db_cam.c /^__db_c_idup(dbc_orig, dbcp, flags)$/
+__db_c_newopd ../db/db_cam.c /^__db_c_newopd(dbc_parent, root, dbcp)$/
+__db_c_pget ../db/db_cam.c /^__db_c_pget(dbc, skey, pkey, data, flags)$/
+__db_c_put ../db/db_cam.c /^__db_c_put(dbc_arg, key, data, flags)$/
+__db_c_secondary_get ../db/db_cam.c /^__db_c_secondary_get(dbc, skey, data, flags)$/
+__db_ccountchk ../db/db_iface.c /^__db_ccountchk(dbp, flags, isvalid)$/
+__db_cdelchk ../db/db_iface.c /^__db_cdelchk(dbp, flags, isrdonly, isvalid)$/
+__db_cgetchk ../db/db_iface.c /^__db_cgetchk(dbp, key, data, flags, isvalid)$/
+__db_close ../db/db.c /^__db_close(dbp, flags)$/
+__db_close_proc ../rpc_server/db_server_proc.c /^__db_close_proc(dbpcl_id, flags, replyp)$/
+__db_closechk ../db/db_iface.c /^__db_closechk(dbp, flags)$/
+__db_cpgetchk ../db/db_iface.c /^__db_cpgetchk(dbp, skey, pkey, data, flags, isvali/
+__db_cprint ../db/db_am.c /^__db_cprint(dbp)$/
+__db_cputchk ../db/db_iface.c /^__db_cputchk(dbp, key, data, flags, isrdonly, isva/
+__db_create_proc ../rpc_server/db_server_proc.c /^__db_create_proc(dbenvcl_id, flags, replyp)$/
+__db_curinval ../db/db_iface.c /^__db_curinval(dbenv)$/
+__db_cursor ../db/db_am.c /^__db_cursor(dbp, txn, dbcp, flags)$/
+__db_cursor_proc ../rpc_server/db_server_proc.c /^__db_cursor_proc(dbpcl_id, txnpcl_id,$/
+__db_cursorchk ../db/db_iface.c /^__db_cursorchk(dbp, flags, isrdonly)$/
+__db_db_associate_3003 ../rpc_client/db_server_clnt.c /^__db_db_associate_3003(argp, clnt)$/
+__db_db_bt_maxkey_3003 ../rpc_client/db_server_clnt.c /^__db_db_bt_maxkey_3003(argp, clnt)$/
+__db_db_bt_minkey_3003 ../rpc_client/db_server_clnt.c /^__db_db_bt_minkey_3003(argp, clnt)$/
+__db_db_close_3003 ../rpc_client/db_server_clnt.c /^__db_db_close_3003(argp, clnt)$/
+__db_db_create_3003 ../rpc_client/db_server_clnt.c /^__db_db_create_3003(argp, clnt)$/
+__db_db_cursor_3003 ../rpc_client/db_server_clnt.c /^__db_db_cursor_3003(argp, clnt)$/
+__db_db_del_3003 ../rpc_client/db_server_clnt.c /^__db_db_del_3003(argp, clnt)$/
+__db_db_extentsize_3003 ../rpc_client/db_server_clnt.c /^__db_db_extentsize_3003(argp, clnt)$/
+__db_db_flags_3003 ../rpc_client/db_server_clnt.c /^__db_db_flags_3003(argp, clnt)$/
+__db_db_get_3003 ../rpc_client/db_server_clnt.c /^__db_db_get_3003(argp, clnt)$/
+__db_db_h_ffactor_3003 ../rpc_client/db_server_clnt.c /^__db_db_h_ffactor_3003(argp, clnt)$/
+__db_db_h_nelem_3003 ../rpc_client/db_server_clnt.c /^__db_db_h_nelem_3003(argp, clnt)$/
+__db_db_join_3003 ../rpc_client/db_server_clnt.c /^__db_db_join_3003(argp, clnt)$/
+__db_db_key_range_3003 ../rpc_client/db_server_clnt.c /^__db_db_key_range_3003(argp, clnt)$/
+__db_db_lorder_3003 ../rpc_client/db_server_clnt.c /^__db_db_lorder_3003(argp, clnt)$/
+__db_db_open_3003 ../rpc_client/db_server_clnt.c /^__db_db_open_3003(argp, clnt)$/
+__db_db_pagesize_3003 ../rpc_client/db_server_clnt.c /^__db_db_pagesize_3003(argp, clnt)$/
+__db_db_pget_3003 ../rpc_client/db_server_clnt.c /^__db_db_pget_3003(argp, clnt)$/
+__db_db_put_3003 ../rpc_client/db_server_clnt.c /^__db_db_put_3003(argp, clnt)$/
+__db_db_re_delim_3003 ../rpc_client/db_server_clnt.c /^__db_db_re_delim_3003(argp, clnt)$/
+__db_db_re_len_3003 ../rpc_client/db_server_clnt.c /^__db_db_re_len_3003(argp, clnt)$/
+__db_db_re_pad_3003 ../rpc_client/db_server_clnt.c /^__db_db_re_pad_3003(argp, clnt)$/
+__db_db_remove_3003 ../rpc_client/db_server_clnt.c /^__db_db_remove_3003(argp, clnt)$/
+__db_db_rename_3003 ../rpc_client/db_server_clnt.c /^__db_db_rename_3003(argp, clnt)$/
+__db_db_stat_3003 ../rpc_client/db_server_clnt.c /^__db_db_stat_3003(argp, clnt)$/
+__db_db_sync_3003 ../rpc_client/db_server_clnt.c /^__db_db_sync_3003(argp, clnt)$/
+__db_db_truncate_3003 ../rpc_client/db_server_clnt.c /^__db_db_truncate_3003(argp, clnt)$/
+__db_dbc_close_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_close_3003(argp, clnt)$/
+__db_dbc_count_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_count_3003(argp, clnt)$/
+__db_dbc_del_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_del_3003(argp, clnt)$/
+__db_dbc_dup_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_dup_3003(argp, clnt)$/
+__db_dbc_get_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_get_3003(argp, clnt)$/
+__db_dbc_pget_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_pget_3003(argp, clnt)$/
+__db_dbc_put_3003 ../rpc_client/db_server_clnt.c /^__db_dbc_put_3003(argp, clnt)$/
+__db_dbenv_setup ../db/db.c /^__db_dbenv_setup(dbp, name, flags)$/
+__db_dbm_close ../dbm/dbm.c /^__db_dbm_close()$/
+__db_dbm_delete ../dbm/dbm.c /^__db_dbm_delete(key)$/
+__db_dbm_fetch ../dbm/dbm.c /^__db_dbm_fetch(key)$/
+__db_dbm_firstkey ../dbm/dbm.c /^__db_dbm_firstkey()$/
+__db_dbm_init ../dbm/dbm.c /^__db_dbm_init(file)$/
+__db_dbm_nextkey ../dbm/dbm.c /^__db_dbm_nextkey(key)$/
+__db_dbm_store ../dbm/dbm.c /^__db_dbm_store(key, dat)$/
+__db_dbopen ../db/db.c /^__db_dbopen(dbp, name, flags, mode, meta_pgno)$/
+__db_dbt ../include/db.in /^struct __db_dbt {$/
+__db_dbtype_to_string ../db/db_pr.c /^__db_dbtype_to_string(dbp)$/
+__db_debug_log ../db/db_auto.c /^__db_debug_log(dbenv, txnid, ret_lsnp, flags,$/
+__db_debug_print ../db/db_auto.c /^__db_debug_print(dbenv, dbtp, lsnp, notused2, notu/
+__db_debug_read ../db/db_auto.c /^__db_debug_read(dbenv, recbuf, argpp)$/
+__db_debug_recover ../db/db_rec.c /^__db_debug_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_del_proc ../rpc_server/db_server_proc.c /^__db_del_proc(dbpcl_id, txnpcl_id, keydlen,$/
+__db_delchk ../db/db_iface.c /^__db_delchk(dbp, key, flags, isrdonly)$/
+__db_delete ../db/db_am.c /^__db_delete(dbp, txn, key, flags)$/
+__db_des_destroy ../env/env_region.c /^__db_des_destroy(dbenv, rp)$/
+__db_des_get ../env/env_region.c /^__db_des_get(dbenv, env_infop, infop, rpp)$/
+__db_dispatch ../db/db_dispatch.c /^__db_dispatch(dbenv, db, lsnp, redo, info)$/
+__db_ditem ../db/db_dup.c /^__db_ditem(dbc, pagep, indx, nbytes)$/
+__db_do_the_limbo ../db/db_dispatch.c /^__db_do_the_limbo(dbenv, hp)$/
+__db_doff ../db/db_overflow.c /^__db_doff(dbc, pgno)$/
+__db_dump ../db/db_pr.c /^__db_dump(dbp, op, name)$/
+__db_duperr ../db/db_cam.c /^__db_duperr(dbp, flags)$/
+__db_e_attach ../env/env_region.c /^__db_e_attach(dbenv, init_flagsp)$/
+__db_e_detach ../env/env_region.c /^__db_e_detach(dbenv, destroy)$/
+__db_e_remfile ../env/env_region.c /^__db_e_remfile(dbenv)$/
+__db_e_remove ../env/env_region.c /^__db_e_remove(dbenv, force)$/
+__db_e_stat ../env/env_region.c /^__db_e_stat(dbenv, arg_renv, arg_regions, arg_regi/
+__db_env ../include/db.in /^struct __db_env {$/
+__db_env_cachesize_3003 ../rpc_client/db_server_clnt.c /^__db_env_cachesize_3003(argp, clnt)$/
+__db_env_close_3003 ../rpc_client/db_server_clnt.c /^__db_env_close_3003(argp, clnt)$/
+__db_env_config ../env/env_method.c /^__db_env_config(dbenv, i, flags)$/
+__db_env_create_3003 ../rpc_client/db_server_clnt.c /^__db_env_create_3003(argp, clnt)$/
+__db_env_flags_3003 ../rpc_client/db_server_clnt.c /^__db_env_flags_3003(argp, clnt)$/
+__db_env_open_3003 ../rpc_client/db_server_clnt.c /^__db_env_open_3003(argp, clnt)$/
+__db_env_remove_3003 ../rpc_client/db_server_clnt.c /^__db_env_remove_3003(argp, clnt)$/
+__db_eopnotsup ../common/db_err.c /^__db_eopnotsup(dbenv)$/
+__db_err ../common/db_err.c /^__db_err(dbenv, fmt, va_alist)$/
+__db_errcall ../common/db_err.c /^__db_errcall(dbenv, error, error_set, fmt, ap)$/
+__db_errfile ../common/db_err.c /^__db_errfile(dbenv, error, error_set, fmt, ap)$/
+__db_extentsize_proc ../rpc_server/db_server_proc.c /^__db_extentsize_proc(dbpcl_id, extentsize, replyp)/
+__db_faultmem ../env/env_region.c /^__db_faultmem(addr, size, created)$/
+__db_fcchk ../common/db_err.c /^__db_fcchk(dbenv, name, flags, flag1, flag2)$/
+__db_fchk ../common/db_err.c /^__db_fchk(dbenv, name, flags, ok_flags)$/
+__db_fcntl_mutex_destroy ../mutex/mut_fcntl.c /^__db_fcntl_mutex_destroy(mutexp)$/
+__db_fcntl_mutex_init ../mutex/mut_fcntl.c /^__db_fcntl_mutex_init(dbenv, mutexp, offset)$/
+__db_fcntl_mutex_lock ../mutex/mut_fcntl.c /^__db_fcntl_mutex_lock(dbenv, mutexp, fhp)$/
+__db_fcntl_mutex_unlock ../mutex/mut_fcntl.c /^__db_fcntl_mutex_unlock(dbenv, mutexp)$/
+__db_fd ../db/db_am.c /^__db_fd(dbp, fdp)$/
+__db_ferr ../common/db_err.c /^__db_ferr(dbenv, name, iscombo)$/
+__db_file_setup ../db/db.c /^__db_file_setup(dbp, name, flags, mode, meta_pgno,/
+__db_fileid_to_db ../log/log_rec.c /^__db_fileid_to_db(dbenv, dbpp, ndx, inc)$/
+__db_flags_proc ../rpc_server/db_server_proc.c /^__db_flags_proc(dbpcl_id, flags, replyp)$/
+__db_free ../db/db_meta.c /^__db_free(dbc, h)$/
+__db_get ../db/db_am.c /^__db_get(dbp, txn, key, data, flags)$/
+__db_get_byteswapped ../db/db_method.c /^__db_get_byteswapped(dbp)$/
+__db_get_proc ../rpc_server/db_server_proc.c /^__db_get_proc(dbpcl_id, txnpcl_id, keydlen,$/
+__db_get_type ../db/db_method.c /^__db_get_type(dbp)$/
+__db_getchk ../db/db_iface.c /^__db_getchk(dbp, key, data, flags)$/
+__db_getlong ../common/db_getlong.c /^__db_getlong(dbp, progname, p, min, max, storep)$/
+__db_getulong ../common/db_getlong.c /^__db_getulong(dbp, progname, p, min, max, storep)$/
+__db_goff ../db/db_overflow.c /^__db_goff(dbp, dbt, tlen, pgno, bpp, bpsz)$/
+__db_guesspgsize ../db/db_vrfy.c /^__db_guesspgsize(dbenv, fhp)$/
+__db_h_ffactor_proc ../rpc_server/db_server_proc.c /^__db_h_ffactor_proc(dbpcl_id, ffactor, replyp)$/
+__db_h_nelem_proc ../rpc_server/db_server_proc.c /^__db_h_nelem_proc(dbpcl_id, nelem, replyp)$/
+__db_h_stat ../include/db.in /^struct __db_h_stat {$/
+__db_hashinit ../env/db_shash.c /^__db_hashinit(begin, nelements)$/
+__db_hcreate ../hsearch/hsearch.c /^__db_hcreate(nel)$/
+__db_hdestroy ../hsearch/hsearch.c /^__db_hdestroy()$/
+__db_hmeta ../db/db_pr.c /^__db_hmeta(dbp, fp, h, flags)$/
+__db_home ../env/env_open.c /^__db_home(dbenv, db_home, flags)$/
+__db_hsearch ../hsearch/hsearch.c /^__db_hsearch(item, action)$/
+__db_icursor ../db/db_am.c /^__db_icursor(dbp, txn, dbtype, root, is_opd, locke/
+__db_ilock ../include/db.in /^struct __db_ilock {$/
+__db_init ../db/db_method.c /^__db_init(dbp, flags)$/
+__db_init_print ../db/db_auto.c /^__db_init_print(dbenv)$/
+__db_init_recover ../db/db_auto.c /^__db_init_recover(dbenv)$/
+__db_is_valid_magicno ../db/db_vrfy.c /^__db_is_valid_magicno(magic, typep)$/
+__db_is_valid_pagetype ../db/db_vrfy.c /^__db_is_valid_pagetype(type)$/
+__db_join ../db/db_join.c /^__db_join(primary, curslist, dbcp, flags)$/
+__db_join_close ../db/db_join.c /^__db_join_close(dbc)$/
+__db_join_cmp ../db/db_join.c /^__db_join_cmp(a, b)$/
+__db_join_del ../db/db_join.c /^__db_join_del(dbc, flags)$/
+__db_join_get ../db/db_join.c /^__db_join_get(dbc, key_arg, data_arg, flags)$/
+__db_join_getnext ../db/db_join.c /^__db_join_getnext(dbc, key, data, exhausted, opmod/
+__db_join_proc ../rpc_server/db_server_proc.c /^__db_join_proc(dbpcl_id, curs, curslen,$/
+__db_join_put ../db/db_join.c /^__db_join_put(dbc, key, data, flags)$/
+__db_joinchk ../db/db_iface.c /^__db_joinchk(dbp, curslist, flags)$/
+__db_joingetchk ../db/db_iface.c /^__db_joingetchk(dbp, key, flags)$/
+__db_jumptab ../include/os_jump.h /^struct __db_jumptab {$/
+__db_key_range ../db/db_method.c /^__db_key_range(dbp, txn, key, kr, flags)$/
+__db_key_range_proc ../rpc_server/db_server_proc.c /^__db_key_range_proc(dbpcl_id, txnpcl_id, keydlen,$/
+__db_lastpgno ../db/db_upg.c /^__db_lastpgno(dbp, real_name, fhp, pgno_lastp)$/
+__db_lget ../db/db_meta.c /^__db_lget(dbc, flags, pgno, mode, lkflags, lockp)$/
+__db_loadme ../db/db_pr.c /^__db_loadme()$/
+__db_lock ../include/lock.h /^struct __db_lock {$/
+__db_lock_stat ../include/db.in /^struct __db_lock_stat {$/
+__db_lock_u ../include/db.in /^struct __db_lock_u {$/
+__db_lockreq ../include/db.in /^struct __db_lockreq {$/
+__db_log ../include/log.h /^struct __db_log {$/
+__db_log2 ../common/db_log2.c /^__db_log2(num)$/
+__db_log_page ../db/db.c /^__db_log_page(dbp, name, lsn, pgno, page)$/
+__db_log_stat ../include/db.in /^struct __db_log_stat {$/
+__db_logmsg ../common/db_err.c /^__db_logmsg(dbenv, txnid, opname, flags, fmt, va_a/
+__db_lorder_proc ../rpc_server/db_server_proc.c /^__db_lorder_proc(dbpcl_id, lorder, replyp)$/
+__db_lprint ../db/db_meta.c /^__db_lprint(dbc)$/
+__db_lsn ../include/db.in /^struct __db_lsn {$/
+__db_maintinit ../include/mutex.h /^#define __db_maintinit(a, b, c) __db_shreg_mainti/
+__db_makecopy ../db/db.c /^__db_makecopy(src, dest)$/
+__db_map_rmid ../xa/xa_map.c /^__db_map_rmid(rmid, env)$/
+__db_map_xid ../xa/xa_map.c /^__db_map_xid(env, xid, off)$/
+__db_master_open ../db/db.c /^__db_master_open(subdbp, name, flags, mode, dbpp)$/
+__db_master_update ../db/db.c /^__db_master_update(mdbp, subdb, type, meta_pgnop, /
+__db_meta ../db/db_pr.c /^__db_meta(dbp, dbmeta, fp, fn, flags)$/
+__db_meta2pgset ../db/db_vrfy.c /^__db_meta2pgset(dbp, vdp, pgno, flags, pgset)$/
+__db_metabegin ../db/db.c /^__db_metabegin(dbp, lockp)$/
+__db_metaend ../db/db.c /^__db_metaend(dbp, lockp, commit, callback, cookie)/
+__db_metaswap ../db/db_conv.c /^__db_metaswap(pg)$/
+__db_mi_env ../env/env_method.c /^__db_mi_env(dbenv, name)$/
+__db_mi_open ../env/env_method.c /^__db_mi_open(dbenv, name, after)$/
+__db_missing_txn_err ../common/db_err.c /^__db_missing_txn_err(dbp)$/
+__db_moff ../db/db_overflow.c /^__db_moff(dbp, dbt, pgno, tlen, cmpfunc, cmpp)$/
+__db_mpool ../include/mp.h /^struct __db_mpool {$/
+__db_mpool_finfo ../include/db.in /^struct __db_mpool_finfo {$/
+__db_mpool_fstat ../include/db.in /^struct __db_mpool_fstat {$/
+__db_mpool_stat ../include/db.in /^struct __db_mpool_stat {$/
+__db_mpoolfile ../include/mp.h /^struct __db_mpoolfile {$/
+__db_mpreg ../include/mp.h /^struct __db_mpreg {$/
+__db_mutex_alloc ../mutex/mutex.c /^__db_mutex_alloc(dbenv, infop, is_locked, storep)$/
+__db_mutex_destroy ../include/mutex.h /^#define __db_mutex_destroy(a) __db_pthread_mutex_/
+__db_mutex_free ../mutex/mutex.c /^__db_mutex_free(dbenv, infop, mutexp)$/
+__db_mutex_init ../include/mutex.h /^#define __db_mutex_init(a, b, c, d) __db_pthread_m/
+__db_mutex_lock ../include/mutex.h /^#define __db_mutex_lock(a, b, c) __db_pthread_mute/
+__db_mutex_unlock ../include/mutex.h /^#define __db_mutex_unlock(a, b) __db_pthread_mute/
+__db_ndbm_clearerr ../dbm/dbm.c /^__db_ndbm_clearerr(dbm)$/
+__db_ndbm_close ../dbm/dbm.c /^__db_ndbm_close(dbm)$/
+__db_ndbm_delete ../dbm/dbm.c /^__db_ndbm_delete(dbm, key)$/
+__db_ndbm_dirfno ../dbm/dbm.c /^__db_ndbm_dirfno(dbm)$/
+__db_ndbm_error ../dbm/dbm.c /^__db_ndbm_error(dbm)$/
+__db_ndbm_fetch ../dbm/dbm.c /^__db_ndbm_fetch(dbm, key)$/
+__db_ndbm_firstkey ../dbm/dbm.c /^__db_ndbm_firstkey(dbm)$/
+__db_ndbm_nextkey ../dbm/dbm.c /^__db_ndbm_nextkey(dbm)$/
+__db_ndbm_open ../dbm/dbm.c /^__db_ndbm_open(file, oflags, mode)$/
+__db_ndbm_pagfno ../dbm/dbm.c /^__db_ndbm_pagfno(dbm)$/
+__db_ndbm_rdonly ../dbm/dbm.c /^__db_ndbm_rdonly(dbm)$/
+__db_ndbm_store ../dbm/dbm.c /^__db_ndbm_store(dbm, key, data, flags)$/
+__db_new ../db/db_meta.c /^__db_new(dbc, type, pagepp)$/
+__db_no_open ../dbm/dbm.c /^__db_no_open()$/
+__db_noop_log ../db/db_auto.c /^__db_noop_log(dbenv, txnid, ret_lsnp, flags,$/
+__db_noop_print ../db/db_auto.c /^__db_noop_print(dbenv, dbtp, lsnp, notused2, notus/
+__db_noop_read ../db/db_auto.c /^__db_noop_read(dbenv, recbuf, argpp)$/
+__db_noop_recover ../db/db_rec.c /^__db_noop_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_nosystemmem ../os/os_map.c /^__db_nosystemmem(dbenv)$/
+__db_not_txn_env ../common/db_err.c /^__db_not_txn_env(dbp)$/
+__db_oflags ../os/os_oflags.c /^__db_oflags(oflags)$/
+__db_omode ../os/os_oflags.c /^__db_omode(perm)$/
+__db_open ../db/db.c /^__db_open(dbp, name, subdb, type, flags, mode)$/
+__db_open_proc ../rpc_server/db_server_proc.c /^__db_open_proc(dbpcl_id, name, subdb,$/
+__db_ovref ../db/db_overflow.c /^__db_ovref(dbc, pgno, adjust)$/
+__db_ovref_log ../db/db_auto.c /^__db_ovref_log(dbenv, txnid, ret_lsnp, flags,$/
+__db_ovref_print ../db/db_auto.c /^__db_ovref_print(dbenv, dbtp, lsnp, notused2, notu/
+__db_ovref_read ../db/db_auto.c /^__db_ovref_read(dbenv, recbuf, argpp)$/
+__db_ovref_recover ../db/db_rec.c /^__db_ovref_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_page_pass ../db/db_upg.c /^__db_page_pass(dbp, real_name, flags, fl, fhp)$/
+__db_pagesize_proc ../rpc_server/db_server_proc.c /^__db_pagesize_proc(dbpcl_id, pagesize, replyp)$/
+__db_pagetype_to_string ../db/db_pr.c /^__db_pagetype_to_string(type)$/
+__db_panic ../common/db_err.c /^__db_panic(dbenv, errval)$/
+__db_panic_msg ../common/db_err.c /^__db_panic_msg(dbenv)$/
+__db_parse ../env/env_open.c /^__db_parse(dbenv, s)$/
+__db_partsize ../db/db_cam.c /^__db_partsize(nbytes, data)$/
+__db_pg_alloc_log ../include/db_am.h /^#define __db_pg_alloc_log __bam_pg_alloc_log$/
+__db_pg_free_log ../include/db_am.h /^#define __db_pg_free_log __bam_pg_free_log$/
+__db_pgerr ../common/db_err.c /^__db_pgerr(dbp, pgno)$/
+__db_pget ../db/db_am.c /^__db_pget(dbp, txn, skey, pkey, data, flags)$/
+__db_pget_proc ../rpc_server/db_server_proc.c /^__db_pget_proc(dbpcl_id, txnpcl_id, skeydlen,$/
+__db_pgetchk ../db/db_iface.c /^__db_pgetchk(dbp, skey, pkey, data, flags)$/
+__db_pgfmt ../common/db_err.c /^__db_pgfmt(dbp, pgno)$/
+__db_pgin ../db/db_conv.c /^__db_pgin(dbenv, pg, pp, cookie)$/
+__db_pgout ../db/db_conv.c /^__db_pgout(dbenv, pg, pp, cookie)$/
+__db_pitem ../db/db_dup.c /^__db_pitem(dbc, pagep, indx, nbytes, hdr, data)$/
+__db_poff ../db/db_overflow.c /^__db_poff(dbc, dbt, pgnop)$/
+__db_pr ../db/db_pr.c /^__db_pr(p, len)$/
+__db_prdb ../db/db_pr.c /^__db_prdb(dbp, fp, flags)$/
+__db_prdbt ../db/db_pr.c /^__db_prdbt(dbtp, checkprint, prefix, handle, callb/
+__db_prflags ../db/db_pr.c /^__db_prflags(flags, fn, fp)$/
+__db_prfooter ../db/db_pr.c /^__db_prfooter(handle, callback)$/
+__db_prheader ../db/db_pr.c /^__db_prheader(dbp, subname, pflag, keyflag, handle/
+__db_prinit ../db/db_pr.c /^__db_prinit(fp)$/
+__db_prnpage ../db/db_pr.c /^__db_prnpage(dbp, pgno)$/
+__db_proff ../db/db_pr.c /^__db_proff(vp)$/
+__db_prpage ../db/db_pr.c /^__db_prpage(dbp, h, flags)$/
+__db_prqueue ../qam/qam_method.c /^__db_prqueue(dbp, flags)$/
+__db_prtree ../db/db_pr.c /^__db_prtree(dbp, flags)$/
+__db_psize ../db/db_pr.c /^__db_psize(dbp)$/
+__db_pthread_mutex_destroy ../mutex/mut_pthread.c /^__db_pthread_mutex_destroy(mutexp)$/
+__db_pthread_mutex_init ../mutex/mut_pthread.c /^__db_pthread_mutex_init(dbenv, mutexp, flags)$/
+__db_pthread_mutex_lock ../mutex/mut_pthread.c /^__db_pthread_mutex_lock(dbenv, mutexp)$/
+__db_pthread_mutex_unlock ../mutex/mut_pthread.c /^__db_pthread_mutex_unlock(dbenv, mutexp)$/
+__db_put ../db/db_am.c /^__db_put(dbp, txn, key, data, flags)$/
+__db_put_proc ../rpc_server/db_server_proc.c /^__db_put_proc(dbpcl_id, txnpcl_id, keydlen,$/
+__db_putchk ../db/db_iface.c /^__db_putchk(dbp, key, data, flags, isrdonly, isdup/
+__db_qam_stat ../include/db.in /^struct __db_qam_stat {$/
+__db_qmeta ../db/db_pr.c /^__db_qmeta(dbp, fp, h, flags)$/
+__db_r_attach ../env/env_region.c /^__db_r_attach(dbenv, infop, size)$/
+__db_r_detach ../env/env_region.c /^__db_r_detach(dbenv, infop, destroy)$/
+__db_rdonly ../db/db_iface.c /^__db_rdonly(dbenv, name)$/
+__db_re_delim_proc ../rpc_server/db_server_proc.c /^__db_re_delim_proc(dbpcl_id, delim, replyp)$/
+__db_re_len_proc ../rpc_server/db_server_proc.c /^__db_re_len_proc(dbpcl_id, len, replyp)$/
+__db_re_pad_proc ../rpc_server/db_server_proc.c /^__db_re_pad_proc(dbpcl_id, pad, replyp)$/
+__db_real_err ../common/db_err.c /^__db_real_err(dbenv, error, error_set, stderr_defa/
+__db_real_log ../common/db_err.c /^__db_real_log(dbenv, txnid, opname, flags, fmt, ap/
+__db_reclaim_callback ../db/db_reclaim.c /^__db_reclaim_callback(dbp, p, cookie, putp)$/
+__db_refresh ../db/db.c /^__db_refresh(dbp)$/
+__db_reginfo_t ../include/region.h /^struct __db_reginfo_t { \/* __db_r_attach IN para/
+__db_region_destroy ../env/env_region.c /^__db_region_destroy(dbenv, infop)$/
+__db_relink ../db/db_dup.c /^__db_relink(dbc, add_rem, pagep, new_next, needloc/
+__db_relink_log ../db/db_auto.c /^__db_relink_log(dbenv, txnid, ret_lsnp, flags,$/
+__db_relink_print ../db/db_auto.c /^__db_relink_print(dbenv, dbtp, lsnp, notused2, not/
+__db_relink_read ../db/db_auto.c /^__db_relink_read(dbenv, recbuf, argpp)$/
+__db_relink_recover ../db/db_rec.c /^__db_relink_recover(dbenv, dbtp, lsnp, op, info)$/
+__db_remove ../db/db.c /^__db_remove(dbp, name, subdb, flags)$/
+__db_remove_callback ../db/db.c /^__db_remove_callback(dbp, cookie)$/
+__db_remove_proc ../rpc_server/db_server_proc.c /^__db_remove_proc(dbpcl_id, name, subdb,$/
+__db_removechk ../db/db_iface.c /^__db_removechk(dbp, flags)$/
+__db_rename ../db/db.c /^__db_rename(dbp, filename, subdb, newname, flags)$/
+__db_rename_proc ../rpc_server/db_server_proc.c /^__db_rename_proc(dbpcl_id, name, subdb,$/
+__db_ret ../db/db_ret.c /^__db_ret(dbp, h, indx, dbt, memp, memsize)$/
+__db_retcopy ../db/db_ret.c /^__db_retcopy(dbp, dbt, data, len, memp, memsize)$/
+__db_rmid_to_env ../xa/xa_map.c /^__db_rmid_to_env(rmid, envp)$/
+__db_rpath ../os/os_rpath.c /^__db_rpath(path)$/
+__db_s_done ../db/db_cam.c /^__db_s_done(sdbp)$/
+__db_s_first ../db/db_cam.c /^__db_s_first(pdbp)$/
+__db_s_next ../db/db_cam.c /^__db_s_next(sdbpp)$/
+__db_safe_goff ../db/db_overflow.c /^__db_safe_goff(dbp, vdp, pgno, dbt, buf, flags)$/
+__db_salvage ../db/db_vrfy.c /^__db_salvage(dbp, vdp, pgno, h, handle, callback, /
+__db_salvage_destroy ../db/db_vrfyutil.c /^__db_salvage_destroy(vdp)$/
+__db_salvage_duptree ../db/db_vrfy.c /^__db_salvage_duptree(dbp, vdp, pgno, key, handle, /
+__db_salvage_getnext ../db/db_vrfyutil.c /^__db_salvage_getnext(vdp, pgnop, pgtypep)$/
+__db_salvage_init ../db/db_vrfyutil.c /^__db_salvage_init(vdp)$/
+__db_salvage_isdone ../db/db_vrfyutil.c /^__db_salvage_isdone(vdp, pgno)$/
+__db_salvage_markdone ../db/db_vrfyutil.c /^__db_salvage_markdone(vdp, pgno)$/
+__db_salvage_markneeded ../db/db_vrfyutil.c /^__db_salvage_markneeded(vdp, pgno, pgtype)$/
+__db_salvage_subdbpg ../db/db_vrfy.c /^__db_salvage_subdbpg(dbp, vdp, master, handle, cal/
+__db_salvage_subdbs ../db/db_vrfy.c /^__db_salvage_subdbs(dbp, vdp, handle, callback, fl/
+__db_salvage_unknowns ../db/db_vrfy.c /^__db_salvage_unknowns(dbp, vdp, handle, callback, /
+__db_schema_init ../db/db.c /^__db_schema_init(dbp, command, name, subdb, lockp,/
+__db_secondary_close ../db/db_am.c /^__db_secondary_close(sdbp, flags)$/
+__db_secondary_get ../db/db_am.c /^__db_secondary_get(sdbp, txn, skey, data, flags)$/
+__db_set_alloc ../db/db_method.c /^__db_set_alloc(dbp, mal_func, real_func, free_func/
+__db_set_append_recno ../db/db_method.c /^__db_set_append_recno(dbp, func)$/
+__db_set_cachesize ../db/db_method.c /^__db_set_cachesize(dbp, cache_gbytes, cache_bytes,/
+__db_set_dup_compare ../db/db_method.c /^__db_set_dup_compare(dbp, func)$/
+__db_set_errcall ../db/db_method.c /^__db_set_errcall(dbp, errcall)$/
+__db_set_errfile ../db/db_method.c /^__db_set_errfile(dbp, errfile)$/
+__db_set_errpfx ../db/db_method.c /^__db_set_errpfx(dbp, errpfx)$/
+__db_set_feedback ../db/db_method.c /^__db_set_feedback(dbp, feedback)$/
+__db_set_flags ../db/db_method.c /^__db_set_flags(dbp, flags)$/
+__db_set_lorder ../db/db_method.c /^__db_set_lorder(dbp, db_lorder)$/
+__db_set_pagesize ../db/db_method.c /^__db_set_pagesize(dbp, db_pagesize)$/
+__db_set_paniccall ../db/db_method.c /^__db_set_paniccall(dbp, paniccall)$/
+__db_set_pgsize ../db/db.c /^__db_set_pgsize(dbp, fhp, name)$/
+__db_shalloc ../env/db_salloc.c /^__db_shalloc(p, len, align, retp)$/
+__db_shalloc_dump ../env/db_salloc.c /^__db_shalloc_dump(addr, fp)$/
+__db_shalloc_free ../env/db_salloc.c /^__db_shalloc_free(regionp, ptr)$/
+__db_shalloc_init ../env/db_salloc.c /^__db_shalloc_init(area, size)$/
+__db_shalloc_size ../env/db_salloc.c /^__db_shalloc_size(len, align)$/
+__db_shlocks_clear ../include/mutex.h /^#define __db_shlocks_clear(a, b, c) __db_shreg_loc/
+__db_shlocks_destroy ../include/mutex.h /^#define __db_shlocks_destroy(a, b) __db_shreg_lock/
+__db_shmutex_init ../include/mutex.h /^#define __db_shmutex_init(a, b, c, d, e, f) \\$/
+__db_shreg_locks_clear ../mutex/mutex.c /^__db_shreg_locks_clear(mutexp, infop, rp)$/
+__db_shreg_locks_destroy ../mutex/mutex.c /^__db_shreg_locks_destroy(infop, rp)$/
+__db_shreg_locks_record ../mutex/mutex.c /^__db_shreg_locks_record(dbenv, mutexp, infop, rp)$/
+__db_shreg_maintinit ../mutex/mutex.c /^__db_shreg_maintinit(infop, addr, size)$/
+__db_shreg_mutex_init ../mutex/mutex.c /^__db_shreg_mutex_init(dbenv, mutexp, offset, flags/
+__db_shsizeof ../env/db_salloc.c /^__db_shsizeof(ptr)$/
+__db_split_print ../db/db_auto.c /^__db_split_print(dbenv, dbtp, lsnp, notused2, notu/
+__db_split_read ../db/db_auto.c /^__db_split_read(dbenv, recbuf, argpp)$/
+__db_stat_proc ../rpc_server/db_server_proc.c /^__db_stat_proc(dbpcl_id, flags, replyp, freep)$/
+__db_statchk ../db/db_iface.c /^__db_statchk(dbp, flags)$/
+__db_subdb_remove ../db/db.c /^__db_subdb_remove(dbp, name, subdb)$/
+__db_subdb_rename ../db/db.c /^__db_subdb_rename(dbp, name, subdb, newname)$/
+__db_sync ../db/db_am.c /^__db_sync(dbp, flags)$/
+__db_sync_proc ../rpc_server/db_server_proc.c /^__db_sync_proc(dbpcl_id, flags, replyp)$/
+__db_syncchk ../db/db_iface.c /^__db_syncchk(dbp, flags)$/
+__db_tablesize ../env/db_shash.c /^__db_tablesize(n_buckets)$/
+__db_tas_mutex_destroy ../mutex/mut_tas.c /^__db_tas_mutex_destroy(mutexp)$/
+__db_tas_mutex_init ../mutex/mut_tas.c /^__db_tas_mutex_init(dbenv, mutexp, flags)$/
+__db_tas_mutex_lock ../mutex/mut_tas.c /^__db_tas_mutex_lock(dbenv, mutexp)$/
+__db_tas_mutex_unlock ../mutex/mut_tas.c /^__db_tas_mutex_unlock(dbenv, mutexp)$/
+__db_testcopy ../db/db.c /^__db_testcopy(dbp, name)$/
+__db_testdocopy ../db/db.c /^__db_testdocopy(dbp, name)$/
+__db_tmp_open ../env/env_open.c /^__db_tmp_open(dbenv, tmp_oflags, path, fhp)$/
+__db_traverse_big ../db/db_reclaim.c /^__db_traverse_big(dbp, pgno, callback, cookie)$/
+__db_truncate ../db/db.c /^__db_truncate(dbp, name, subdb, countp, flags)$/
+__db_truncate_callback ../db/db_reclaim.c /^__db_truncate_callback(dbp, p, cookie, putp)$/
+__db_truncate_proc ../rpc_server/db_server_proc.c /^__db_truncate_proc(dbpcl_id, name, subdb,$/
+__db_txn ../include/txn.h /^struct __db_txn {$/
+__db_txn_abort_3003 ../rpc_client/db_server_clnt.c /^__db_txn_abort_3003(argp, clnt)$/
+__db_txn_active ../include/db.in /^struct __db_txn_active {$/
+__db_txn_begin_3003 ../rpc_client/db_server_clnt.c /^__db_txn_begin_3003(argp, clnt)$/
+__db_txn_commit_3003 ../rpc_client/db_server_clnt.c /^__db_txn_commit_3003(argp, clnt)$/
+__db_txn_prepare_3003 ../rpc_client/db_server_clnt.c /^__db_txn_prepare_3003(argp, clnt)$/
+__db_txn_recover_3003 ../rpc_client/db_server_clnt.c /^__db_txn_recover_3003(argp, clnt)$/
+__db_txn_stat ../include/db.in /^struct __db_txn_stat {$/
+__db_txnhead ../include/db_dispatch.h /^struct __db_txnhead {$/
+__db_txnlist ../include/db_dispatch.h /^struct __db_txnlist {$/
+__db_txnlist_add ../db/db_dispatch.c /^__db_txnlist_add(dbenv, listp, txnid, status)$/
+__db_txnlist_close ../db/db_dispatch.c /^__db_txnlist_close(listp, lid, count)$/
+__db_txnlist_delete ../db/db_dispatch.c /^__db_txnlist_delete(dbenv, listp, name, lid, delet/
+__db_txnlist_end ../db/db_dispatch.c /^__db_txnlist_end(dbenv, listp)$/
+__db_txnlist_find ../db/db_dispatch.c /^__db_txnlist_find(dbenv, listp, txnid)$/
+__db_txnlist_find_internal ../db/db_dispatch.c /^__db_txnlist_find_internal(dbenv, listp, type, txn/
+__db_txnlist_gen ../db/db_dispatch.c /^__db_txnlist_gen(listp, incr)$/
+__db_txnlist_init ../db/db_dispatch.c /^__db_txnlist_init(dbenv, retp)$/
+__db_txnlist_lsnadd ../db/db_dispatch.c /^__db_txnlist_lsnadd(dbenv, listp, lsnp, flags)$/
+__db_txnlist_lsninit ../db/db_dispatch.c /^__db_txnlist_lsninit(dbenv, hp, lsnp)$/
+__db_txnlist_pgnoadd ../db/db_dispatch.c /^__db_txnlist_pgnoadd(dbenv, hp, fileid, uid, fname/
+__db_txnlist_print ../db/db_dispatch.c /^__db_txnlist_print(listp)$/
+__db_txnlist_remove ../db/db_dispatch.c /^__db_txnlist_remove(dbenv, listp, txnid)$/
+__db_txnmgr ../include/txn.h /^struct __db_txnmgr {$/
+__db_txnregion ../include/txn.h /^struct __db_txnregion {$/
+__db_unknown_flag ../common/db_err.c /^__db_unknown_flag(dbenv, routine, flag)$/
+__db_unknown_type ../common/db_err.c /^__db_unknown_type(dbenv, routine, type)$/
+__db_unmap_rmid ../xa/xa_map.c /^__db_unmap_rmid(rmid)$/
+__db_unmap_xid ../xa/xa_map.c /^__db_unmap_xid(env, xid, off)$/
+__db_up_ovref ../db/db_upg_opd.c /^__db_up_ovref(dbp, fhp, pgno)$/
+__db_upgrade ../db/db_upg.c /^__db_upgrade(dbp, fname, flags)$/
+__db_util_interrupted ../common/util_sig.c /^__db_util_interrupted()$/
+__db_util_logset ../common/util_log.c /^__db_util_logset(progname, fname)$/
+__db_util_siginit ../common/util_sig.c /^__db_util_siginit()$/
+__db_util_sigresend ../common/util_sig.c /^__db_util_sigresend()$/
+__db_verify ../db/db_vrfy.c /^__db_verify(dbp, file, database, outfile, flags)$/
+__db_verify_callback ../db/db_vrfy.c /^__db_verify_callback(handle, str_arg)$/
+__db_verify_internal ../db/db_vrfy.c /^__db_verify_internal(dbp_orig, name, subdb, handle/
+__db_vrfy_ccclose ../db/db_vrfyutil.c /^__db_vrfy_ccclose(dbc)$/
+__db_vrfy_ccnext ../db/db_vrfyutil.c /^__db_vrfy_ccnext(dbc, cipp)$/
+__db_vrfy_ccset ../db/db_vrfyutil.c /^__db_vrfy_ccset(dbc, pgno, cipp)$/
+__db_vrfy_childcursor ../db/db_vrfyutil.c /^__db_vrfy_childcursor(vdp, dbcp)$/
+__db_vrfy_childput ../db/db_vrfyutil.c /^__db_vrfy_childput(vdp, pgno, cip)$/
+__db_vrfy_common ../db/db_vrfy.c /^__db_vrfy_common(dbp, vdp, h, pgno, flags)$/
+__db_vrfy_datapage ../db/db_vrfy.c /^__db_vrfy_datapage(dbp, vdp, h, pgno, flags)$/
+__db_vrfy_dbinfo_create ../db/db_vrfyutil.c /^__db_vrfy_dbinfo_create (dbenv, pgsize, vdpp)$/
+__db_vrfy_dbinfo_destroy ../db/db_vrfyutil.c /^__db_vrfy_dbinfo_destroy(dbenv, vdp)$/
+__db_vrfy_duptype ../db/db_vrfy.c /^__db_vrfy_duptype(dbp, vdp, pgno, flags)$/
+__db_vrfy_freelist ../db/db_vrfy.c /^__db_vrfy_freelist(dbp, vdp, meta, flags)$/
+__db_vrfy_getpageinfo ../db/db_vrfyutil.c /^__db_vrfy_getpageinfo(vdp, pgno, pipp)$/
+__db_vrfy_inpitem ../db/db_vrfy.c /^__db_vrfy_inpitem(dbp, h, pgno, i, is_btree, flags/
+__db_vrfy_invalid ../db/db_vrfy.c /^__db_vrfy_invalid(dbp, vdp, h, pgno, flags)$/
+__db_vrfy_meta ../db/db_vrfy.c /^__db_vrfy_meta(dbp, vdp, meta, pgno, flags)$/
+__db_vrfy_orderchkonly ../db/db_vrfy.c /^__db_vrfy_orderchkonly(dbp, vdp, name, subdb, flag/
+__db_vrfy_overflow ../db/db_overflow.c /^__db_vrfy_overflow(dbp, vdp, h, pgno, flags)$/
+__db_vrfy_ovfl_structure ../db/db_overflow.c /^__db_vrfy_ovfl_structure(dbp, vdp, pgno, tlen, fla/
+__db_vrfy_pageinfo_create ../db/db_vrfyutil.c /^__db_vrfy_pageinfo_create(pgipp)$/
+__db_vrfy_pagezero ../db/db_vrfy.c /^__db_vrfy_pagezero(dbp, vdp, fhp, flags)$/
+__db_vrfy_pgset ../db/db_vrfyutil.c /^__db_vrfy_pgset(dbenv, pgsize, dbpp)$/
+__db_vrfy_pgset_dec ../db/db_vrfyutil.c /^__db_vrfy_pgset_dec(dbp, pgno)$/
+__db_vrfy_pgset_get ../db/db_vrfyutil.c /^__db_vrfy_pgset_get(dbp, pgno, valp)$/
+__db_vrfy_pgset_iinc ../db/db_vrfyutil.c /^__db_vrfy_pgset_iinc(dbp, pgno, i)$/
+__db_vrfy_pgset_inc ../db/db_vrfyutil.c /^__db_vrfy_pgset_inc(dbp, pgno)$/
+__db_vrfy_pgset_next ../db/db_vrfyutil.c /^__db_vrfy_pgset_next(dbc, pgnop)$/
+__db_vrfy_putpageinfo ../db/db_vrfyutil.c /^__db_vrfy_putpageinfo(dbenv, vdp, pip)$/
+__db_vrfy_struct_feedback ../db/db_vrfy.c /^__db_vrfy_struct_feedback(dbp, vdp)$/
+__db_vrfy_structure ../db/db_vrfy.c /^__db_vrfy_structure(dbp, vdp, dbname, meta_pgno, f/
+__db_vrfy_subdbs ../db/db_vrfy.c /^__db_vrfy_subdbs(dbp, vdp, dbname, flags)$/
+__db_vrfy_walkpages ../db/db_vrfy.c /^__db_vrfy_walkpages(dbp, vdp, handle, callback, fl/
+__db_wrlock_err ../db/db_cam.c /^__db_wrlock_err(dbenv)$/
+__db_xa_close ../xa/xa.c /^__db_xa_close(xa_info, rmid, flags)$/
+__db_xa_commit ../xa/xa.c /^__db_xa_commit(xid, rmid, flags)$/
+__db_xa_complete ../xa/xa.c /^__db_xa_complete(handle, retval, rmid, flags)$/
+__db_xa_create ../xa/xa_db.c /^__db_xa_create(dbp)$/
+__db_xa_end ../xa/xa.c /^__db_xa_end(xid, rmid, flags)$/
+__db_xa_forget ../xa/xa.c /^__db_xa_forget(xid, rmid, flags)$/
+__db_xa_open ../xa/xa.c /^__db_xa_open(xa_info, rmid, flags)$/
+__db_xa_prepare ../xa/xa.c /^__db_xa_prepare(xid, rmid, flags)$/
+__db_xa_recover ../xa/xa.c /^__db_xa_recover(xids, count, rmid, flags)$/
+__db_xa_rollback ../xa/xa.c /^__db_xa_rollback(xid, rmid, flags)$/
+__db_xa_start ../xa/xa.c /^__db_xa_start(xid, rmid, flags)$/
+__db_xid_to_txn ../xa/xa_map.c /^__db_xid_to_txn(dbenv, xid, offp)$/
+__dbc ../include/db.in /^struct __dbc {$/
+__dbc_close_int ../rpc_server/db_server_util.c /^__dbc_close_int(dbc_ctp)$/
+__dbc_close_proc ../rpc_server/db_server_proc.c /^__dbc_close_proc(dbccl_id, replyp)$/
+__dbc_count_proc ../rpc_server/db_server_proc.c /^__dbc_count_proc(dbccl_id, flags, replyp)$/
+__dbc_del_proc ../rpc_server/db_server_proc.c /^__dbc_del_proc(dbccl_id, flags, replyp)$/
+__dbc_dup_proc ../rpc_server/db_server_proc.c /^__dbc_dup_proc(dbccl_id, flags, replyp)$/
+__dbc_get_proc ../rpc_server/db_server_proc.c /^__dbc_get_proc(dbccl_id, keydlen, keydoff,$/
+__dbc_internal ../include/db_int.in /^struct __dbc_internal {$/
+__dbc_pget_proc ../rpc_server/db_server_proc.c /^__dbc_pget_proc(dbccl_id, skeydlen, skeydoff,$/
+__dbc_put_proc ../rpc_server/db_server_proc.c /^__dbc_put_proc(dbccl_id, keydlen, keydoff,$/
+__dbcl_c_destroy ../rpc_client/client.c /^__dbcl_c_destroy(dbc)$/
+__dbcl_c_refresh ../rpc_client/client.c /^__dbcl_c_refresh(dbcp)$/
+__dbcl_c_setup ../rpc_client/client.c /^__dbcl_c_setup(cl_id, dbp, dbcpp)$/
+__dbcl_db_alloc ../rpc_client/gen_client.c /^__dbcl_db_alloc(dbp, func0, func1, func2)$/
+__dbcl_db_associate ../rpc_client/gen_client.c /^__dbcl_db_associate(dbp, sdbp, func0, flags)$/
+__dbcl_db_bt_compare ../rpc_client/gen_client.c /^__dbcl_db_bt_compare(dbp, func0)$/
+__dbcl_db_bt_maxkey ../rpc_client/gen_client.c /^__dbcl_db_bt_maxkey(dbp, maxkey)$/
+__dbcl_db_bt_minkey ../rpc_client/gen_client.c /^__dbcl_db_bt_minkey(dbp, minkey)$/
+__dbcl_db_bt_prefix ../rpc_client/gen_client.c /^__dbcl_db_bt_prefix(dbp, func0)$/
+__dbcl_db_cachesize ../rpc_client/gen_client.c /^__dbcl_db_cachesize(dbp, gbytes, bytes, ncache)$/
+__dbcl_db_close ../rpc_client/gen_client.c /^__dbcl_db_close(dbp, flags)$/
+__dbcl_db_close_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_close_ret(dbp, flags, replyp)$/
+__dbcl_db_create ../rpc_client/gen_client.c /^__dbcl_db_create(dbp, dbenv, flags)$/
+__dbcl_db_create_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_create_ret(dbp, dbenv, flags, replyp)$/
+__dbcl_db_cursor ../rpc_client/gen_client.c /^__dbcl_db_cursor(dbp, txnp, dbcpp, flags)$/
+__dbcl_db_cursor_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_cursor_ret(dbp, txnp, dbcpp, flags, repl/
+__dbcl_db_del ../rpc_client/gen_client.c /^__dbcl_db_del(dbp, txnp, key, flags)$/
+__dbcl_db_extentsize ../rpc_client/gen_client.c /^__dbcl_db_extentsize(dbp, extentsize)$/
+__dbcl_db_fd ../rpc_client/gen_client.c /^__dbcl_db_fd(dbp, fdp)$/
+__dbcl_db_feedback ../rpc_client/gen_client.c /^__dbcl_db_feedback(dbp, func0)$/
+__dbcl_db_flags ../rpc_client/gen_client.c /^__dbcl_db_flags(dbp, flags)$/
+__dbcl_db_get ../rpc_client/gen_client.c /^__dbcl_db_get(dbp, txnp, key, data, flags)$/
+__dbcl_db_get_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_get_ret(dbp, txnp, key, data, flags, rep/
+__dbcl_db_h_ffactor ../rpc_client/gen_client.c /^__dbcl_db_h_ffactor(dbp, ffactor)$/
+__dbcl_db_h_hash ../rpc_client/gen_client.c /^__dbcl_db_h_hash(dbp, func0)$/
+__dbcl_db_h_nelem ../rpc_client/gen_client.c /^__dbcl_db_h_nelem(dbp, nelem)$/
+__dbcl_db_join ../rpc_client/gen_client.c /^__dbcl_db_join(dbp, curs, dbcp, flags)$/
+__dbcl_db_join_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_join_ret(dbp, curs, dbcpp, flags, replyp/
+__dbcl_db_key_range ../rpc_client/gen_client.c /^__dbcl_db_key_range(dbp, txnp, key, range, flags)$/
+__dbcl_db_key_range_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_key_range_ret(dbp, txnp, key, range, fla/
+__dbcl_db_lorder ../rpc_client/gen_client.c /^__dbcl_db_lorder(dbp, lorder)$/
+__dbcl_db_open ../rpc_client/gen_client.c /^__dbcl_db_open(dbp, name, subdb, type, flags, mode/
+__dbcl_db_open_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_open_ret(dbp, name, subdb, type, flags, /
+__dbcl_db_pagesize ../rpc_client/gen_client.c /^__dbcl_db_pagesize(dbp, pagesize)$/
+__dbcl_db_panic ../rpc_client/gen_client.c /^__dbcl_db_panic(dbp, func0)$/
+__dbcl_db_pget ../rpc_client/gen_client.c /^__dbcl_db_pget(dbp, txnp, skey, pkey, data, flags)/
+__dbcl_db_pget_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_pget_ret(dbp, txnp, skey, pkey, data, fl/
+__dbcl_db_put ../rpc_client/gen_client.c /^__dbcl_db_put(dbp, txnp, key, data, flags)$/
+__dbcl_db_put_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_put_ret(dbp, txnp, key, data, flags, rep/
+__dbcl_db_re_delim ../rpc_client/gen_client.c /^__dbcl_db_re_delim(dbp, delim)$/
+__dbcl_db_re_len ../rpc_client/gen_client.c /^__dbcl_db_re_len(dbp, len)$/
+__dbcl_db_re_pad ../rpc_client/gen_client.c /^__dbcl_db_re_pad(dbp, pad)$/
+__dbcl_db_re_source ../rpc_client/gen_client.c /^__dbcl_db_re_source(dbp, re_source)$/
+__dbcl_db_remove ../rpc_client/gen_client.c /^__dbcl_db_remove(dbp, name, subdb, flags)$/
+__dbcl_db_remove_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_remove_ret(dbp, name, subdb, flags, repl/
+__dbcl_db_rename ../rpc_client/gen_client.c /^__dbcl_db_rename(dbp, name, subdb, newname, flags)/
+__dbcl_db_rename_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_rename_ret(dbp, name, subdb, newname, fl/
+__dbcl_db_set_append_recno ../rpc_client/gen_client.c /^__dbcl_db_set_append_recno(dbp, func0)$/
+__dbcl_db_stat ../rpc_client/gen_client.c /^__dbcl_db_stat(dbp, sp, flags)$/
+__dbcl_db_stat_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_stat_ret(dbp, sp, flags, replyp)$/
+__dbcl_db_sync ../rpc_client/gen_client.c /^__dbcl_db_sync(dbp, flags)$/
+__dbcl_db_truncate ../rpc_client/gen_client.c /^__dbcl_db_truncate(dbp, name, subdb, countp, flags/
+__dbcl_db_truncate_ret ../rpc_client/gen_client_ret.c /^__dbcl_db_truncate_ret(dbp, name, subdb, countp, f/
+__dbcl_db_upgrade ../rpc_client/gen_client.c /^__dbcl_db_upgrade(dbp, fname, flags)$/
+__dbcl_db_verify ../rpc_client/gen_client.c /^__dbcl_db_verify(dbp, fname, subdb, outfile, flags/
+__dbcl_dbc_close ../rpc_client/gen_client.c /^__dbcl_dbc_close(dbc)$/
+__dbcl_dbc_close_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_close_ret(dbcp, replyp)$/
+__dbcl_dbc_count ../rpc_client/gen_client.c /^__dbcl_dbc_count(dbc, countp, flags)$/
+__dbcl_dbc_count_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_count_ret(dbc, countp, flags, replyp)$/
+__dbcl_dbc_del ../rpc_client/gen_client.c /^__dbcl_dbc_del(dbc, flags)$/
+__dbcl_dbc_dup ../rpc_client/gen_client.c /^__dbcl_dbc_dup(dbc, dbcp, flags)$/
+__dbcl_dbc_dup_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_dup_ret(dbcp, dbcpp, flags, replyp)$/
+__dbcl_dbc_get ../rpc_client/gen_client.c /^__dbcl_dbc_get(dbc, key, data, flags)$/
+__dbcl_dbc_get_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_get_ret(dbcp, key, data, flags, replyp)/
+__dbcl_dbc_pget ../rpc_client/gen_client.c /^__dbcl_dbc_pget(dbc, skey, pkey, data, flags)$/
+__dbcl_dbc_pget_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_pget_ret(dbc, skey, pkey, data, flags, /
+__dbcl_dbc_put ../rpc_client/gen_client.c /^__dbcl_dbc_put(dbc, key, data, flags)$/
+__dbcl_dbc_put_ret ../rpc_client/gen_client_ret.c /^__dbcl_dbc_put_ret(dbcp, key, data, flags, replyp)/
+__dbcl_dbclose_common ../rpc_client/client.c /^__dbcl_dbclose_common(dbp)$/
+__dbcl_env_alloc ../rpc_client/gen_client.c /^__dbcl_env_alloc(dbenv, func0, func1, func2)$/
+__dbcl_env_cachesize ../rpc_client/gen_client.c /^__dbcl_env_cachesize(dbenv, gbytes, bytes, ncache)/
+__dbcl_env_close ../rpc_client/gen_client.c /^__dbcl_env_close(dbenv, flags)$/
+__dbcl_env_close_ret ../rpc_client/gen_client_ret.c /^__dbcl_env_close_ret(dbenv, flags, replyp)$/
+__dbcl_env_create ../rpc_client/gen_client.c /^__dbcl_env_create(dbenv, timeout)$/
+__dbcl_env_create_ret ../rpc_client/gen_client_ret.c /^__dbcl_env_create_ret(dbenv, timeout, replyp)$/
+__dbcl_env_flags ../rpc_client/gen_client.c /^__dbcl_env_flags(dbenv, flags, onoff)$/
+__dbcl_env_open ../rpc_client/gen_client.c /^__dbcl_env_open(dbenv, home, flags, mode)$/
+__dbcl_env_open_ret ../rpc_client/gen_client_ret.c /^__dbcl_env_open_ret(dbenv, home, flags, mode, repl/
+__dbcl_env_open_wrap ../rpc_client/client.c /^__dbcl_env_open_wrap(dbenv, home, flags, mode)$/
+__dbcl_env_paniccall ../rpc_client/gen_client.c /^__dbcl_env_paniccall(dbenv, func0)$/
+__dbcl_env_remove ../rpc_client/gen_client.c /^__dbcl_env_remove(dbenv, home, flags)$/
+__dbcl_env_remove_ret ../rpc_client/gen_client_ret.c /^__dbcl_env_remove_ret(dbenv, home, flags, replyp)$/
+__dbcl_env_set_feedback ../rpc_client/gen_client.c /^__dbcl_env_set_feedback(dbenv, func0)$/
+__dbcl_envrpcserver ../rpc_client/client.c /^__dbcl_envrpcserver(dbenv, clnt, host, tsec, ssec,/
+__dbcl_envserver ../rpc_client/client.c /^__dbcl_envserver(dbenv, host, tsec, ssec, flags)$/
+__dbcl_init ../db/db_method.c /^__dbcl_init(dbp, dbenv, flags)$/
+__dbcl_lock_detect ../rpc_client/gen_client.c /^__dbcl_lock_detect(dbenv, flags, atype, aborted)$/
+__dbcl_lock_get ../rpc_client/gen_client.c /^__dbcl_lock_get(dbenv, locker, flags, obj, mode, l/
+__dbcl_lock_id ../rpc_client/gen_client.c /^__dbcl_lock_id(dbenv, idp)$/
+__dbcl_lock_put ../rpc_client/gen_client.c /^__dbcl_lock_put(dbenv, lock)$/
+__dbcl_lock_stat ../rpc_client/gen_client.c /^__dbcl_lock_stat(dbenv, statp)$/
+__dbcl_lock_vec ../rpc_client/gen_client.c /^__dbcl_lock_vec(dbenv, locker, flags, list, nlist,/
+__dbcl_log_archive ../rpc_client/gen_client.c /^__dbcl_log_archive(dbenv, listp, flags)$/
+__dbcl_log_file ../rpc_client/gen_client.c /^__dbcl_log_file(dbenv, lsn, namep, len)$/
+__dbcl_log_flush ../rpc_client/gen_client.c /^__dbcl_log_flush(dbenv, lsn)$/
+__dbcl_log_get ../rpc_client/gen_client.c /^__dbcl_log_get(dbenv, lsn, data, flags)$/
+__dbcl_log_put ../rpc_client/gen_client.c /^__dbcl_log_put(dbenv, lsn, data, flags)$/
+__dbcl_log_register ../rpc_client/gen_client.c /^__dbcl_log_register(dbenv, dbp, namep)$/
+__dbcl_log_stat ../rpc_client/gen_client.c /^__dbcl_log_stat(dbenv, statp)$/
+__dbcl_log_unregister ../rpc_client/gen_client.c /^__dbcl_log_unregister(dbenv, dbp)$/
+__dbcl_memp_fclose ../rpc_client/gen_client.c /^__dbcl_memp_fclose(mpf)$/
+__dbcl_memp_fget ../rpc_client/gen_client.c /^__dbcl_memp_fget(mpf, pgno, flags, pagep)$/
+__dbcl_memp_fopen ../rpc_client/gen_client.c /^__dbcl_memp_fopen(dbenv, file, flags, mode, pagesi/
+__dbcl_memp_fput ../rpc_client/gen_client.c /^__dbcl_memp_fput(mpf, pgaddr, flags)$/
+__dbcl_memp_fset ../rpc_client/gen_client.c /^__dbcl_memp_fset(mpf, pgaddr, flags)$/
+__dbcl_memp_fsync ../rpc_client/gen_client.c /^__dbcl_memp_fsync(mpf)$/
+__dbcl_memp_register ../rpc_client/gen_client.c /^__dbcl_memp_register(dbenv, ftype, func0, func1)$/
+__dbcl_memp_stat ../rpc_client/gen_client.c /^__dbcl_memp_stat(dbenv, gstatp, fstatp)$/
+__dbcl_memp_sync ../rpc_client/gen_client.c /^__dbcl_memp_sync(dbenv, lsn)$/
+__dbcl_memp_trickle ../rpc_client/gen_client.c /^__dbcl_memp_trickle(dbenv, pct, nwrotep)$/
+__dbcl_refresh ../rpc_client/client.c /^__dbcl_refresh(dbenv)$/
+__dbcl_retcopy ../rpc_client/client.c /^__dbcl_retcopy(dbenv, dbt, data, len)$/
+__dbcl_rpc_illegal ../rpc_client/gen_client.c /^__dbcl_rpc_illegal(dbenv, name)$/
+__dbcl_set_data_dir ../rpc_client/gen_client.c /^__dbcl_set_data_dir(dbenv, dir)$/
+__dbcl_set_lg_bsize ../rpc_client/gen_client.c /^__dbcl_set_lg_bsize(dbenv, bsize)$/
+__dbcl_set_lg_dir ../rpc_client/gen_client.c /^__dbcl_set_lg_dir(dbenv, dir)$/
+__dbcl_set_lg_max ../rpc_client/gen_client.c /^__dbcl_set_lg_max(dbenv, max)$/
+__dbcl_set_lg_regionmax ../rpc_client/gen_client.c /^__dbcl_set_lg_regionmax(dbenv, max)$/
+__dbcl_set_lk_conflict ../rpc_client/gen_client.c /^__dbcl_set_lk_conflict(dbenv, conflicts, modes)$/
+__dbcl_set_lk_detect ../rpc_client/gen_client.c /^__dbcl_set_lk_detect(dbenv, detect)$/
+__dbcl_set_lk_max ../rpc_client/gen_client.c /^__dbcl_set_lk_max(dbenv, max)$/
+__dbcl_set_lk_max_lockers ../rpc_client/gen_client.c /^__dbcl_set_lk_max_lockers(dbenv, max)$/
+__dbcl_set_lk_max_locks ../rpc_client/gen_client.c /^__dbcl_set_lk_max_locks(dbenv, max)$/
+__dbcl_set_lk_max_objects ../rpc_client/gen_client.c /^__dbcl_set_lk_max_objects(dbenv, max)$/
+__dbcl_set_mp_mmapsize ../rpc_client/gen_client.c /^__dbcl_set_mp_mmapsize(dbenv, mmapsize)$/
+__dbcl_set_mutex_locks ../rpc_client/gen_client.c /^__dbcl_set_mutex_locks(dbenv, do_lock)$/
+__dbcl_set_recovery_init ../rpc_client/gen_client.c /^__dbcl_set_recovery_init(dbenv, func0)$/
+__dbcl_set_shm_key ../rpc_client/gen_client.c /^__dbcl_set_shm_key(dbenv, shm_key)$/
+__dbcl_set_tmp_dir ../rpc_client/gen_client.c /^__dbcl_set_tmp_dir(dbenv, dir)$/
+__dbcl_set_tx_max ../rpc_client/gen_client.c /^__dbcl_set_tx_max(dbenv, max)$/
+__dbcl_set_tx_recover ../rpc_client/gen_client.c /^__dbcl_set_tx_recover(dbenv, func0)$/
+__dbcl_set_tx_timestamp ../rpc_client/gen_client.c /^__dbcl_set_tx_timestamp(dbenv, max)$/
+__dbcl_set_verbose ../rpc_client/gen_client.c /^__dbcl_set_verbose(dbenv, which, onoff)$/
+__dbcl_txn_abort ../rpc_client/gen_client.c /^__dbcl_txn_abort(txnp)$/
+__dbcl_txn_abort_ret ../rpc_client/gen_client_ret.c /^__dbcl_txn_abort_ret(txnp, replyp)$/
+__dbcl_txn_begin ../rpc_client/gen_client.c /^__dbcl_txn_begin(dbenv, parent, txnpp, flags)$/
+__dbcl_txn_begin_ret ../rpc_client/gen_client_ret.c /^__dbcl_txn_begin_ret(envp, parent, txnpp, flags, r/
+__dbcl_txn_checkpoint ../rpc_client/gen_client.c /^__dbcl_txn_checkpoint(dbenv, kbyte, min)$/
+__dbcl_txn_close ../rpc_client/client.c /^__dbcl_txn_close(dbenv)$/
+__dbcl_txn_commit ../rpc_client/gen_client.c /^__dbcl_txn_commit(txnp, flags)$/
+__dbcl_txn_commit_ret ../rpc_client/gen_client_ret.c /^__dbcl_txn_commit_ret(txnp, flags, replyp)$/
+__dbcl_txn_end ../rpc_client/client.c /^__dbcl_txn_end(txnp)$/
+__dbcl_txn_prepare ../rpc_client/gen_client.c /^__dbcl_txn_prepare(txnp, gid)$/
+__dbcl_txn_recover ../rpc_client/gen_client.c /^__dbcl_txn_recover(dbenv, preplist, count, retp, f/
+__dbcl_txn_recover_ret ../rpc_client/gen_client_ret.c /^__dbcl_txn_recover_ret(dbenv, preplist, count, ret/
+__dbcl_txn_setup ../rpc_client/client.c /^__dbcl_txn_setup(dbenv, txn, parent, id)$/
+__dbcl_txn_stat ../rpc_client/gen_client.c /^__dbcl_txn_stat(dbenv, statp)$/
+__dbclear_child ../rpc_server/db_server_util.c /^__dbclear_child(parent)$/
+__dbclear_ctp ../rpc_server/db_server_util.c /^__dbclear_ctp(ctp)$/
+__dbdel_ctp ../rpc_server/db_server_util.c /^__dbdel_ctp(parent)$/
+__dbenv_close ../env/env_open.c /^__dbenv_close(dbenv, flags)$/
+__dbenv_close_int ../rpc_server/db_server_util.c /^__dbenv_close_int(id, flags)$/
+__dbenv_config ../env/env_open.c /^__dbenv_config(dbenv, db_home, flags)$/
+__dbenv_err ../env/env_method.c /^__dbenv_err(dbenv, error, fmt, va_alist)$/
+__dbenv_errx ../env/env_method.c /^__dbenv_errx(dbenv, fmt, va_alist)$/
+__dbenv_init ../env/env_method.c /^__dbenv_init(dbenv)$/
+__dbenv_iremove ../env/env_open.c /^__dbenv_iremove(dbenv, db_home, flags, destroy_han/
+__dbenv_open ../env/env_open.c /^__dbenv_open(dbenv, db_home, flags, mode)$/
+__dbenv_refresh ../env/env_open.c /^__dbenv_refresh(dbenv)$/
+__dbenv_remove ../env/env_open.c /^__dbenv_remove(dbenv, db_home, flags)$/
+__dbenv_set_alloc ../env/env_method.c /^__dbenv_set_alloc(dbenv, mal_func, real_func, free/
+__dbenv_set_data_dir ../env/env_method.c /^__dbenv_set_data_dir(dbenv, dir)$/
+__dbenv_set_errcall ../env/env_method.c /^__dbenv_set_errcall(dbenv, errcall)$/
+__dbenv_set_errfile ../env/env_method.c /^__dbenv_set_errfile(dbenv, errfile)$/
+__dbenv_set_errpfx ../env/env_method.c /^__dbenv_set_errpfx(dbenv, errpfx)$/
+__dbenv_set_feedback ../env/env_method.c /^__dbenv_set_feedback(dbenv, feedback)$/
+__dbenv_set_flags ../env/env_method.c /^__dbenv_set_flags(dbenv, flags, onoff)$/
+__dbenv_set_mutexlocks ../env/env_method.c /^__dbenv_set_mutexlocks(dbenv, onoff)$/
+__dbenv_set_paniccall ../env/env_method.c /^__dbenv_set_paniccall(dbenv, paniccall)$/
+__dbenv_set_recovery_init ../env/env_method.c /^__dbenv_set_recovery_init(dbenv, recovery_init)$/
+__dbenv_set_rpc_server_noclnt ../env/env_method.c /^__dbenv_set_rpc_server_noclnt(dbenv, cl, host, tse/
+__dbenv_set_server_noclnt ../env/env_method.c /^__dbenv_set_server_noclnt(dbenv, host, tsec, ssec,/
+__dbenv_set_shm_key ../env/env_method.c /^__dbenv_set_shm_key(dbenv, shm_key)$/
+__dbenv_set_tmp_dir ../env/env_method.c /^__dbenv_set_tmp_dir(dbenv, dir)$/
+__dbenv_set_verbose ../env/env_method.c /^__dbenv_set_verbose(dbenv, which, onoff)$/
+__dbh_am_chk ../db/db_method.c /^__dbh_am_chk(dbp, flags)$/
+__dbh_err ../db/db_method.c /^__dbh_err(dbp, error, fmt, va_alist)$/
+__dbh_errx ../db/db_method.c /^__dbh_errx(dbp, fmt, va_alist)$/
+__dblist_get ../db/db.c /^__dblist_get(dbenv, adjid)$/
+__dbsrv_active ../rpc_server/db_server_util.c /^__dbsrv_active(ctp)$/
+__dbsrv_main ../rpc_server/db_server_svc.c /^void __dbsrv_main()$/
+__dbsrv_settimeout ../rpc_server/db_server_util.c /^__dbsrv_settimeout(ctp, to)$/
+__dbsrv_timeout ../rpc_server/db_server_util.c /^__dbsrv_timeout(force)$/
+__dbt_ferr ../db/db_iface.c /^__dbt_ferr(dbp, name, dbt, check_thread)$/
+__dd_abort ../lock/lock_deadlock.c /^__dd_abort(dbenv, info)$/
+__dd_build ../lock/lock_deadlock.c /^__dd_build(dbenv, atype, bmp, nlockers, allocp, id/
+__dd_debug ../lock/lock_deadlock.c /^__dd_debug(dbenv, idmap, bitmap, nlockers, nalloc)/
+__dd_find ../lock/lock_deadlock.c /^__dd_find(dbenv, bmp, idmap, nlockers, nalloc, dea/
+__dd_verify ../lock/lock_deadlock.c /^__dd_verify(deadmap, tmpmap, origmap, nlockers, na/
+__deprecated_recover ../db/db_dispatch.c /^__deprecated_recover(dbenv, dbtp, lsnp, op, info)$/
+__env_cachesize_proc ../rpc_server/db_server_proc.c /^__env_cachesize_proc(dbenvcl_id, gbytes, bytes,$/
+__env_close_proc ../rpc_server/db_server_proc.c /^__env_close_proc(dbenvcl_id, flags, replyp)$/
+__env_create_proc ../rpc_server/db_server_proc.c /^__env_create_proc(timeout, replyp)$/
+__env_flags_proc ../rpc_server/db_server_proc.c /^__env_flags_proc(dbenvcl_id, flags, onoff, replyp)/
+__env_open_proc ../rpc_server/db_server_proc.c /^__env_open_proc(dbenvcl_id, home, flags,$/
+__env_openfiles ../env/env_recover.c /^__env_openfiles(dbenv, txninfo, data, open_lsn, la/
+__env_remove_proc ../rpc_server/db_server_proc.c /^__env_remove_proc(dbenvcl_id, home, flags, replyp)/
+__epg ../include/btree.h /^struct __epg {$/
+__fh_t ../include/os.h /^struct __fh_t {$/
+__fname ../include/log.h /^struct __fname {$/
+__ham_30_hashmeta ../hash/hash_upgrade.c /^__ham_30_hashmeta(dbp, real_name, obuf)$/
+__ham_30_sizefix ../hash/hash_upgrade.c /^__ham_30_sizefix(dbp, fhp, realname, metabuf)$/
+__ham_31_hash ../hash/hash_upgrade.c /^__ham_31_hash(dbp, real_name, flags, fhp, h, dirty/
+__ham_31_hashmeta ../hash/hash_upgrade.c /^__ham_31_hashmeta(dbp, real_name, flags, fhp, h, d/
+__ham_add_dup ../hash/hash_dup.c /^__ham_add_dup(dbc, nval, flags, pgnop)$/
+__ham_add_el ../hash/hash_page.c /^__ham_add_el(dbc, key, val, type)$/
+__ham_add_ovflpage ../hash/hash_page.c /^__ham_add_ovflpage(dbc, pagep, release, pp)$/
+__ham_alloc_pages ../hash/hash_rec.c /^__ham_alloc_pages(dbp, argp)$/
+__ham_bulk ../hash/hash.c /^__ham_bulk(dbc, data, flags)$/
+__ham_c_chgpg ../hash/hash.c /^__ham_c_chgpg(dbc, old_pgno, old_index, new_pgno, /
+__ham_c_close ../hash/hash.c /^__ham_c_close(dbc, root_pgno, rmroot)$/
+__ham_c_count ../hash/hash.c /^__ham_c_count(dbc, recnop)$/
+__ham_c_del ../hash/hash.c /^__ham_c_del(dbc)$/
+__ham_c_destroy ../hash/hash.c /^__ham_c_destroy(dbc)$/
+__ham_c_dup ../hash/hash.c /^__ham_c_dup(orig_dbc, new_dbc)$/
+__ham_c_get ../hash/hash.c /^__ham_c_get(dbc, key, data, flags, pgnop)$/
+__ham_c_init ../hash/hash.c /^__ham_c_init(dbc)$/
+__ham_c_put ../hash/hash.c /^__ham_c_put(dbc, key, data, flags, pgnop)$/
+__ham_c_update ../hash/hash.c /^__ham_c_update(dbc, len, add, is_dup)$/
+__ham_c_writelock ../hash/hash.c /^__ham_c_writelock(dbc)$/
+__ham_call_hash ../hash/hash.c /^__ham_call_hash(dbc, k, len)$/
+__ham_check_move ../hash/hash_dup.c /^__ham_check_move(dbc, add_len)$/
+__ham_chgpg_log ../hash/hash_auto.c /^__ham_chgpg_log(dbenv, txnid, ret_lsnp, flags,$/
+__ham_chgpg_print ../hash/hash_auto.c /^__ham_chgpg_print(dbenv, dbtp, lsnp, notused2, not/
+__ham_chgpg_read ../hash/hash_auto.c /^__ham_chgpg_read(dbenv, recbuf, argpp)$/
+__ham_chgpg_recover ../hash/hash_rec.c /^__ham_chgpg_recover(dbenv, dbtp, lsnp, op, info)$/
+__ham_copy_item ../hash/hash_page.c /^__ham_copy_item(pgsize, src_page, src_ndx, dest_pa/
+__ham_copypage_log ../hash/hash_auto.c /^__ham_copypage_log(dbenv, txnid, ret_lsnp, flags,$/
+__ham_copypage_print ../hash/hash_auto.c /^__ham_copypage_print(dbenv, dbtp, lsnp, notused2, /
+__ham_copypage_read ../hash/hash_auto.c /^__ham_copypage_read(dbenv, recbuf, argpp)$/
+__ham_copypage_recover ../hash/hash_rec.c /^__ham_copypage_recover(dbenv, dbtp, lsnp, op, info/
+__ham_cprint ../hash/hash_dup.c /^__ham_cprint(dbc)$/
+__ham_curadj_log ../hash/hash_auto.c /^__ham_curadj_log(dbenv, txnid, ret_lsnp, flags,$/
+__ham_curadj_print ../hash/hash_auto.c /^__ham_curadj_print(dbenv, dbtp, lsnp, notused2, no/
+__ham_curadj_read ../hash/hash_auto.c /^__ham_curadj_read(dbenv, recbuf, argpp)$/
+__ham_curadj_recover ../hash/hash_rec.c /^__ham_curadj_recover(dbenv, dbtp, lsnp, op, info)$/
+__ham_db_close ../hash/hash_method.c /^__ham_db_close(dbp)$/
+__ham_db_create ../hash/hash_method.c /^__ham_db_create(dbp)$/
+__ham_dcursor ../hash/hash_dup.c /^__ham_dcursor(dbc, pgno, indx)$/
+__ham_del_pair ../hash/hash_page.c /^__ham_del_pair(dbc, reclaim_page)$/
+__ham_dirty_meta ../hash/hash_meta.c /^__ham_dirty_meta(dbc)$/
+__ham_dpair ../hash/hash_page.c /^__ham_dpair(dbp, p, indx)$/
+__ham_dsearch ../hash/hash_dup.c /^__ham_dsearch(dbc, dbt, offp, cmpp)$/
+__ham_dup_convert ../hash/hash_dup.c /^__ham_dup_convert(dbc)$/
+__ham_dup_return ../hash/hash.c /^__ham_dup_return (dbc, val, flags)$/
+__ham_dups_unsorted ../hash/hash_verify.c /^__ham_dups_unsorted(dbp, buf, len)$/
+__ham_expand_table ../hash/hash.c /^__ham_expand_table(dbc)$/
+__ham_func2 ../hash/hash_func.c /^__ham_func2(dbp, key, len)$/
+__ham_func3 ../hash/hash_func.c /^__ham_func3(dbp, key, len)$/
+__ham_func4 ../hash/hash_func.c /^__ham_func4(dbp, key, len)$/
+__ham_func5 ../hash/hash_func.c /^__ham_func5(dbp, key, len)$/
+__ham_get_clist ../hash/hash.c /^__ham_get_clist(dbp, bucket, indx, listp)$/
+__ham_get_cpage ../hash/hash_page.c /^__ham_get_cpage(dbc, mode)$/
+__ham_get_meta ../hash/hash_meta.c /^__ham_get_meta(dbc)$/
+__ham_groupalloc1_print ../hash/hash_auto.c /^__ham_groupalloc1_print(dbenv, dbtp, lsnp, notused/
+__ham_groupalloc1_read ../hash/hash_auto.c /^__ham_groupalloc1_read(dbenv, recbuf, argpp)$/
+__ham_groupalloc2_print ../hash/hash_auto.c /^__ham_groupalloc2_print(dbenv, dbtp, lsnp, notused/
+__ham_groupalloc2_read ../hash/hash_auto.c /^__ham_groupalloc2_read(dbenv, recbuf, argpp)$/
+__ham_groupalloc_log ../hash/hash_auto.c /^__ham_groupalloc_log(dbenv, txnid, ret_lsnp, flags/
+__ham_groupalloc_print ../hash/hash_auto.c /^__ham_groupalloc_print(dbenv, dbtp, lsnp, notused2/
+__ham_groupalloc_read ../hash/hash_auto.c /^__ham_groupalloc_read(dbenv, recbuf, argpp)$/
+__ham_groupalloc_recover ../hash/hash_rec.c /^__ham_groupalloc_recover(dbenv, dbtp, lsnp, op, in/
+__ham_init_dbt ../hash/hash.c /^__ham_init_dbt(dbenv, dbt, size, bufp, sizep)$/
+__ham_init_htab ../hash/hash.c /^__ham_init_htab(dbc, name, pgno, nelem, ffactor)$/
+__ham_init_print ../hash/hash_auto.c /^__ham_init_print(dbenv)$/
+__ham_init_recover ../hash/hash_auto.c /^__ham_init_recover(dbenv)$/
+__ham_insdel_log ../hash/hash_auto.c /^__ham_insdel_log(dbenv, txnid, ret_lsnp, flags,$/
+__ham_insdel_print ../hash/hash_auto.c /^__ham_insdel_print(dbenv, dbtp, lsnp, notused2, no/
+__ham_insdel_read ../hash/hash_auto.c /^__ham_insdel_read(dbenv, recbuf, argpp)$/
+__ham_insdel_recover ../hash/hash_rec.c /^__ham_insdel_recover(dbenv, dbtp, lsnp, op, info)$/
+__ham_item ../hash/hash_page.c /^__ham_item(dbc, mode, pgnop)$/
+__ham_item_first ../hash/hash_page.c /^__ham_item_first(dbc, mode, pgnop)$/
+__ham_item_init ../hash/hash_page.c /^__ham_item_init(dbc)$/
+__ham_item_last ../hash/hash_page.c /^__ham_item_last(dbc, mode, pgnop)$/
+__ham_item_next ../hash/hash_page.c /^__ham_item_next(dbc, mode, pgnop)$/
+__ham_item_prev ../hash/hash_page.c /^__ham_item_prev(dbc, mode, pgnop)$/
+__ham_item_reset ../hash/hash_page.c /^__ham_item_reset(dbc)$/
+__ham_lock_bucket ../hash/hash_page.c /^__ham_lock_bucket(dbc, mode)$/
+__ham_lookup ../hash/hash.c /^__ham_lookup(dbc, key, sought, mode, pgnop)$/
+__ham_make_dup ../hash/hash_dup.c /^__ham_make_dup(dbenv, notdup, duplicate, bufp, siz/
+__ham_meta2pgset ../hash/hash_verify.c /^int __ham_meta2pgset(dbp, vdp, hmeta, flags, pgset/
+__ham_metachk ../hash/hash.c /^__ham_metachk(dbp, name, hashm)$/
+__ham_metagroup_log ../hash/hash_auto.c /^__ham_metagroup_log(dbenv, txnid, ret_lsnp, flags,/
+__ham_metagroup_print ../hash/hash_auto.c /^__ham_metagroup_print(dbenv, dbtp, lsnp, notused2,/
+__ham_metagroup_read ../hash/hash_auto.c /^__ham_metagroup_read(dbenv, recbuf, argpp)$/
+__ham_metagroup_recover ../hash/hash_rec.c /^__ham_metagroup_recover(dbenv, dbtp, lsnp, op, inf/
+__ham_move_offpage ../hash/hash_dup.c /^__ham_move_offpage(dbc, pagep, ndx, pgno)$/
+__ham_mswap ../hash/hash_conv.c /^__ham_mswap(pg)$/
+__ham_newpage_log ../hash/hash_auto.c /^__ham_newpage_log(dbenv, txnid, ret_lsnp, flags,$/
+__ham_newpage_print ../hash/hash_auto.c /^__ham_newpage_print(dbenv, dbtp, lsnp, notused2, n/
+__ham_newpage_read ../hash/hash_auto.c /^__ham_newpage_read(dbenv, recbuf, argpp)$/
+__ham_newpage_recover ../hash/hash_rec.c /^__ham_newpage_recover(dbenv, dbtp, lsnp, op, info)/
+__ham_newpgno_print ../hash/hash_auto.c /^__ham_newpgno_print(dbenv, dbtp, lsnp, notused2, n/
+__ham_newpgno_read ../hash/hash_auto.c /^__ham_newpgno_read(dbenv, recbuf, argpp)$/
+__ham_next_cpage ../hash/hash_page.c /^__ham_next_cpage(dbc, pgno, dirty)$/
+__ham_onpage_replace ../hash/hash_page.c /^__ham_onpage_replace(pagep, pgsize, ndx, off, chan/
+__ham_open ../hash/hash.c /^__ham_open(dbp, name, base_pgno, flags)$/
+__ham_overwrite ../hash/hash.c /^__ham_overwrite(dbc, nval, flags)$/
+__ham_ovfl_print ../hash/hash_auto.c /^__ham_ovfl_print(dbenv, dbtp, lsnp, notused2, notu/
+__ham_ovfl_read ../hash/hash_auto.c /^__ham_ovfl_read(dbenv, recbuf, argpp)$/
+__ham_pgin ../hash/hash_conv.c /^__ham_pgin(dbenv, pg, pp, cookie)$/
+__ham_pgout ../hash/hash_conv.c /^__ham_pgout(dbenv, pg, pp, cookie)$/
+__ham_putitem ../hash/hash_page.c /^__ham_putitem(p, dbt, type)$/
+__ham_quick_delete ../hash/hash.c /^__ham_quick_delete(dbc)$/
+__ham_reclaim ../hash/hash_reclaim.c /^__ham_reclaim(dbp, txn)$/
+__ham_release_meta ../hash/hash_meta.c /^__ham_release_meta(dbc)$/
+__ham_replace_log ../hash/hash_auto.c /^__ham_replace_log(dbenv, txnid, ret_lsnp, flags,$/
+__ham_replace_print ../hash/hash_auto.c /^__ham_replace_print(dbenv, dbtp, lsnp, notused2, n/
+__ham_replace_read ../hash/hash_auto.c /^__ham_replace_read(dbenv, recbuf, argpp)$/
+__ham_replace_recover ../hash/hash_rec.c /^__ham_replace_recover(dbenv, dbtp, lsnp, op, info)/
+__ham_replpair ../hash/hash_page.c /^__ham_replpair(dbc, dbt, make_dup)$/
+__ham_reputpair ../hash/hash_page.c /^__ham_reputpair(p, psize, ndx, key, data)$/
+__ham_salvage ../hash/hash_verify.c /^__ham_salvage(dbp, vdp, pgno, h, handle, callback,/
+__ham_set_h_ffactor ../hash/hash_method.c /^__ham_set_h_ffactor(dbp, h_ffactor)$/
+__ham_set_h_hash ../hash/hash_method.c /^__ham_set_h_hash(dbp, func)$/
+__ham_set_h_nelem ../hash/hash_method.c /^__ham_set_h_nelem(dbp, h_nelem)$/
+__ham_split_page ../hash/hash_page.c /^__ham_split_page(dbc, obucket, nbucket)$/
+__ham_splitdata_log ../hash/hash_auto.c /^__ham_splitdata_log(dbenv, txnid, ret_lsnp, flags,/
+__ham_splitdata_print ../hash/hash_auto.c /^__ham_splitdata_print(dbenv, dbtp, lsnp, notused2,/
+__ham_splitdata_read ../hash/hash_auto.c /^__ham_splitdata_read(dbenv, recbuf, argpp)$/
+__ham_splitdata_recover ../hash/hash_rec.c /^__ham_splitdata_recover(dbenv, dbtp, lsnp, op, inf/
+__ham_splitmeta_print ../hash/hash_auto.c /^__ham_splitmeta_print(dbenv, dbtp, lsnp, notused2,/
+__ham_splitmeta_read ../hash/hash_auto.c /^__ham_splitmeta_read(dbenv, recbuf, argpp)$/
+__ham_stat ../hash/hash_stat.c /^__ham_stat(dbp, spp, flags)$/
+__ham_stat_callback ../hash/hash_stat.c /^__ham_stat_callback(dbp, pagep, cookie, putp)$/
+__ham_test ../hash/hash_func.c /^__ham_test(dbp, key, len)$/
+__ham_traverse ../hash/hash_stat.c /^__ham_traverse(dbc, mode, callback, cookie, look_p/
+__ham_truncate ../hash/hash_reclaim.c /^__ham_truncate(dbp, txn, countp)$/
+__ham_vrfy ../hash/hash_verify.c /^__ham_vrfy(dbp, vdp, h, pgno, flags)$/
+__ham_vrfy_bucket ../hash/hash_verify.c /^__ham_vrfy_bucket(dbp, vdp, m, bucket, flags)$/
+__ham_vrfy_hashing ../hash/hash_verify.c /^__ham_vrfy_hashing(dbp, nentries, m, thisbucket, p/
+__ham_vrfy_item ../hash/hash_verify.c /^__ham_vrfy_item(dbp, vdp, pgno, h, i, flags)$/
+__ham_vrfy_meta ../hash/hash_verify.c /^__ham_vrfy_meta(dbp, vdp, m, pgno, flags)$/
+__ham_vrfy_structure ../hash/hash_verify.c /^__ham_vrfy_structure(dbp, vdp, meta_pgno, flags)$/
+__hdr ../include/log.h /^struct __hdr {$/
+__key_range ../include/db.in /^struct __key_range {$/
+__lock_addfamilylocker ../lock/lock.c /^__lock_addfamilylocker(dbenv, pid, id)$/
+__lock_checklocker ../lock/lock.c /^__lock_checklocker(lt, lockp, locker, flags, freed/
+__lock_close ../lock/lock_region.c /^__lock_close(dbenv)$/
+__lock_cmp ../lock/lock_util.c /^__lock_cmp(dbt, lock_obj)$/
+__lock_dbenv_close ../lock/lock_region.c /^__lock_dbenv_close(dbenv)$/
+__lock_dbenv_create ../lock/lock_region.c /^__lock_dbenv_create(dbenv)$/
+__lock_downgrade ../lock/lock.c /^__lock_downgrade(dbenv, lock, new_mode, flags)$/
+__lock_dump_locker ../lock/lock_stat.c /^__lock_dump_locker(lt, lip, fp)$/
+__lock_dump_object ../lock/lock_stat.c /^__lock_dump_object(lt, op, fp)$/
+__lock_dump_region ../lock/lock_stat.c /^__lock_dump_region(dbenv, area, fp)$/
+__lock_dump_status ../lock/lock_stat.c /^__lock_dump_status(status)$/
+__lock_freefamilylocker ../lock/lock.c /^__lock_freefamilylocker(lt, locker)$/
+__lock_freelocker ../lock/lock.c /^__lock_freelocker(lt, region, sh_locker, indx)$/
+__lock_get_internal ../lock/lock.c /^__lock_get_internal(lt, locker, flags, obj, lock_m/
+__lock_getlocker ../lock/lock.c /^__lock_getlocker(lt, locker, indx, create, retp)$/
+__lock_getobj ../lock/lock.c /^__lock_getobj(lt, obj, ndx, create, retp)$/
+__lock_init ../lock/lock_region.c /^__lock_init(dbenv, lt)$/
+__lock_is_parent ../lock/lock.c /^__lock_is_parent(lt, locker, sh_locker)$/
+__lock_lhash ../lock/lock_util.c /^__lock_lhash(lock_obj)$/
+__lock_locker_cmp ../lock/lock_util.c /^__lock_locker_cmp(locker, sh_locker)$/
+__lock_locker_hash ../lock/lock_util.c /^__lock_locker_hash(locker)$/
+__lock_ohash ../lock/lock_util.c /^__lock_ohash(dbt)$/
+__lock_open ../lock/lock_region.c /^__lock_open(dbenv)$/
+__lock_printlock ../lock/lock.c /^__lock_printlock(lt, lp, ispgno)$/
+__lock_promote ../lock/lock.c /^__lock_promote(lt, obj, not_waiters)$/
+__lock_put_internal ../lock/lock.c /^__lock_put_internal(lt, lockp, obj_ndx, flags)$/
+__lock_put_nolock ../lock/lock.c /^__lock_put_nolock(dbenv, lock, runp, flags)$/
+__lock_region_destroy ../lock/lock_region.c /^__lock_region_destroy(dbenv, infop)$/
+__lock_region_maint ../lock/lock_region.c /^__lock_region_maint(dbenv)$/
+__lock_region_size ../lock/lock_region.c /^__lock_region_size(dbenv)$/
+__lock_remove_waiter ../lock/lock.c /^__lock_remove_waiter(dbenv, sh_obj, lockp, status)/
+__lock_set_lk_conflicts ../lock/lock_method.c /^__lock_set_lk_conflicts(dbenv, lk_conflicts, lk_mo/
+__lock_set_lk_detect ../lock/lock_method.c /^__lock_set_lk_detect(dbenv, lk_detect)$/
+__lock_set_lk_max ../lock/lock_method.c /^__lock_set_lk_max(dbenv, lk_max)$/
+__lock_set_lk_max_lockers ../lock/lock_method.c /^__lock_set_lk_max_lockers(dbenv, lk_max)$/
+__lock_set_lk_max_locks ../lock/lock_method.c /^__lock_set_lk_max_locks(dbenv, lk_max)$/
+__lock_set_lk_max_objects ../lock/lock_method.c /^__lock_set_lk_max_objects(dbenv, lk_max)$/
+__log ../include/log.h /^struct __log {$/
+__log_add_logid ../log/log_rec.c /^__log_add_logid(dbenv, logp, dbp, ndx)$/
+__log_check_master ../log/log_rec.c /^__log_check_master(dbenv, uid, name)$/
+__log_close ../log/log.c /^__log_close(dbenv)$/
+__log_close_files ../log/log_rec.c /^__log_close_files(dbenv)$/
+__log_dbenv_create ../log/log_method.c /^__log_dbenv_create(dbenv)$/
+__log_do_open ../log/log_rec.c /^__log_do_open(dbenv, lp, uid, name, ftype, ndx, me/
+__log_earliest ../env/env_recover.c /^__log_earliest(dbenv, lowtime, lowlsn)$/
+__log_file_lock ../log/log_register.c /^__log_file_lock(dbp)$/
+__log_filelist_update ../log/log_register.c /^__log_filelist_update(dbenv, dbp, fid, newname, se/
+__log_fill ../log/log_put.c /^__log_fill(dblp, lsn, addr, len)$/
+__log_find ../log/log.c /^__log_find(dblp, find_first, valp, statusp)$/
+__log_findckp ../log/log_findckp.c /^__log_findckp(dbenv, lsnp)$/
+__log_flush ../log/log_put.c /^__log_flush(dblp, lsn)$/
+__log_get ../log/log_get.c /^__log_get(dblp, alsn, dbt, flags, silent)$/
+__log_init ../log/log.c /^__log_init(dbenv, dblp)$/
+__log_init_print ../log/log_auto.c /^__log_init_print(dbenv)$/
+__log_init_recover ../log/log_auto.c /^__log_init_recover(dbenv)$/
+__log_lastckp ../log/log.c /^__log_lastckp(dbenv, lsnp)$/
+__log_lid_to_fname ../log/log_rec.c /^__log_lid_to_fname(dblp, lid, fnamep)$/
+__log_name ../log/log_put.c /^__log_name(dblp, filenumber, namep, fhp, flags)$/
+__log_newfh ../log/log_put.c /^__log_newfh(dblp)$/
+__log_open ../log/log.c /^__log_open(dbenv)$/
+__log_open_file ../log/log_rec.c /^__log_open_file(dbenv, lp, argp)$/
+__log_open_files ../log/log_put.c /^__log_open_files(dbenv)$/
+__log_persist ../include/log.h /^struct __log_persist {$/
+__log_put ../log/log_put.c /^__log_put(dbenv, lsn, dbt, flags)$/
+__log_putr ../log/log_put.c /^__log_putr(dblp, lsn, dbt, prev)$/
+__log_recover ../log/log.c /^__log_recover(dblp)$/
+__log_region_destroy ../log/log.c /^__log_region_destroy(dbenv, infop)$/
+__log_region_size ../log/log.c /^__log_region_size(dbenv)$/
+__log_register1_print ../log/log_auto.c /^__log_register1_print(dbenv, dbtp, lsnp, notused2,/
+__log_register1_read ../log/log_auto.c /^__log_register1_read(dbenv, recbuf, argpp)$/
+__log_register_log ../log/log_auto.c /^__log_register_log(dbenv, txnid, ret_lsnp, flags,$/
+__log_register_print ../log/log_auto.c /^__log_register_print(dbenv, dbtp, lsnp, notused2, /
+__log_register_read ../log/log_auto.c /^__log_register_read(dbenv, recbuf, argpp)$/
+__log_register_recover ../log/log_rec.c /^__log_register_recover(dbenv, dbtp, lsnp, op, info/
+__log_rem_logid ../log/log_rec.c /^__log_rem_logid(logp, dbp, ndx)$/
+__log_reopen_file ../log/log_rec.c /^__log_reopen_file(dbenv, name, ndx, fileid, meta_p/
+__log_set_lg_bsize ../log/log_method.c /^__log_set_lg_bsize(dbenv, lg_bsize)$/
+__log_set_lg_dir ../log/log_method.c /^__log_set_lg_dir(dbenv, dir)$/
+__log_set_lg_max ../log/log_method.c /^__log_set_lg_max(dbenv, lg_max)$/
+__log_set_lg_regionmax ../log/log_method.c /^__log_set_lg_regionmax(dbenv, lg_regionmax)$/
+__log_valid ../log/log.c /^__log_valid(dblp, number, set_persist, statusp)$/
+__log_write ../log/log_put.c /^__log_write(dblp, addr, len)$/
+__lsn_diff ../env/env_recover.c /^__lsn_diff(low, high, current, max, is_forward)$/
+__memp_alloc ../mp/mp_alloc.c /^__memp_alloc(dbmp, memreg, mfp, len, offsetp, retp/
+__memp_bhfree ../mp/mp_bh.c /^__memp_bhfree(dbmp, bhp, free_mem)$/
+__memp_bhwrite ../mp/mp_bh.c /^__memp_bhwrite(dbmp, mfp, bhp, open_extents, resta/
+__memp_clear_unlink ../mp/mp_fopen.c /^__memp_clear_unlink(dbmpf)$/
+__memp_close ../mp/mp_region.c /^__memp_close(dbenv)$/
+__memp_close_flush_files ../mp/mp_sync.c /^__memp_close_flush_files(dbmp)$/
+__memp_dbenv_create ../mp/mp_method.c /^__memp_dbenv_create(dbenv)$/
+__memp_dump_region ../mp/mp_stat.c /^__memp_dump_region(dbenv, area, fp)$/
+__memp_dumpcache ../mp/mp_stat.c /^__memp_dumpcache(dbmp, reginfo, fmap, fp, flags)$/
+__memp_fclose ../mp/mp_fopen.c /^__memp_fclose(dbmfp, needlock)$/
+__memp_fn ../mp/mp_fopen.c /^__memp_fn(dbmfp)$/
+__memp_fns ../mp/mp_fopen.c /^__memp_fns(dbmp, mfp)$/
+__memp_fopen ../mp/mp_fopen.c /^__memp_fopen(dbmp, mfp, path, flags, mode, pagesiz/
+__memp_fremove ../mp/mp_fopen.c /^__memp_fremove(dbmfp)$/
+__memp_fsync ../mp/mp_sync.c /^__memp_fsync(dbmfp)$/
+__memp_mf_discard ../mp/mp_fopen.c /^__memp_mf_discard(dbmp, mfp)$/
+__memp_mf_open ../mp/mp_fopen.c /^__memp_mf_open(dbmp, path, pagesize, last_pgno, fi/
+__memp_open ../mp/mp_region.c /^__memp_open(dbenv)$/
+__memp_pbh ../mp/mp_stat.c /^__memp_pbh(dbmp, bhp, fmap, fp)$/
+__memp_pg ../mp/mp_bh.c /^__memp_pg(dbmfp, bhp, is_pgin)$/
+__memp_pgread ../mp/mp_bh.c /^__memp_pgread(dbmfp, bhp, can_create)$/
+__memp_pgwrite ../mp/mp_bh.c /^__memp_pgwrite(dbmp, dbmfp, bhp, restartp, wrotep)/
+__memp_refcount ../mp/mp_fopen.c /^__memp_refcount(dbmpf, cntp)$/
+__memp_sballoc ../mp/mp_sync.c /^__memp_sballoc(dbenv, bharrayp, ar_maxp)$/
+__memp_set_cachesize ../mp/mp_method.c /^__memp_set_cachesize(dbenv, gbytes, bytes, ncache)/
+__memp_set_mp_mmapsize ../mp/mp_method.c /^__memp_set_mp_mmapsize(dbenv, mp_mmapsize )$/
+__memp_set_unlink ../mp/mp_fopen.c /^__memp_set_unlink(dbmpf)$/
+__memp_trick ../mp/mp_trickle.c /^__memp_trick(dbenv, ncache, pct, nwrotep)$/
+__memp_upgrade ../mp/mp_bh.c /^__memp_upgrade(dbmp, dbmfp, mfp)$/
+__mp_xxx_fh ../mp/mp_sync.c /^__mp_xxx_fh(dbmfp, fhp)$/
+__mpe_fsync ../os/os_fsync.c /^__mpe_fsync(fd)$/
+__mpool ../include/mp.h /^struct __mpool {$/
+__mpool_init ../mp/mp_region.c /^__mpool_init(dbenv, dbmp, reginfo_off, htab_bucket/
+__mpool_region_destroy ../mp/mp_region.c /^__mpool_region_destroy(dbenv, infop)$/
+__mpool_region_maint ../mp/mp_region.c /^__mpool_region_maint(infop)$/
+__mpoolfile ../include/mp.h /^struct __mpoolfile {$/
+__mutex_t ../include/mutex.h /^struct __mutex_t {$/
+__os_abspath ../os/os_abs.c /^__os_abspath(path)$/
+__os_calloc ../os/os_alloc.c /^__os_calloc(dbenv, num, size, storep)$/
+__os_closehandle ../os/os_handle.c /^__os_closehandle(fhp)$/
+__os_dirfree ../os/os_dir.c /^__os_dirfree(dbenv, names, cnt)$/
+__os_dirlist ../os/os_dir.c /^__os_dirlist(dbenv, dir, namesp, cntp)$/
+__os_exists ../os/os_stat.c /^__os_exists(path, isdirp)$/
+__os_fileid ../os/os_fid.c /^__os_fileid(dbenv, fname, unique_okay, fidp)$/
+__os_finit ../os/os_finit.c /^__os_finit(dbenv, fhp, size, zerofill)$/
+__os_fpinit ../os/os_finit.c /^__os_fpinit(dbenv, fhp, pgno, pagecount, pagesize)/
+__os_free ../os/os_alloc.c /^__os_free(dbenv, ptr, size)$/
+__os_freestr ../os/os_alloc.c /^__os_freestr(dbenv, ptr)$/
+__os_fsync ../os/os_fsync.c /^__os_fsync(dbenv, fhp)$/
+__os_get_errno ../os/os_errno.c /^__os_get_errno()$/
+__os_guard ../os/os_alloc.c /^__os_guard(dbenv)$/
+__os_io ../os/os_rw.c /^__os_io(dbenv, db_iop, op, niop)$/
+__os_ioinfo ../os/os_stat.c /^__os_ioinfo(dbenv, path, fhp, mbytesp, bytesp, ios/
+__os_isroot ../os/os_root.c /^__os_isroot()$/
+__os_malloc ../os/os_alloc.c /^__os_malloc(dbenv, size, storep)$/
+__os_map ../os/os_map.c /^__os_map(dbenv, path, fhp, len, is_region, is_rdon/
+__os_mapfile ../os/os_map.c /^__os_mapfile(dbenv, path, fhp, len, is_rdonly, add/
+__os_open ../os/os_open.c /^__os_open(dbenv, name, flags, mode, fhp)$/
+__os_openhandle ../os/os_handle.c /^__os_openhandle(dbenv, name, flags, mode, fhp)$/
+__os_pstat_getdynamic ../os/os_spin.c /^__os_pstat_getdynamic()$/
+__os_r_attach ../os/os_region.c /^__os_r_attach(dbenv, infop, rp)$/
+__os_r_detach ../os/os_region.c /^__os_r_detach(dbenv, infop, destroy)$/
+__os_r_sysattach ../os/os_map.c /^__os_r_sysattach(dbenv, infop, rp)$/
+__os_r_sysdetach ../os/os_map.c /^__os_r_sysdetach(dbenv, infop, destroy)$/
+__os_read ../os/os_rw.c /^__os_read(dbenv, fhp, addr, len, nrp)$/
+__os_realloc ../os/os_alloc.c /^__os_realloc(dbenv, size, storep)$/
+__os_region_open ../os/os_open.c /^__os_region_open(dbenv, name, oflags, mode, fhp)$/
+__os_region_unlink ../os/os_unlink.c /^__os_region_unlink(dbenv, path)$/
+__os_rename ../os/os_rename.c /^__os_rename(dbenv, old, new)$/
+__os_seek ../os/os_seek.c /^__os_seek(dbenv, fhp, pgsize, pageno, relative, is/
+__os_set_errno ../os/os_errno.c /^__os_set_errno(evalue)$/
+__os_shmname ../os/os_open.c /^__os_shmname(dbenv, name, newnamep)$/
+__os_sleep ../os/os_sleep.c /^__os_sleep(dbenv, secs, usecs)$/
+__os_spin ../os/os_spin.c /^__os_spin()$/
+__os_strdup ../os/os_alloc.c /^__os_strdup(dbenv, str, storep)$/
+__os_sysconf ../os/os_spin.c /^__os_sysconf()$/
+__os_tmpdir ../os/os_tmpdir.c /^__os_tmpdir(dbenv, flags)$/
+__os_ufree ../os/os_alloc.c /^__os_ufree(dbenv, ptr, size)$/
+__os_umalloc ../os/os_alloc.c /^__os_umalloc(dbenv, size, storep)$/
+__os_unlink ../os/os_unlink.c /^__os_unlink(dbenv, path)$/
+__os_unmapfile ../os/os_map.c /^__os_unmapfile(dbenv, addr, len)$/
+__os_urealloc ../os/os_alloc.c /^__os_urealloc(dbenv, size, storep)$/
+__os_write ../os/os_rw.c /^__os_write(dbenv, fhp, addr, len, nwp)$/
+__os_yield ../os/os_spin.c /^__os_yield(dbenv, usecs)$/
+__qam_31_qammeta ../qam/qam_upgrade.c /^__qam_31_qammeta(dbp, real_name, buf)$/
+__qam_32_qammeta ../qam/qam_upgrade.c /^__qam_32_qammeta(dbp, real_name, buf)$/
+__qam_add_log ../qam/qam_auto.c /^__qam_add_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_add_print ../qam/qam_auto.c /^__qam_add_print(dbenv, dbtp, lsnp, notused2, notus/
+__qam_add_read ../qam/qam_auto.c /^__qam_add_read(dbenv, recbuf, argpp)$/
+__qam_add_recover ../qam/qam_rec.c /^__qam_add_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_append ../qam/qam.c /^__qam_append(dbc, key, data)$/
+__qam_bulk ../qam/qam.c /^__qam_bulk(dbc, data, flags)$/
+__qam_c_close ../qam/qam.c /^__qam_c_close(dbc, root_pgno, rmroot)$/
+__qam_c_del ../qam/qam.c /^__qam_c_del(dbc)$/
+__qam_c_destroy ../qam/qam.c /^__qam_c_destroy(dbc)$/
+__qam_c_dup ../qam/qam.c /^__qam_c_dup(orig_dbc, new_dbc)$/
+__qam_c_get ../qam/qam.c /^__qam_c_get(dbc, key, data, flags, pgnop)$/
+__qam_c_init ../qam/qam.c /^__qam_c_init(dbc)$/
+__qam_c_put ../qam/qam.c /^__qam_c_put(dbc, key, data, flags, pgnop)$/
+__qam_cookie ../qam/qam_method.c /^struct __qam_cookie {$/
+__qam_db_close ../qam/qam_method.c /^__qam_db_close(dbp)$/
+__qam_db_create ../qam/qam_method.c /^__qam_db_create(dbp)$/
+__qam_del_log ../qam/qam_auto.c /^__qam_del_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_del_print ../qam/qam_auto.c /^__qam_del_print(dbenv, dbtp, lsnp, notused2, notus/
+__qam_del_read ../qam/qam_auto.c /^__qam_del_read(dbenv, recbuf, argpp)$/
+__qam_del_recover ../qam/qam_rec.c /^__qam_del_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_delete_log ../qam/qam_auto.c /^__qam_delete_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_delete_print ../qam/qam_auto.c /^__qam_delete_print(dbenv, dbtp, lsnp, notused2, no/
+__qam_delete_read ../qam/qam_auto.c /^__qam_delete_read(dbenv, recbuf, argpp)$/
+__qam_delete_recover ../qam/qam_rec.c /^__qam_delete_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_delext_log ../qam/qam_auto.c /^__qam_delext_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_delext_print ../qam/qam_auto.c /^__qam_delext_print(dbenv, dbtp, lsnp, notused2, no/
+__qam_delext_read ../qam/qam_auto.c /^__qam_delext_read(dbenv, recbuf, argpp)$/
+__qam_delext_recover ../qam/qam_rec.c /^__qam_delext_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_fclose ../qam/qam_files.c /^__qam_fclose(dbp, pgnoaddr)$/
+__qam_fget ../include/qam.h /^#define __qam_fget(dbp, pgnoaddr, flags, addrp) \\/
+__qam_fprobe ../qam/qam_files.c /^__qam_fprobe(dbp, pgno, addrp, mode, flags)$/
+__qam_fput ../include/qam.h /^#define __qam_fput(dbp, pageno, addrp, flags) \\$/
+__qam_fremove ../qam/qam_files.c /^__qam_fremove(dbp, pgnoaddr)$/
+__qam_gen_filelist ../qam/qam_files.c /^__qam_gen_filelist(dbp, filelistp)$/
+__qam_getno ../qam/qam.c /^__qam_getno(dbp, key, rep)$/
+__qam_inc_log ../qam/qam_auto.c /^__qam_inc_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_inc_print ../qam/qam_auto.c /^__qam_inc_print(dbenv, dbtp, lsnp, notused2, notus/
+__qam_inc_read ../qam/qam_auto.c /^__qam_inc_read(dbenv, recbuf, argpp)$/
+__qam_inc_recover ../qam/qam_rec.c /^__qam_inc_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_incfirst_log ../qam/qam_auto.c /^__qam_incfirst_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_incfirst_print ../qam/qam_auto.c /^__qam_incfirst_print(dbenv, dbtp, lsnp, notused2, /
+__qam_incfirst_read ../qam/qam_auto.c /^__qam_incfirst_read(dbenv, recbuf, argpp)$/
+__qam_incfirst_recover ../qam/qam_rec.c /^__qam_incfirst_recover(dbenv, dbtp, lsnp, op, info/
+__qam_init_print ../qam/qam_auto.c /^__qam_init_print(dbenv)$/
+__qam_init_recover ../qam/qam_auto.c /^__qam_init_recover(dbenv)$/
+__qam_metachk ../qam/qam_open.c /^__qam_metachk(dbp, name, qmeta)$/
+__qam_mswap ../qam/qam_conv.c /^__qam_mswap(pg)$/
+__qam_mvptr_log ../qam/qam_auto.c /^__qam_mvptr_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_mvptr_print ../qam/qam_auto.c /^__qam_mvptr_print(dbenv, dbtp, lsnp, notused2, not/
+__qam_mvptr_read ../qam/qam_auto.c /^__qam_mvptr_read(dbenv, recbuf, argpp)$/
+__qam_mvptr_recover ../qam/qam_rec.c /^__qam_mvptr_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_open ../qam/qam_open.c /^__qam_open(dbp, name, base_pgno, mode, flags)$/
+__qam_pgin_out ../qam/qam_conv.c /^__qam_pgin_out(dbenv, pg, pp, cookie)$/
+__qam_pitem ../qam/qam.c /^__qam_pitem(dbc, pagep, indx, recno, data)$/
+__qam_position ../qam/qam.c /^__qam_position(dbc, recnop, mode, exactp)$/
+__qam_remove ../qam/qam_method.c /^__qam_remove(dbp, name, subdb, lsnp, callbackp, co/
+__qam_remove_callback ../qam/qam_method.c /^__qam_remove_callback(dbp, cookie)$/
+__qam_rename ../qam/qam_method.c /^__qam_rename(dbp, filename, subdb, newname)$/
+__qam_rename_log ../qam/qam_auto.c /^__qam_rename_log(dbenv, txnid, ret_lsnp, flags,$/
+__qam_rename_print ../qam/qam_auto.c /^__qam_rename_print(dbenv, dbtp, lsnp, notused2, no/
+__qam_rename_read ../qam/qam_auto.c /^__qam_rename_read(dbenv, recbuf, argpp)$/
+__qam_rename_recover ../qam/qam_rec.c /^__qam_rename_recover(dbenv, dbtp, lsnp, op, info)$/
+__qam_set_extentsize ../qam/qam_method.c /^__qam_set_extentsize(dbp, extentsize)$/
+__qam_stat ../qam/qam_stat.c /^__qam_stat(dbp, spp, flags)$/
+__qam_sync ../qam/qam_files.c /^__qam_sync(dbp, flags)$/
+__qam_testdocopy ../db/db.c /^__qam_testdocopy(dbp, name)$/
+__qam_truncate ../qam/qam.c /^__qam_truncate(dbp, txn, countp)$/
+__qam_vrfy_data ../qam/qam_verify.c /^__qam_vrfy_data(dbp, vdp, h, pgno, flags)$/
+__qam_vrfy_meta ../qam/qam_verify.c /^__qam_vrfy_meta(dbp, vdp, meta, pgno, flags)$/
+__qam_vrfy_structure ../qam/qam_verify.c /^__qam_vrfy_structure(dbp, vdp, flags)$/
+__qcursor ../include/qam.h /^struct __qcursor {$/
+__qmpf ../include/qam.h /^ struct __qmpf {$/
+__queue ../include/qam.h /^struct __queue {$/
+__ram_add ../btree/bt_recno.c /^__ram_add(dbc, recnop, data, flags, bi_flags)$/
+__ram_append ../btree/bt_recno.c /^__ram_append(dbc, key, data)$/
+__ram_c_del ../btree/bt_recno.c /^__ram_c_del(dbc)$/
+__ram_c_get ../btree/bt_recno.c /^__ram_c_get(dbc, key, data, flags, pgnop)$/
+__ram_c_put ../btree/bt_recno.c /^__ram_c_put(dbc, key, data, flags, pgnop)$/
+__ram_ca ../btree/bt_recno.c /^__ram_ca(dbc_arg, op)$/
+__ram_ca_delete ../btree/bt_curadj.c /^__ram_ca_delete(dbp, root_pgno)$/
+__ram_getno ../btree/bt_recno.c /^__ram_getno(dbc, key, rep, can_create)$/
+__ram_open ../btree/bt_recno.c /^__ram_open(dbp, name, base_pgno, flags)$/
+__ram_root ../btree/bt_split.c /^__ram_root(dbc, rootp, lp, rp)$/
+__ram_set_flags ../btree/bt_method.c /^__ram_set_flags(dbp, flagsp)$/
+__ram_set_re_delim ../btree/bt_method.c /^__ram_set_re_delim(dbp, re_delim)$/
+__ram_set_re_len ../btree/bt_method.c /^__ram_set_re_len(dbp, re_len)$/
+__ram_set_re_pad ../btree/bt_method.c /^__ram_set_re_pad(dbp, re_pad)$/
+__ram_set_re_source ../btree/bt_method.c /^__ram_set_re_source(dbp, re_source)$/
+__ram_source ../btree/bt_recno.c /^__ram_source(dbp)$/
+__ram_sread ../btree/bt_recno.c /^__ram_sread(dbc, top)$/
+__ram_update ../btree/bt_recno.c /^__ram_update(dbc, recno, can_create)$/
+__ram_vrfy_inp ../btree/bt_verify.c /^__ram_vrfy_inp(dbp, vdp, h, pgno, nentriesp, flags/
+__ram_vrfy_leaf ../btree/bt_verify.c /^__ram_vrfy_leaf(dbp, vdp, h, pgno, flags)$/
+__ram_writeback ../btree/bt_recno.c /^__ram_writeback(dbp)$/
+__txn_abort_proc ../rpc_server/db_server_proc.c /^__txn_abort_proc(txnpcl_id, replyp)$/
+__txn_activekids ../txn/txn.c /^__txn_activekids(dbenv, rectype, txnp)$/
+__txn_begin ../txn/txn.c /^__txn_begin(txn, internal)$/
+__txn_begin_proc ../rpc_server/db_server_proc.c /^__txn_begin_proc(dbenvcl_id, parentcl_id,$/
+__txn_child_log ../txn/txn_auto.c /^__txn_child_log(dbenv, txnid, ret_lsnp, flags,$/
+__txn_child_old_print ../txn/txn_auto.c /^__txn_child_old_print(dbenv, dbtp, lsnp, notused2,/
+__txn_child_old_read ../txn/txn_auto.c /^__txn_child_old_read(dbenv, recbuf, argpp)$/
+__txn_child_print ../txn/txn_auto.c /^__txn_child_print(dbenv, dbtp, lsnp, notused2, not/
+__txn_child_read ../txn/txn_auto.c /^__txn_child_read(dbenv, recbuf, argpp)$/
+__txn_child_recover ../txn/txn_rec.c /^__txn_child_recover(dbenv, dbtp, lsnp, op, info)$/
+__txn_ckp_log ../txn/txn_auto.c /^__txn_ckp_log(dbenv, txnid, ret_lsnp, flags,$/
+__txn_ckp_print ../txn/txn_auto.c /^__txn_ckp_print(dbenv, dbtp, lsnp, notused2, notus/
+__txn_ckp_read ../txn/txn_auto.c /^__txn_ckp_read(dbenv, recbuf, argpp)$/
+__txn_ckp_recover ../txn/txn_rec.c /^__txn_ckp_recover(dbenv, dbtp, lsnp, op, info)$/
+__txn_close ../txn/txn_region.c /^__txn_close(dbenv)$/
+__txn_commit_proc ../rpc_server/db_server_proc.c /^__txn_commit_proc(txnpcl_id, flags, replyp)$/
+__txn_compensate_begin ../txn/txn.c /^__txn_compensate_begin(dbenv, txnpp)$/
+__txn_continue ../txn/txn_recover.c /^__txn_continue(env, txnp, td, off)$/
+__txn_dbenv_create ../txn/txn_region.c /^__txn_dbenv_create(dbenv)$/
+__txn_end ../txn/txn.c /^__txn_end(txnp, is_commit)$/
+__txn_force_abort ../txn/txn.c /^__txn_force_abort(buffer)$/
+__txn_get_prepared ../txn/txn_recover.c /^__txn_get_prepared(dbenv, xids, txns, count, retp,/
+__txn_init ../txn/txn_region.c /^__txn_init(dbenv, tmgrp)$/
+__txn_init_print ../txn/txn_auto.c /^__txn_init_print(dbenv)$/
+__txn_init_recover ../txn/txn_auto.c /^__txn_init_recover(dbenv)$/
+__txn_isvalid ../txn/txn.c /^__txn_isvalid(txnp, tdp, op)$/
+__txn_map_gid ../txn/txn_recover.c /^__txn_map_gid(dbenv, gid, tdp, offp)$/
+__txn_old_ckp_print ../txn/txn_auto.c /^__txn_old_ckp_print(dbenv, dbtp, lsnp, notused2, n/
+__txn_old_ckp_read ../txn/txn_auto.c /^__txn_old_ckp_read(dbenv, recbuf, argpp)$/
+__txn_old_regop_print ../txn/txn_auto.c /^__txn_old_regop_print(dbenv, dbtp, lsnp, notused2,/
+__txn_old_regop_read ../txn/txn_auto.c /^__txn_old_regop_read(dbenv, recbuf, argpp)$/
+__txn_open ../txn/txn_region.c /^__txn_open(dbenv)$/
+__txn_prepare_proc ../rpc_server/db_server_proc.c /^__txn_prepare_proc(txnpcl_id, gid, replyp)$/
+__txn_recover_proc ../rpc_server/db_server_proc.c /^__txn_recover_proc(dbenvcl_id, count,$/
+__txn_region_destroy ../txn/txn_region.c /^__txn_region_destroy(dbenv, infop)$/
+__txn_region_size ../txn/txn_region.c /^__txn_region_size(dbenv)$/
+__txn_regop_log ../txn/txn_auto.c /^__txn_regop_log(dbenv, txnid, ret_lsnp, flags,$/
+__txn_regop_print ../txn/txn_auto.c /^__txn_regop_print(dbenv, dbtp, lsnp, notused2, not/
+__txn_regop_read ../txn/txn_auto.c /^__txn_regop_read(dbenv, recbuf, argpp)$/
+__txn_regop_recover ../txn/txn_rec.c /^__txn_regop_recover(dbenv, dbtp, lsnp, op, info)$/
+__txn_restore_txn ../txn/txn_rec.c /^__txn_restore_txn(dbenv, lsnp, argp)$/
+__txn_set_tx_max ../txn/txn_region.c /^__txn_set_tx_max(dbenv, tx_max)$/
+__txn_set_tx_recover ../txn/txn_region.c /^__txn_set_tx_recover(dbenv, tx_recover)$/
+__txn_set_tx_timestamp ../txn/txn_region.c /^__txn_set_tx_timestamp(dbenv, timestamp)$/
+__txn_undo ../txn/txn.c /^__txn_undo(txnp)$/
+__txn_xa_begin ../txn/txn.c /^__txn_xa_begin(dbenv, txn)$/
+__txn_xa_regop_log ../txn/txn_auto.c /^__txn_xa_regop_log(dbenv, txnid, ret_lsnp, flags,$/
+__txn_xa_regop_old_print ../txn/txn_auto.c /^__txn_xa_regop_old_print(dbenv, dbtp, lsnp, notuse/
+__txn_xa_regop_old_read ../txn/txn_auto.c /^__txn_xa_regop_old_read(dbenv, recbuf, argpp)$/
+__txn_xa_regop_print ../txn/txn_auto.c /^__txn_xa_regop_print(dbenv, dbtp, lsnp, notused2, /
+__txn_xa_regop_read ../txn/txn_auto.c /^__txn_xa_regop_read(dbenv, recbuf, argpp)$/
+__txn_xa_regop_recover ../txn/txn_rec.c /^__txn_xa_regop_recover(dbenv, dbtp, lsnp, op, info/
+__ua_memcpy ../os/os_alloc.c /^__ua_memcpy(dst, src, len)$/
+__usermem ../log/log_archive.c /^__usermem(dbenv, listp)$/
+__vrfy_childinfo ../include/db_verify.h /^struct __vrfy_childinfo {$/
+__vrfy_dbinfo ../include/db_verify.h /^struct __vrfy_dbinfo {$/
+__vrfy_pageinfo ../include/db_verify.h /^struct __vrfy_pageinfo {$/
+__vx_fsync ../os/os_fsync.c /^__vx_fsync(fd)$/
+__xa_close ../xa/xa_db.c /^__xa_close(dbp, flags)$/
+__xa_cursor ../xa/xa_db.c /^__xa_cursor(dbp, txn, dbcp, flags)$/
+__xa_del ../xa/xa_db.c /^__xa_del(dbp, txn, key, flags)$/
+__xa_get ../xa/xa_db.c /^__xa_get(dbp, txn, key, data, flags)$/
+__xa_open ../xa/xa_db.c /^__xa_open(dbp, name, subdb, type, flags, mode)$/
+__xa_put ../xa/xa_db.c /^__xa_put(dbp, txn, key, data, flags)$/
+__xa_txn_end ../xa/xa.c /^__xa_txn_end(txn)$/
+_debug_check ../tcl/tcl_internal.c /^_debug_check()$/
+_stream_error_function ../cxx/cxx_app.cpp /^void DbEnv::_stream_error_function(const char *pre/
+_stream_error_function_c ../cxx/cxx_app.cpp /^void _stream_error_function_c(const char *prefix, /
+_tsl_set ../include/mutex.h /^_tsl_set(void *tsl)$/
+abort ../cxx/cxx_txn.cpp /^int DbTxn::abort()$/
+add_home ../rpc_server/db_server_util.c /^add_home(home)$/
+appinit ../include/db_cxx.h /^\/\/ call appinit() before any other db activity (/
+archopts ../tcl/tcl_log.c /^ enum archopts {$/
+bdb_DbOpen ../tcl/tcl_db_pkg.c /^bdb_DbOpen(interp, objc, objv, ip, dbp)$/
+bdb_DbRemove ../tcl/tcl_db_pkg.c /^bdb_DbRemove(interp, objc, objv)$/
+bdb_DbRename ../tcl/tcl_db_pkg.c /^bdb_DbRename(interp, objc, objv)$/
+bdb_DbTruncate ../tcl/tcl_db_pkg.c /^bdb_DbTruncate(interp, objc, objv)$/
+bdb_DbUpgrade ../tcl/tcl_db_pkg.c /^bdb_DbUpgrade(interp, objc, objv)$/
+bdb_DbVerify ../tcl/tcl_db_pkg.c /^bdb_DbVerify(interp, objc, objv)$/
+bdb_DbmCommand ../tcl/tcl_compat.c /^bdb_DbmCommand(interp, objc, objv, flag, dbm)$/
+bdb_EnvOpen ../tcl/tcl_db_pkg.c /^bdb_EnvOpen(interp, objc, objv, ip, env)$/
+bdb_HCommand ../tcl/tcl_compat.c /^bdb_HCommand(interp, objc, objv)$/
+bdb_Handles ../tcl/tcl_db_pkg.c /^bdb_Handles(interp, objc, objv)$/
+bdb_NdbmOpen ../tcl/tcl_compat.c /^bdb_NdbmOpen(interp, objc, objv, dbpp)$/
+bdb_RandCommand ../tcl/tcl_compat.c /^bdb_RandCommand(interp, objc, objv)$/
+bdb_Version ../tcl/tcl_db_pkg.c /^bdb_Version(interp, objc, objv)$/
+bdbenvopen ../tcl/tcl_db_pkg.c /^ enum bdbenvopen {$/
+bdbmv ../tcl/tcl_db_pkg.c /^ enum bdbmv {$/
+bdbopen ../tcl/tcl_db_pkg.c /^ enum bdbopen {$/
+bdbrem ../tcl/tcl_db_pkg.c /^ enum bdbrem {$/
+bdbtrunc ../tcl/tcl_db_pkg.c /^ enum bdbtrunc {$/
+bdbupg ../tcl/tcl_db_pkg.c /^ enum bdbupg {$/
+bdbver ../tcl/tcl_db_pkg.c /^ enum bdbver {$/
+bdbvrfy ../tcl/tcl_db_pkg.c /^ enum bdbvrfy {$/
+berkdb_Cmd ../tcl/tcl_db_pkg.c /^berkdb_Cmd(notused, interp, objc, objv)$/
+berkdbcmds ../tcl/tcl_db_pkg.c /^ enum berkdbcmds {$/
+ca_recno_arg ../include/btree.h /^} ca_recno_arg;$/
+close ../cxx/cxx_mpool.cpp /^int DbMpoolFile::close()$/
+commitopt ../tcl/tcl_txn.c /^ enum commitopt {$/
+const ../include/db.in /^#define const$/
+construct_flags_ ../cxx/cxx_table.cpp /^, construct_flags_(flags)$/
+convert_object ../libdb_java/java_util.c /^jobject convert_object(JNIEnv *jnienv, const char /
+create_default_object ../libdb_java/java_util.c /^jobject create_default_object(JNIEnv *jnienv, cons/
+create_exception ../libdb_java/java_util.c /^jobject create_exception(JNIEnv *jnienv, jstring t/
+ct_anyp ../include/db_server_int.h /^#define ct_anyp handle_u.anyp$/
+ct_dbc ../include/db_server_int.h /^#define ct_dbc handle_u.dbc$/
+ct_dbp ../include/db_server_int.h /^#define ct_dbp handle_u.dbp$/
+ct_entry ../include/db_server_int.h /^typedef struct ct_entry ct_entry;$/
+ct_envp ../include/db_server_int.h /^#define ct_envp handle_u.envp$/
+ct_txnp ../include/db_server_int.h /^#define ct_txnp handle_u.txnp$/
+data ../include/tcl_db.h /^ union data {$/
+data2 ../include/tcl_db.h /^ union data2 {$/
+datum ../include/db.in /^} datum;$/
+db185_close ../db185/db185.c /^db185_close(db185p)$/
+db185_compare ../db185/db185.c /^db185_compare(dbp, a, b)$/
+db185_del ../db185/db185.c /^db185_del(db185p, key185, flags)$/
+db185_fd ../db185/db185.c /^db185_fd(db185p)$/
+db185_get ../db185/db185.c /^db185_get(db185p, key185, data185, flags)$/
+db185_hash ../db185/db185.c /^db185_hash(dbp, key, len)$/
+db185_openstderr ../db185/db185.c /^db185_openstderr(fhp)$/
+db185_prefix ../db185/db185.c /^db185_prefix(dbp, a, b)$/
+db185_put ../db185/db185.c /^db185_put(db185p, key185, data185, flags)$/
+db185_seq ../db185/db185.c /^db185_seq(db185p, key185, data185, flags)$/
+db185_sync ../db185/db185.c /^db185_sync(db185p, flags)$/
+db_Cmd ../tcl/tcl_db.c /^db_Cmd(clientData, interp, objc, objv)$/
+db_ca_mode ../include/btree.h /^} db_ca_mode;$/
+db_create ../db/db_method.c /^db_create(dbpp, dbenv, flags)$/
+db_env_create ../env/env_method.c /^db_env_create(dbenvpp, flags)$/
+db_env_set_func_close ../os/os_method.c /^db_env_set_func_close(func_close)$/
+db_env_set_func_dirfree ../os/os_method.c /^db_env_set_func_dirfree(func_dirfree)$/
+db_env_set_func_dirlist ../os/os_method.c /^db_env_set_func_dirlist(func_dirlist)$/
+db_env_set_func_exists ../os/os_method.c /^db_env_set_func_exists(func_exists)$/
+db_env_set_func_free ../os/os_method.c /^db_env_set_func_free(func_free)$/
+db_env_set_func_fsync ../os/os_method.c /^db_env_set_func_fsync(func_fsync)$/
+db_env_set_func_ioinfo ../os/os_method.c /^db_env_set_func_ioinfo(func_ioinfo)$/
+db_env_set_func_malloc ../os/os_method.c /^db_env_set_func_malloc(func_malloc)$/
+db_env_set_func_map ../os/os_method.c /^db_env_set_func_map(func_map)$/
+db_env_set_func_open ../os/os_method.c /^db_env_set_func_open(func_open)$/
+db_env_set_func_read ../os/os_method.c /^db_env_set_func_read(func_read)$/
+db_env_set_func_realloc ../os/os_method.c /^db_env_set_func_realloc(func_realloc)$/
+db_env_set_func_rename ../os/os_method.c /^db_env_set_func_rename(func_rename)$/
+db_env_set_func_seek ../os/os_method.c /^db_env_set_func_seek(func_seek)$/
+db_env_set_func_sleep ../os/os_method.c /^db_env_set_func_sleep(func_sleep)$/
+db_env_set_func_unlink ../os/os_method.c /^db_env_set_func_unlink(func_unlink)$/
+db_env_set_func_unmap ../os/os_method.c /^db_env_set_func_unmap(func_unmap)$/
+db_env_set_func_write ../os/os_method.c /^db_env_set_func_write(func_write)$/
+db_env_set_func_yield ../os/os_method.c /^db_env_set_func_yield(func_yield)$/
+db_env_set_pageyield ../os/os_method.c /^db_env_set_pageyield(onoff)$/
+db_env_set_panicstate ../os/os_method.c /^db_env_set_panicstate(onoff)$/
+db_env_set_region_init ../os/os_method.c /^db_env_set_region_init(onoff)$/
+db_env_set_tas_spins ../os/os_method.c /^db_env_set_tas_spins(tas_spins)$/
+db_ham_mode ../include/hash.h /^} db_ham_mode;$/
+db_indx_t ../include/db.in /^typedef u_int16_t db_indx_t; \/* Page offset type./
+db_lockmode_t ../include/db.in /^} db_lockmode_t;$/
+db_lockop_t ../include/db.in /^} db_lockop_t;$/
+db_pgno_t ../include/db.in /^typedef u_int32_t db_pgno_t; \/* Page number type./
+db_recno_t ../include/db.in /^typedef u_int32_t db_recno_t; \/* Record number ty/
+db_recops ../include/db.in /^} db_recops;$/
+db_rpc_serverprog_3003 ../rpc_server/db_server_svc.c /^db_rpc_serverprog_3003(rqstp, transp)$/
+db_status_t ../include/db.in /^} db_status_t;$/
+db_strerror ../common/db_err.c /^db_strerror(error)$/
+db_trunc_param ../include/db_am.h /^} db_trunc_param;$/
+db_txnlist_type ../include/db_int.in /^} db_txnlist_type;$/
+db_version ../env/env_open.c /^db_version(majverp, minverp, patchp)$/
+dbaopts ../tcl/tcl_db.c /^ enum dbaopts {$/
+dbc_Cmd ../tcl/tcl_dbcursor.c /^dbc_Cmd(clientData, interp, objc, objv)$/
+dbccmds ../tcl/tcl_dbcursor.c /^ enum dbccmds {$/
+dbcdupopts ../tcl/tcl_dbcursor.c /^ enum dbcdupopts {$/
+dbcgetopts ../tcl/tcl_dbcursor.c /^ enum dbcgetopts {$/
+dbcmds ../tcl/tcl_db.c /^ enum dbcmds {$/
+dbcuropts ../tcl/tcl_db.c /^ enum dbcuropts {$/
+dbcutopts ../tcl/tcl_dbcursor.c /^ enum dbcutopts {$/
+dbdelopts ../tcl/tcl_db.c /^ enum dbdelopts {$/
+dbgetjopts ../tcl/tcl_db.c /^ enum dbgetjopts {$/
+dbgetopts ../tcl/tcl_db.c /^ enum dbgetopts {$/
+dbji_call_append_recno ../libdb_java/java_info.c /^extern int dbji_call_append_recno(DB_JAVAINFO *dbj/
+dbji_call_assoc ../libdb_java/java_info.c /^extern int dbji_call_assoc(DB_JAVAINFO *dbji, DB */
+dbji_call_bt_compare ../libdb_java/java_info.c /^int dbji_call_bt_compare(DB_JAVAINFO *dbji, DB *db/
+dbji_call_bt_prefix ../libdb_java/java_info.c /^size_t dbji_call_bt_prefix(DB_JAVAINFO *dbji, DB */
+dbji_call_dup_compare ../libdb_java/java_info.c /^int dbji_call_dup_compare(DB_JAVAINFO *dbji, DB *d/
+dbji_call_feedback ../libdb_java/java_info.c /^void dbji_call_feedback(DB_JAVAINFO *dbji, DB *db,/
+dbji_call_h_hash ../libdb_java/java_info.c /^int dbji_call_h_hash(DB_JAVAINFO *dbji, DB *db, jo/
+dbji_construct ../libdb_java/java_info.c /^DB_JAVAINFO *dbji_construct(JNIEnv *jnienv, jint f/
+dbji_dealloc ../libdb_java/java_info.c /^dbji_dealloc(DB_JAVAINFO *dbji, JNIEnv *jnienv)$/
+dbji_destroy ../libdb_java/java_info.c /^dbji_destroy(DB_JAVAINFO *dbji, JNIEnv *jnienv)$/
+dbji_get_flags ../libdb_java/java_info.c /^jint dbji_get_flags(DB_JAVAINFO *dbji)$/
+dbji_get_jnienv ../libdb_java/java_info.c /^JNIEnv *dbji_get_jnienv(DB_JAVAINFO *dbji)$/
+dbji_set_append_recno_object ../libdb_java/java_info.c /^void dbji_set_append_recno_object(DB_JAVAINFO *dbj/
+dbji_set_assoc_object ../libdb_java/java_info.c /^void dbji_set_assoc_object(DB_JAVAINFO *dbji, JNIE/
+dbji_set_bt_compare_object ../libdb_java/java_info.c /^void dbji_set_bt_compare_object(DB_JAVAINFO *dbji,/
+dbji_set_bt_prefix_object ../libdb_java/java_info.c /^void dbji_set_bt_prefix_object(DB_JAVAINFO *dbji, /
+dbji_set_dup_compare_object ../libdb_java/java_info.c /^void dbji_set_dup_compare_object(DB_JAVAINFO *dbji/
+dbji_set_feedback_object ../libdb_java/java_info.c /^void dbji_set_feedback_object(DB_JAVAINFO *dbji, J/
+dbji_set_h_hash_object ../libdb_java/java_info.c /^void dbji_set_h_hash_object(DB_JAVAINFO *dbji, JNI/
+dbjie_call_feedback ../libdb_java/java_info.c /^void dbjie_call_feedback(DB_ENV_JAVAINFO *dbjie, D/
+dbjie_call_recovery_init ../libdb_java/java_info.c /^int dbjie_call_recovery_init(DB_ENV_JAVAINFO *dbji/
+dbjie_call_tx_recover ../libdb_java/java_info.c /^int dbjie_call_tx_recover(DB_ENV_JAVAINFO *dbjie, /
+dbjie_construct ../libdb_java/java_info.c /^dbjie_construct(JNIEnv *jnienv,$/
+dbjie_dealloc ../libdb_java/java_info.c /^void dbjie_dealloc(DB_ENV_JAVAINFO *dbjie, JNIEnv /
+dbjie_destroy ../libdb_java/java_info.c /^void dbjie_destroy(DB_ENV_JAVAINFO *dbjie, JNIEnv /
+dbjie_get_errcall ../libdb_java/java_info.c /^jobject dbjie_get_errcall(DB_ENV_JAVAINFO *dbjie)$/
+dbjie_get_errpfx ../libdb_java/java_info.c /^dbjie_get_errpfx(DB_ENV_JAVAINFO *dbjie, JNIEnv *j/
+dbjie_get_jnienv ../libdb_java/java_info.c /^dbjie_get_jnienv(DB_ENV_JAVAINFO *dbjie)$/
+dbjie_is_dbopen ../libdb_java/java_info.c /^int dbjie_is_dbopen(DB_ENV_JAVAINFO *dbjie)$/
+dbjie_set_conflict ../libdb_java/java_info.c /^dbjie_set_conflict(DB_ENV_JAVAINFO *dbjie, unsigne/
+dbjie_set_errcall ../libdb_java/java_info.c /^dbjie_set_errcall(DB_ENV_JAVAINFO *dbjie, JNIEnv */
+dbjie_set_errpfx ../libdb_java/java_info.c /^dbjie_set_errpfx(DB_ENV_JAVAINFO *dbjie, JNIEnv *j/
+dbjie_set_feedback_object ../libdb_java/java_info.c /^void dbjie_set_feedback_object(DB_ENV_JAVAINFO *db/
+dbjie_set_recovery_init_object ../libdb_java/java_info.c /^void dbjie_set_recovery_init_object(DB_ENV_JAVAINF/
+dbjie_set_tx_recover_object ../libdb_java/java_info.c /^void dbjie_set_tx_recover_object(DB_ENV_JAVAINFO */
+dbjit_construct ../libdb_java/java_info.c /^dbjit_construct()$/
+dbjit_destroy ../libdb_java/java_info.c /^void dbjit_destroy(DBT_JAVAINFO *dbjit)$/
+dbjopts ../tcl/tcl_db.c /^ enum dbjopts {$/
+dbkeyropts ../tcl/tcl_db.c /^ enum dbkeyropts {$/
+dbmcmds ../tcl/tcl_compat.c /^ enum dbmcmds {$/
+dbputapp ../tcl/tcl_db.c /^ enum dbputapp { DBPUT_APPEND0 };$/
+dbputopts ../tcl/tcl_db.c /^ enum dbputopts {$/
+dbt_ ../cxx/cxx_except.cpp /^, dbt_(dbt)$/
+debug_delete_global_ref ../libdb_java/java_util.h /^static void debug_delete_global_ref(JNIEnv *jnienv/
+debug_new_global_ref ../libdb_java/java_util.h /^static jobject debug_new_global_ref(JNIEnv *jnienv/
+del ../cxx/cxx_table.cpp /^int Db::del(DbTxn *txnid, Dbt *key, u_int32_t flag/
+dirfd ../clib/getcwd.c /^#define dirfd(dirp) ((dirp)->dd_fd)$/
+dupString ../cxx/cxx_except.cpp /^static char *dupString(const char *s)$/
+dup_string ../libdb_java/java_util.c /^char *dup_string(const char *str)$/
+env_Cmd ../tcl/tcl_env.c /^env_Cmd(clientData, interp, objc, objv)$/
+env_recover ../rpc_server/db_server_util.c /^env_recover(progname)$/
+envcmds ../tcl/tcl_env.c /^ enum envcmds {$/
+envopen ../tcl/tcl_db_pkg.c /^ enum envopen {$/
+envremopts ../tcl/tcl_env.c /^ enum envremopts {$/
+envtestat ../tcl/tcl_env.c /^ enum envtestat {$/
+envtestcmd ../tcl/tcl_env.c /^ enum envtestcmd {$/
+err ../cxx/cxx_app.cpp /^void DbEnv::err(int error, const char *format, .../
+err_ ../cxx/cxx_except.cpp /^: err_(err)$/
+error_policy ../cxx/cxx_app.cpp /^int DbEnv::error_policy()$/
+errx ../cxx/cxx_app.cpp /^void DbEnv::errx(const char *format, ...)$/
+exec_one ../mutex/tm.c /^exec_one()$/
+fd ../cxx/cxx_table.cpp /^int Db::fd(int *fdp)$/
+file_init ../mutex/tm.c /^file_init()$/
+fsync ../os/os_fsync.c /^#define fsync(fd) __vx_fsync(fd);$/
+get ../cxx/cxx_table.cpp /^int Db::get(DbTxn *txnid, Dbt *key, Dbt *value, u_/
+get_DB ../libdb_java/java_util.c /^DB *get_DB(JNIEnv *jnienv, jobject obj)$/
+get_DBC ../libdb_java/java_util.c /^DBC *get_DBC(JNIEnv *jnienv, jobject obj)$/
+get_DBT ../libdb_java/java_util.c /^DBT *get_DBT(JNIEnv *jnienv, jobject obj)$/
+get_DBT_JAVAINFO ../libdb_java/java_util.c /^DBT_JAVAINFO *get_DBT_JAVAINFO(JNIEnv *jnienv, job/
+get_DB_BTREE_STAT ../libdb_java/java_util.c /^DB_BTREE_STAT *get_DB_BTREE_STAT(JNIEnv *jnienv, j/
+get_DB_ENV ../libdb_java/java_util.c /^DB_ENV *get_DB_ENV(JNIEnv *jnienv, jobject obj)$/
+get_DB_ENV_JAVAINFO ../libdb_java/java_util.c /^DB_ENV_JAVAINFO *get_DB_ENV_JAVAINFO(JNIEnv *jnien/
+get_DB_HASH_STAT ../libdb_java/java_util.c /^DB_HASH_STAT *get_DB_HASH_STAT(JNIEnv *jnienv, job/
+get_DB_JAVAINFO ../libdb_java/java_util.c /^DB_JAVAINFO *get_DB_JAVAINFO(JNIEnv *jnienv, jobje/
+get_DB_LOCK ../libdb_java/java_util.c /^DB_LOCK *get_DB_LOCK(JNIEnv *jnienv, jobject obj)$/
+get_DB_LOG_STAT ../libdb_java/java_util.c /^DB_LOG_STAT *get_DB_LOG_STAT(JNIEnv *jnienv, jobje/
+get_DB_LSN ../libdb_java/java_util.c /^DB_LSN *get_DB_LSN(JNIEnv *jnienv, \/* DbLsn *\/ j/
+get_DB_MPOOL_FSTAT ../libdb_java/java_util.c /^DB_MPOOL_FSTAT *get_DB_MPOOL_FSTAT(JNIEnv *jnienv,/
+get_DB_MPOOL_STAT ../libdb_java/java_util.c /^DB_MPOOL_STAT *get_DB_MPOOL_STAT(JNIEnv *jnienv, j/
+get_DB_QUEUE_STAT ../libdb_java/java_util.c /^DB_QUEUE_STAT *get_DB_QUEUE_STAT(JNIEnv *jnienv, j/
+get_DB_TXN ../libdb_java/java_util.c /^DB_TXN *get_DB_TXN(JNIEnv *jnienv, jobject obj)$/
+get_DB_TXN_STAT ../libdb_java/java_util.c /^DB_TXN_STAT *get_DB_TXN_STAT(JNIEnv *jnienv, jobje/
+get_DbBtreeStat ../libdb_java/java_util.c /^jobject get_DbBtreeStat(JNIEnv *jnienv, DB_BTREE_S/
+get_DbHashStat ../libdb_java/java_util.c /^jobject get_DbHashStat(JNIEnv *jnienv, DB_HASH_STA/
+get_DbLogStat ../libdb_java/java_util.c /^jobject get_DbLogStat(JNIEnv *jnienv, DB_LOG_STAT /
+get_DbLsn ../libdb_java/java_util.c /^jobject get_DbLsn(JNIEnv *jnienv, DB_LSN dbobj)$/
+get_DbMpoolFStat ../libdb_java/java_util.c /^jobject get_DbMpoolFStat(JNIEnv *jnienv, DB_MPOOL_/
+get_DbMpoolStat ../libdb_java/java_util.c /^jobject get_DbMpoolStat(JNIEnv *jnienv, DB_MPOOL_S/
+get_DbQueueStat ../libdb_java/java_util.c /^jobject get_DbQueueStat(JNIEnv *jnienv, DB_QUEUE_S/
+get_DbTxn ../libdb_java/java_util.c /^jobject get_DbTxn(JNIEnv *jnienv, DB_TXN *dbobj)$/
+get_DbTxnStat ../libdb_java/java_util.c /^jobject get_DbTxnStat(JNIEnv *jnienv, DB_TXN_STAT /
+get_Dbc ../libdb_java/java_util.c /^jobject get_Dbc(JNIEnv *jnienv, DBC *dbobj)$/
+get_Dbt ../libdb_java/java_util.c /^jobject get_Dbt(JNIEnv *jnienv, DBT *dbt,$/
+get_Dbt_shared ../libdb_java/java_util.c /^static jobject get_Dbt_shared(JNIEnv *jnienv, cons/
+get_app_private ../cxx/cxx_table.cpp /^void *Db::get_app_private() const$/
+get_byteswapped ../cxx/cxx_table.cpp /^int Db::get_byteswapped() const$/
+get_c_string ../libdb_java/java_util.c /^char *get_c_string(JNIEnv *jnienv, jstring jstr)$/
+get_class ../libdb_java/java_util.c /^jclass get_class(JNIEnv *jnienv, const char *class/
+get_const_Dbt ../libdb_java/java_util.c /^jobject get_const_Dbt(JNIEnv *jnienv, const DBT *d/
+get_dbt ../cxx/cxx_except.cpp /^Dbt *DbMemoryException::get_dbt() const$/
+get_errno ../cxx/cxx_except.cpp /^int DbException::get_errno() const$/
+get_home ../rpc_server/db_server_util.c /^get_home(name)$/
+get_java_string ../libdb_java/java_util.c /^jstring get_java_string(JNIEnv *jnienv, const char/
+get_private_dbobj ../libdb_java/java_util.c /^void *get_private_dbobj(JNIEnv *jnienv, const char/
+get_private_info ../libdb_java/java_util.c /^void *get_private_info(JNIEnv *jnienv, const char /
+get_tableent ../rpc_server/db_server_util.c /^get_tableent(id)$/
+get_type ../cxx/cxx_table.cpp /^DBTYPE Db::get_type() const$/
+getcwd ../clib/getcwd.c /^getcwd(pt, size)$/
+getopt ../clib/getopt.c /^getopt(nargc, nargv, ostr)$/
+hcmds ../tcl/tcl_compat.c /^ enum hcmds {$/
+home_entry ../include/db_server_int.h /^typedef struct home_entry home_entry;$/
+id ../cxx/cxx_txn.cpp /^u_int32_t DbTxn::id()$/
+if ../cxx/cxx_app.cpp /^ if ((err = env->close(env, flags)) != 0) {$/
+imp ../include/db_cxx.h /^\/\/ DEFINE_DB_CLASS defines an imp_ data member a/
+imp_ ../cxx/cxx_mpool.cpp /^: imp_(0)$/
+indx_t ../include/db_185.in /^typedef u_int16_t indx_t;$/
+infop ../include/tcl_db.h /^ union infop {$/
+initialize ../cxx/cxx_app.cpp /^int DbEnv::initialize(DB_ENV *env)$/
+int ../db/db_upg.c /^static int (* const func_31_list[P_PAGETYPE_MAX])$/
+java_verify_callback ../libdb_java/java_Db.c /^static int java_verify_callback(void *handle, cons/
+jdbt_lock ../libdb_java/java_locked.c /^jdbt_lock(JDBT *jdbt, JNIEnv *jnienv, jobject obj,/
+jdbt_realloc ../libdb_java/java_locked.c /^int jdbt_realloc(JDBT *jdbt, JNIEnv *jnienv)$/
+jdbt_unlock ../libdb_java/java_locked.c /^jdbt_unlock(JDBT *jdbt, JNIEnv *jnienv)$/
+join ../cxx/cxx_table.cpp /^int Db::join(Dbc **curslist, Dbc **cursorp, u_int3/
+jstr_lock ../libdb_java/java_locked.c /^jstr_lock(JSTR *js, JNIEnv *jnienv, jstring jstr)$/
+jstr_unlock ../libdb_java/java_locked.c /^void jstr_unlock(JSTR *js, JNIEnv *jnienv)$/
+key_range ../cxx/cxx_table.cpp /^int Db::key_range(DbTxn *txnid, Dbt *key,$/
+ldopts ../tcl/tcl_lock.c /^ enum ldopts {$/
+lgopts ../tcl/tcl_lock.c /^ enum lgopts {$/
+lkcmds ../tcl/tcl_lock.c /^ enum lkcmds {$/
+lkmode ../tcl/tcl_lock.c /^enum lkmode {$/
+lkops ../tcl/tcl_lock.c /^ enum lkops {$/
+lock_ ../cxx/cxx_lock.cpp /^: lock_(value)$/
+lock_Cmd ../tcl/tcl_lock.c /^lock_Cmd(clientData, interp, objc, objv)$/
+lock_detect ../lock/lock_deadlock.c /^lock_detect(dbenv, flags, atype, abortp)$/
+lock_get ../lock/lock.c /^lock_get(dbenv, locker, flags, obj, lock_mode, loc/
+lock_id ../lock/lock.c /^lock_id(dbenv, idp)$/
+lock_put ../lock/lock.c /^lock_put(dbenv, lock)$/
+lock_stat ../lock/lock_stat.c /^lock_stat(dbenv, statp)$/
+lock_vec ../lock/lock.c /^lock_vec(dbenv, locker, flags, list, nlist, elistp/
+locker_info ../lock/lock_deadlock.c /^} locker_info;$/
+log_archive ../log/log_archive.c /^log_archive(dbenv, listp, flags)$/
+log_compare ../log/log_compare.c /^log_compare(lsn0, lsn1)$/
+log_file ../log/log_put.c /^log_file(dbenv, lsn, namep, len)$/
+log_flush ../log/log_put.c /^log_flush(dbenv, lsn)$/
+log_get ../log/log_get.c /^log_get(dbenv, alsn, dbt, flags)$/
+log_put ../log/log_put.c /^log_put(dbenv, lsn, dbt, flags)$/
+log_register ../log/log_register.c /^log_register(dbenv, dbp, name)$/
+log_stat ../log/log.c /^log_stat(dbenv, statp)$/
+log_unregister ../log/log_register.c /^log_unregister(dbenv, dbp)$/
+logfile_validity ../include/log.h /^} logfile_validity;$/
+loggetopts ../tcl/tcl_log.c /^ enum loggetopts {$/
+logputopts ../tcl/tcl_log.c /^ enum logputopts {$/
+long_to_ptr ../libdb_java/java_util.h /^} long_to_ptr;$/
+lvopts ../tcl/tcl_lock.c /^ enum lvopts {$/
+m ../include/tcl_db.h /^#define m u.r.real_m$/
+map_file ../mutex/tm.c /^map_file(maddrp, fdp)$/
+memcmp ../clib/memcmp.c /^memcmp(s1, s2, n)$/
+memp_fclose ../mp/mp_fopen.c /^memp_fclose(dbmfp)$/
+memp_fget ../mp/mp_fget.c /^memp_fget(dbmfp, pgnoaddr, flags, addrp)$/
+memp_fopen ../mp/mp_fopen.c /^memp_fopen(dbenv, path, flags, mode, pagesize, fin/
+memp_fput ../mp/mp_fput.c /^memp_fput(dbmfp, pgaddr, flags)$/
+memp_fset ../mp/mp_fset.c /^memp_fset(dbmfp, pgaddr, flags)$/
+memp_fsync ../mp/mp_sync.c /^memp_fsync(dbmfp)$/
+memp_register ../mp/mp_register.c /^memp_register(dbenv, ftype, pgin, pgout)$/
+memp_stat ../mp/mp_stat.c /^memp_stat(dbenv, gspp, fspp)$/
+memp_sync ../mp/mp_sync.c /^memp_sync(dbenv, lsnp)$/
+memp_trickle ../mp/mp_trickle.c /^memp_trickle(dbenv, pct, nwrotep)$/
+mp_Cmd ../tcl/tcl_mp.c /^mp_Cmd(clientData, interp, objc, objv)$/
+mpcmds ../tcl/tcl_mp.c /^ enum mpcmds {$/
+mpget ../tcl/tcl_mp.c /^ enum mpget {$/
+mpopts ../tcl/tcl_mp.c /^ enum mpopts {$/
+mu_action ../db/db.c /^typedef enum { MU_REMOVE, MU_RENAME, MU_OPEN } mu_/
+mutex_Cmd ../tcl/tcl_compat.c /^mutex_Cmd(clientData, interp, objc, objv)$/
+mutex_destroy ../mutex/tm.c /^mutex_destroy()$/
+mutex_init ../mutex/tm.c /^mutex_init()$/
+mutex_stats ../mutex/tm.c /^mutex_stats()$/
+mxcmds ../tcl/tcl_compat.c /^ enum mxcmds {$/
+ndbcmds ../tcl/tcl_compat.c /^ enum ndbcmds {$/
+ndbm_Cmd ../tcl/tcl_compat.c /^ndbm_Cmd(clientData, interp, objc, objv)$/
+ndbopen ../tcl/tcl_compat.c /^ enum ndbopen {$/
+new_ct_ent ../rpc_server/db_server_util.c /^new_ct_ent(errp)$/
+one_time_init ../libdb_java/java_util.c /^void one_time_init(JNIEnv *jnienv)$/
+onint ../common/util_sig.c /^onint(signo)$/
+open ../cxx/cxx_app.cpp /^int DbEnv::open(const char *db_home, u_int32_t fla/
+pg_Cmd ../tcl/tcl_mp.c /^pg_Cmd(clientData, interp, objc, objv)$/
+pgcmds ../tcl/tcl_mp.c /^ enum pgcmds {$/
+pgcookie ../include/db_cxx.h /^ (DB_ENV *dbenv, db_pgno_t pgno, void *pgaddr, DB/
+pget ../cxx/cxx_table.cpp /^int Db::pget(DbTxn *txnid, Dbt *key, Dbt *pkey, Db/
+pgno_t ../include/db_185.in /^#define pgno_t db_pgno_t$/
+pgopt ../tcl/tcl_mp.c /^ enum pgopt {$/
+prepare ../cxx/cxx_txn.cpp /^int DbTxn::prepare(u_int8_t *gid)$/
+pthread_cond_signal ../mutex/mut_pthread.c /^#define pthread_cond_signal _lwp_cond_signal$/
+pthread_cond_wait ../mutex/mut_pthread.c /^#define pthread_cond_wait _lwp_cond_wait$/
+pthread_mutex_destroy ../mutex/mut_pthread.c /^#define pthread_mutex_destroy(x) 0$/
+pthread_mutex_lock ../mutex/mut_pthread.c /^#define pthread_mutex_lock _lwp_mutex_lock$/
+pthread_mutex_trylock ../mutex/mut_pthread.c /^#define pthread_mutex_trylock _lwp_mutex_trylock$/
+pthread_mutex_unlock ../mutex/mut_pthread.c /^#define pthread_mutex_unlock _lwp_mutex_unlock$/
+pthread_self ../mutex/mut_pthread.c /^#define pthread_self _lwp_self$/
+put ../cxx/cxx_lock.cpp /^int DbLock::put(DbEnv *env)$/
+qam_position_mode ../include/qam.h /^} qam_position_mode;$/
+qam_probe_mode ../include/qam.h /^} qam_probe_mode;$/
+raise ../clib/raise.c /^raise(s)$/
+rcmds ../tcl/tcl_compat.c /^ enum rcmds {$/
+recno_t ../include/db_185.in /^typedef u_int32_t recno_t;$/
+reg_type ../include/region.h /^ REGION_TYPE_TXN } reg_type;$/
+remove ../cxx/cxx_app.cpp /^int DbEnv::remove(const char *db_home, u_int32_t f/
+rename ../cxx/cxx_table.cpp /^int Db::rename(const char *file, const char *datab/
+report_errcall ../libdb_java/java_util.c /^void report_errcall(JNIEnv *jnienv, jobject errcal/
+report_exception ../libdb_java/java_util.c /^void report_exception(JNIEnv *jnienv, const char */
+roff_t ../include/db_int.in /^typedef u_int32_t roff_t;$/
+run_one ../mutex/tm.c /^run_one()$/
+runtime_error ../cxx/cxx_app.cpp /^void DbEnv::runtime_error(const char *caller, int /
+runtime_error_dbt ../cxx/cxx_app.cpp /^void DbEnv::runtime_error_dbt(const char *caller, /
+set_alloc ../cxx/cxx_table.cpp /^int Db::set_alloc(db_malloc_fcn_type malloc_fcn,$/
+set_app_private ../cxx/cxx_table.cpp /^void Db::set_app_private(void *value)$/
+set_cachesize ../cxx/cxx_table.cpp /^int Db::set_cachesize(u_int32_t gbytes, u_int32_t /
+set_errcall ../cxx/cxx_table.cpp /^void Db::set_errcall(void (*arg)(const char *, cha/
+set_error_stream ../cxx/cxx_table.cpp /^void Db::set_error_stream(ostream *error_stream)$/
+set_int_field ../libdb_java/java_util.c /^void set_int_field(JNIEnv *jnienv, jclass class_of/
+set_long_field ../libdb_java/java_util.c /^void set_long_field(JNIEnv *jnienv, jclass class_o/
+set_lsn_field ../libdb_java/java_util.c /^void set_lsn_field(JNIEnv *jnienv, jclass class_of/
+set_object_field ../libdb_java/java_util.c /^void set_object_field(JNIEnv *jnienv, jclass class/
+set_paniccall ../cxx/cxx_table.cpp /^int Db::set_paniccall(void (*callback)(DbEnv *, in/
+set_private_dbobj ../libdb_java/java_util.c /^void set_private_dbobj(JNIEnv *jnienv, const char /
+set_private_info ../libdb_java/java_util.c /^void set_private_info(JNIEnv *jnienv, const char */
+size_t ../include/db_cxx.h /^ (size_t);$/
+snprintf ../clib/snprintf.c /^snprintf(str, n, fmt, va_alist)$/
+srchacts ../tcl/tcl_compat.c /^ enum srchacts {$/
+stat ../cxx/cxx_table.cpp /^int Db::stat(void *sp, u_int32_t flags)$/
+stflag ../tcl/tcl_compat.c /^ enum stflag {$/
+strcasecmp ../clib/strcasecmp.c /^strcasecmp(s1, s2)$/
+strerror ../clib/strerror.c /^strerror(num)$/
+sync ../cxx/cxx_table.cpp /^int Db::sync(u_int32_t flags)$/
+sys_errlist ../libdb_java/java_util.c /^#define sys_errlist _sys_errlist$/
+sys_nerr ../libdb_java/java_util.c /^#define sys_nerr _sys_nerr$/
+tcl_DbAssociate ../tcl/tcl_db.c /^tcl_DbAssociate(interp, objc, objv, dbp)$/
+tcl_DbClose ../tcl/tcl_db.c /^tcl_DbClose(interp, objc, objv, dbp, dbip)$/
+tcl_DbCount ../tcl/tcl_db.c /^tcl_DbCount(interp, objc, objv, dbp)$/
+tcl_DbCursor ../tcl/tcl_db.c /^tcl_DbCursor(interp, objc, objv, dbp, dbcp)$/
+tcl_DbDelete ../tcl/tcl_db.c /^tcl_DbDelete(interp, objc, objv, dbp)$/
+tcl_DbGet ../tcl/tcl_db.c /^tcl_DbGet(interp, objc, objv, dbp, ispget)$/
+tcl_DbGetjoin ../tcl/tcl_db.c /^tcl_DbGetjoin(interp, objc, objv, dbp)$/
+tcl_DbJoin ../tcl/tcl_db.c /^tcl_DbJoin(interp, objc, objv, dbp, dbcp)$/
+tcl_DbKeyRange ../tcl/tcl_db.c /^tcl_DbKeyRange(interp, objc, objv, dbp)$/
+tcl_DbPut ../tcl/tcl_db.c /^tcl_DbPut(interp, objc, objv, dbp)$/
+tcl_DbStat ../tcl/tcl_db.c /^tcl_DbStat(interp, objc, objv, dbp)$/
+tcl_DbcDup ../tcl/tcl_dbcursor.c /^tcl_DbcDup(interp, objc, objv, dbc)$/
+tcl_DbcGet ../tcl/tcl_dbcursor.c /^tcl_DbcGet(interp, objc, objv, dbc, ispget)$/
+tcl_DbcPut ../tcl/tcl_dbcursor.c /^tcl_DbcPut(interp, objc, objv, dbc)$/
+tcl_EnvRemove ../tcl/tcl_env.c /^tcl_EnvRemove(interp, objc, objv, envp, envip)$/
+tcl_EnvTest ../tcl/tcl_env.c /^tcl_EnvTest(interp, objc, objv, envp)$/
+tcl_EnvVerbose ../tcl/tcl_env.c /^tcl_EnvVerbose(interp, envp, which, onoff)$/
+tcl_LockDetect ../tcl/tcl_lock.c /^tcl_LockDetect(interp, objc, objv, envp)$/
+tcl_LockGet ../tcl/tcl_lock.c /^tcl_LockGet(interp, objc, objv, envp)$/
+tcl_LockStat ../tcl/tcl_lock.c /^tcl_LockStat(interp, objc, objv, envp)$/
+tcl_LockVec ../tcl/tcl_lock.c /^tcl_LockVec(interp, objc, objv, envp)$/
+tcl_LogArchive ../tcl/tcl_log.c /^tcl_LogArchive(interp, objc, objv, envp)$/
+tcl_LogCompare ../tcl/tcl_log.c /^tcl_LogCompare(interp, objc, objv)$/
+tcl_LogFile ../tcl/tcl_log.c /^tcl_LogFile(interp, objc, objv, envp)$/
+tcl_LogFlush ../tcl/tcl_log.c /^tcl_LogFlush(interp, objc, objv, envp)$/
+tcl_LogGet ../tcl/tcl_log.c /^tcl_LogGet(interp, objc, objv, envp)$/
+tcl_LogPut ../tcl/tcl_log.c /^tcl_LogPut(interp, objc, objv, envp)$/
+tcl_LogRegister ../tcl/tcl_log.c /^tcl_LogRegister(interp, objc, objv, envp)$/
+tcl_LogStat ../tcl/tcl_log.c /^tcl_LogStat(interp, objc, objv, envp)$/
+tcl_LogUnregister ../tcl/tcl_log.c /^tcl_LogUnregister(interp, objc, objv, envp)$/
+tcl_Mp ../tcl/tcl_mp.c /^tcl_Mp(interp, objc, objv, envp, envip)$/
+tcl_MpGet ../tcl/tcl_mp.c /^tcl_MpGet(interp, objc, objv, mp, mpip)$/
+tcl_MpStat ../tcl/tcl_mp.c /^tcl_MpStat(interp, objc, objv, envp)$/
+tcl_MpSync ../tcl/tcl_mp.c /^tcl_MpSync(interp, objc, objv, envp)$/
+tcl_MpTrickle ../tcl/tcl_mp.c /^tcl_MpTrickle(interp, objc, objv, envp)$/
+tcl_Mutex ../tcl/tcl_compat.c /^tcl_Mutex(interp, objc, objv, envp, envip)$/
+tcl_Pg ../tcl/tcl_mp.c /^tcl_Pg(interp, objc, objv, page, mp, pgip, putop)$/
+tcl_PgInit ../tcl/tcl_mp.c /^tcl_PgInit(interp, objc, objv, page, pgip)$/
+tcl_PgIsset ../tcl/tcl_mp.c /^tcl_PgIsset(interp, objc, objv, page, pgip)$/
+tcl_Txn ../tcl/tcl_txn.c /^tcl_Txn(interp, objc, objv, envp, envip)$/
+tcl_TxnCheckpoint ../tcl/tcl_txn.c /^tcl_TxnCheckpoint(interp, objc, objv, envp)$/
+tcl_TxnCommit ../tcl/tcl_txn.c /^tcl_TxnCommit(interp, objc, objv, txnp, txnip)$/
+tcl_TxnRecover ../tcl/tcl_txn.c /^tcl_TxnRecover(interp, objc, objv, envp, envip)$/
+tcl_TxnStat ../tcl/tcl_txn.c /^tcl_TxnStat(interp, objc, objv, envp)$/
+tcl_bt_compare ../tcl/tcl_db_pkg.c /^tcl_bt_compare(dbp, dbta, dbtb)$/
+tcl_compare_callback ../tcl/tcl_db_pkg.c /^tcl_compare_callback(dbp, dbta, dbtb, procobj, err/
+tcl_dup_compare ../tcl/tcl_db_pkg.c /^tcl_dup_compare(dbp, dbta, dbtb)$/
+tcl_h_hash ../tcl/tcl_db_pkg.c /^tcl_h_hash(dbp, buf, len)$/
+tcl_second_call ../tcl/tcl_db.c /^tcl_second_call(dbp, pkey, data, skey)$/
+truncate ../cxx/cxx_table.cpp /^int Db::truncate(const char *file, const char *dat/
+tsl_t ../include/mutex.h /^typedef int tsl_t;$/
+txn_Cmd ../tcl/tcl_txn.c /^txn_Cmd(clientData, interp, objc, objv)$/
+txn_abort ../txn/txn.c /^txn_abort(txnp)$/
+txn_begin ../txn/txn.c /^txn_begin(dbenv, parent, txnpp, flags)$/
+txn_checkpoint ../txn/txn.c /^txn_checkpoint(dbenv, kbytes, minutes, flags)$/
+txn_commit ../txn/txn.c /^txn_commit(txnp, flags)$/
+txn_discard ../txn/txn.c /^txn_discard(txnp, flags)$/
+txn_id ../txn/txn.c /^txn_id(txnp)$/
+txn_prepare ../txn/txn.c /^txn_prepare(txnp, gid)$/
+txn_recover ../txn/txn_recover.c /^txn_recover(dbenv, preplist, count, retp, flags)$/
+txn_stat ../txn/txn_stat.c /^txn_stat(dbenv, statp)$/
+txnckpopts ../tcl/tcl_txn.c /^ enum txnckpopts {$/
+txncmds ../tcl/tcl_txn.c /^ enum txncmds {$/
+txnop_t ../txn/txn.c /^} txnop_t;$/
+txnopts ../tcl/tcl_txn.c /^ enum txnopts {$/
+u_int32_t ../include/db_cxx.h /^ (DB *, const void *, u_int32_t);$/
+unmap_file ../mutex/tm.c /^unmap_file(maddr, fd)$/
+unwrap ../include/cxx_int.h /^\/\/ back and forth using the various overloaded w/
+upgrade ../cxx/cxx_table.cpp /^int Db::upgrade(const char *name, u_int32_t flags)/
+usage ../rpc_server/db_server_util.c /^usage(prog)$/
+val ../include/tcl_db.h /^#define val u.r.real_val$/
+verbonoff ../tcl/tcl_env.c /^ enum verbonoff {$/
+verbwhich ../tcl/tcl_env.c /^ enum verbwhich {$/
+verify_callback_struct ../libdb_java/java_Db.c /^struct verify_callback_struct {$/
+verify_dbt ../libdb_java/java_util.c /^int verify_dbt(JNIEnv *jnienv, int err, JDBT *jdbt/
+verify_non_null ../libdb_java/java_util.c /^int verify_non_null(JNIEnv *jnienv, void *obj)$/
+verify_return ../libdb_java/java_util.c /^int verify_return(JNIEnv *jnienv, int err, unsigne/
+version_check ../rpc_server/db_server_util.c /^version_check()$/
+void ../include/db_cxx.h /^ (void *);$/
+vsnprintf ../clib/vsnprintf.c /^vsnprintf(str, n, fmt, ap)$/
+what ../cxx/cxx_except.cpp /^const char *DbException::what() const$/
+wmask ../clib/memmove.c /^#define wmask (wsize - 1)$/
+word ../clib/memmove.c /^typedef int word; \/* "word" used for optimal cop/
+wrdebug ../libdb_java/java_util.h /^static void wrdebug(const char *str)$/
+wsize ../clib/memmove.c /^#define wsize sizeof(word)$/
+xa_switch_t ../include/xa.h /^struct xa_switch_t {$/
+xdr___db_associate_msg ../rpc_server/db_server_xdr.c /^xdr___db_associate_msg(xdrs, objp)$/
+xdr___db_associate_reply ../rpc_server/db_server_xdr.c /^xdr___db_associate_reply(xdrs, objp)$/
+xdr___db_bt_maxkey_msg ../rpc_server/db_server_xdr.c /^xdr___db_bt_maxkey_msg(xdrs, objp)$/
+xdr___db_bt_maxkey_reply ../rpc_server/db_server_xdr.c /^xdr___db_bt_maxkey_reply(xdrs, objp)$/
+xdr___db_bt_minkey_msg ../rpc_server/db_server_xdr.c /^xdr___db_bt_minkey_msg(xdrs, objp)$/
+xdr___db_bt_minkey_reply ../rpc_server/db_server_xdr.c /^xdr___db_bt_minkey_reply(xdrs, objp)$/
+xdr___db_close_msg ../rpc_server/db_server_xdr.c /^xdr___db_close_msg(xdrs, objp)$/
+xdr___db_close_reply ../rpc_server/db_server_xdr.c /^xdr___db_close_reply(xdrs, objp)$/
+xdr___db_create_msg ../rpc_server/db_server_xdr.c /^xdr___db_create_msg(xdrs, objp)$/
+xdr___db_create_reply ../rpc_server/db_server_xdr.c /^xdr___db_create_reply(xdrs, objp)$/
+xdr___db_cursor_msg ../rpc_server/db_server_xdr.c /^xdr___db_cursor_msg(xdrs, objp)$/
+xdr___db_cursor_reply ../rpc_server/db_server_xdr.c /^xdr___db_cursor_reply(xdrs, objp)$/
+xdr___db_del_msg ../rpc_server/db_server_xdr.c /^xdr___db_del_msg(xdrs, objp)$/
+xdr___db_del_reply ../rpc_server/db_server_xdr.c /^xdr___db_del_reply(xdrs, objp)$/
+xdr___db_extentsize_msg ../rpc_server/db_server_xdr.c /^xdr___db_extentsize_msg(xdrs, objp)$/
+xdr___db_extentsize_reply ../rpc_server/db_server_xdr.c /^xdr___db_extentsize_reply(xdrs, objp)$/
+xdr___db_flags_msg ../rpc_server/db_server_xdr.c /^xdr___db_flags_msg(xdrs, objp)$/
+xdr___db_flags_reply ../rpc_server/db_server_xdr.c /^xdr___db_flags_reply(xdrs, objp)$/
+xdr___db_get_msg ../rpc_server/db_server_xdr.c /^xdr___db_get_msg(xdrs, objp)$/
+xdr___db_get_reply ../rpc_server/db_server_xdr.c /^xdr___db_get_reply(xdrs, objp)$/
+xdr___db_h_ffactor_msg ../rpc_server/db_server_xdr.c /^xdr___db_h_ffactor_msg(xdrs, objp)$/
+xdr___db_h_ffactor_reply ../rpc_server/db_server_xdr.c /^xdr___db_h_ffactor_reply(xdrs, objp)$/
+xdr___db_h_nelem_msg ../rpc_server/db_server_xdr.c /^xdr___db_h_nelem_msg(xdrs, objp)$/
+xdr___db_h_nelem_reply ../rpc_server/db_server_xdr.c /^xdr___db_h_nelem_reply(xdrs, objp)$/
+xdr___db_join_msg ../rpc_server/db_server_xdr.c /^xdr___db_join_msg(xdrs, objp)$/
+xdr___db_join_reply ../rpc_server/db_server_xdr.c /^xdr___db_join_reply(xdrs, objp)$/
+xdr___db_key_range_msg ../rpc_server/db_server_xdr.c /^xdr___db_key_range_msg(xdrs, objp)$/
+xdr___db_key_range_reply ../rpc_server/db_server_xdr.c /^xdr___db_key_range_reply(xdrs, objp)$/
+xdr___db_lorder_msg ../rpc_server/db_server_xdr.c /^xdr___db_lorder_msg(xdrs, objp)$/
+xdr___db_lorder_reply ../rpc_server/db_server_xdr.c /^xdr___db_lorder_reply(xdrs, objp)$/
+xdr___db_open_msg ../rpc_server/db_server_xdr.c /^xdr___db_open_msg(xdrs, objp)$/
+xdr___db_open_reply ../rpc_server/db_server_xdr.c /^xdr___db_open_reply(xdrs, objp)$/
+xdr___db_pagesize_msg ../rpc_server/db_server_xdr.c /^xdr___db_pagesize_msg(xdrs, objp)$/
+xdr___db_pagesize_reply ../rpc_server/db_server_xdr.c /^xdr___db_pagesize_reply(xdrs, objp)$/
+xdr___db_pget_msg ../rpc_server/db_server_xdr.c /^xdr___db_pget_msg(xdrs, objp)$/
+xdr___db_pget_reply ../rpc_server/db_server_xdr.c /^xdr___db_pget_reply(xdrs, objp)$/
+xdr___db_put_msg ../rpc_server/db_server_xdr.c /^xdr___db_put_msg(xdrs, objp)$/
+xdr___db_put_reply ../rpc_server/db_server_xdr.c /^xdr___db_put_reply(xdrs, objp)$/
+xdr___db_re_delim_msg ../rpc_server/db_server_xdr.c /^xdr___db_re_delim_msg(xdrs, objp)$/
+xdr___db_re_delim_reply ../rpc_server/db_server_xdr.c /^xdr___db_re_delim_reply(xdrs, objp)$/
+xdr___db_re_len_msg ../rpc_server/db_server_xdr.c /^xdr___db_re_len_msg(xdrs, objp)$/
+xdr___db_re_len_reply ../rpc_server/db_server_xdr.c /^xdr___db_re_len_reply(xdrs, objp)$/
+xdr___db_re_pad_msg ../rpc_server/db_server_xdr.c /^xdr___db_re_pad_msg(xdrs, objp)$/
+xdr___db_re_pad_reply ../rpc_server/db_server_xdr.c /^xdr___db_re_pad_reply(xdrs, objp)$/
+xdr___db_remove_msg ../rpc_server/db_server_xdr.c /^xdr___db_remove_msg(xdrs, objp)$/
+xdr___db_remove_reply ../rpc_server/db_server_xdr.c /^xdr___db_remove_reply(xdrs, objp)$/
+xdr___db_rename_msg ../rpc_server/db_server_xdr.c /^xdr___db_rename_msg(xdrs, objp)$/
+xdr___db_rename_reply ../rpc_server/db_server_xdr.c /^xdr___db_rename_reply(xdrs, objp)$/
+xdr___db_stat_msg ../rpc_server/db_server_xdr.c /^xdr___db_stat_msg(xdrs, objp)$/
+xdr___db_stat_reply ../rpc_server/db_server_xdr.c /^xdr___db_stat_reply(xdrs, objp)$/
+xdr___db_sync_msg ../rpc_server/db_server_xdr.c /^xdr___db_sync_msg(xdrs, objp)$/
+xdr___db_sync_reply ../rpc_server/db_server_xdr.c /^xdr___db_sync_reply(xdrs, objp)$/
+xdr___db_truncate_msg ../rpc_server/db_server_xdr.c /^xdr___db_truncate_msg(xdrs, objp)$/
+xdr___db_truncate_reply ../rpc_server/db_server_xdr.c /^xdr___db_truncate_reply(xdrs, objp)$/
+xdr___dbc_close_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_close_msg(xdrs, objp)$/
+xdr___dbc_close_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_close_reply(xdrs, objp)$/
+xdr___dbc_count_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_count_msg(xdrs, objp)$/
+xdr___dbc_count_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_count_reply(xdrs, objp)$/
+xdr___dbc_del_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_del_msg(xdrs, objp)$/
+xdr___dbc_del_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_del_reply(xdrs, objp)$/
+xdr___dbc_dup_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_dup_msg(xdrs, objp)$/
+xdr___dbc_dup_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_dup_reply(xdrs, objp)$/
+xdr___dbc_get_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_get_msg(xdrs, objp)$/
+xdr___dbc_get_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_get_reply(xdrs, objp)$/
+xdr___dbc_pget_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_pget_msg(xdrs, objp)$/
+xdr___dbc_pget_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_pget_reply(xdrs, objp)$/
+xdr___dbc_put_msg ../rpc_server/db_server_xdr.c /^xdr___dbc_put_msg(xdrs, objp)$/
+xdr___dbc_put_reply ../rpc_server/db_server_xdr.c /^xdr___dbc_put_reply(xdrs, objp)$/
+xdr___env_cachesize_msg ../rpc_server/db_server_xdr.c /^xdr___env_cachesize_msg(xdrs, objp)$/
+xdr___env_cachesize_reply ../rpc_server/db_server_xdr.c /^xdr___env_cachesize_reply(xdrs, objp)$/
+xdr___env_close_msg ../rpc_server/db_server_xdr.c /^xdr___env_close_msg(xdrs, objp)$/
+xdr___env_close_reply ../rpc_server/db_server_xdr.c /^xdr___env_close_reply(xdrs, objp)$/
+xdr___env_create_msg ../rpc_server/db_server_xdr.c /^xdr___env_create_msg(xdrs, objp)$/
+xdr___env_create_reply ../rpc_server/db_server_xdr.c /^xdr___env_create_reply(xdrs, objp)$/
+xdr___env_flags_msg ../rpc_server/db_server_xdr.c /^xdr___env_flags_msg(xdrs, objp)$/
+xdr___env_flags_reply ../rpc_server/db_server_xdr.c /^xdr___env_flags_reply(xdrs, objp)$/
+xdr___env_open_msg ../rpc_server/db_server_xdr.c /^xdr___env_open_msg(xdrs, objp)$/
+xdr___env_open_reply ../rpc_server/db_server_xdr.c /^xdr___env_open_reply(xdrs, objp)$/
+xdr___env_remove_msg ../rpc_server/db_server_xdr.c /^xdr___env_remove_msg(xdrs, objp)$/
+xdr___env_remove_reply ../rpc_server/db_server_xdr.c /^xdr___env_remove_reply(xdrs, objp)$/
+xdr___txn_abort_msg ../rpc_server/db_server_xdr.c /^xdr___txn_abort_msg(xdrs, objp)$/
+xdr___txn_abort_reply ../rpc_server/db_server_xdr.c /^xdr___txn_abort_reply(xdrs, objp)$/
+xdr___txn_begin_msg ../rpc_server/db_server_xdr.c /^xdr___txn_begin_msg(xdrs, objp)$/
+xdr___txn_begin_reply ../rpc_server/db_server_xdr.c /^xdr___txn_begin_reply(xdrs, objp)$/
+xdr___txn_commit_msg ../rpc_server/db_server_xdr.c /^xdr___txn_commit_msg(xdrs, objp)$/
+xdr___txn_commit_reply ../rpc_server/db_server_xdr.c /^xdr___txn_commit_reply(xdrs, objp)$/
+xdr___txn_prepare_msg ../rpc_server/db_server_xdr.c /^xdr___txn_prepare_msg(xdrs, objp)$/
+xdr___txn_prepare_reply ../rpc_server/db_server_xdr.c /^xdr___txn_prepare_reply(xdrs, objp)$/
+xdr___txn_recover_msg ../rpc_server/db_server_xdr.c /^xdr___txn_recover_msg(xdrs, objp)$/
+xdr___txn_recover_reply ../rpc_server/db_server_xdr.c /^xdr___txn_recover_reply(xdrs, objp)$/
+xid_t ../include/xa.h /^struct xid_t {$/
diff --git a/db/dist/template/rec_ctemp b/db/dist/template/rec_ctemp
new file mode 100644
index 000000000..6be6d3166
--- /dev/null
+++ b/db/dist/template/rec_ctemp
@@ -0,0 +1,62 @@
+/*
+ * __PREF_FUNC_recover --
+ * Recovery function for FUNC.
+ *
+ * PUBLIC: int __PREF_FUNC_recover
+ * PUBLIC: __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+ */
+int
+__PREF_FUNC_recover(dbenv, dbtp, lsnp, op, info)
+ DB_ENV *dbenv;
+ DBT *dbtp;
+ DB_LSN *lsnp;
+ db_recops op;
+ void *info;
+{
+ __PREF_FUNC_args *argp;
+ DB *file_dbp;
+ DBC *dbc;
+ DB_MPOOLFILE *mpf;
+ PAGE *pagep;
+ int cmp_n, cmp_p, modified, ret;
+
+ REC_PRINT(__PREF_FUNC_print);
+ REC_INTRO(__PREF_FUNC_read);
+
+ if ((ret = memp_fget(mpf, &argp->pgno, 0, &pagep)) != 0)
+ if (DB_REDO(op)) {
+ if ((ret = memp_fget(mpf,
+ &argp->pgno, DB_MPOOL_CREATE, &pagep)) != 0)
+ goto out;
+ } else {
+ *lsnp = argp->prev_lsn;
+ ret = 0;
+ goto out;
+ }
+
+ modified = 0;
+ cmp_n = log_compare(lsnp, &LSN(pagep));
+
+ /*
+ * Use this when there is something like "pagelsn" in the argp
+ * structure. Sometimes, you might need to compare meta-data
+ * lsn's instead.
+ *
+ * cmp_p = log_compare(&LSN(pagep), argp->pagelsn);
+ */
+ if (cmp_p == 0 && DB_REDO(op)) {
+ /* Need to redo update described. */
+ modified = 1;
+ } else if (cmp_n == 0 && !DB_REDO(op)) {
+ /* Need to undo update described. */
+ modified = 1;
+ }
+ if (ret = memp_fput(mpf, pagep, modified ? DB_MPOOL_DIRTY : 0))
+ goto out;
+
+ *lsnp = argp->prev_lsn;
+ ret = 0;
+
+out: REC_CLOSE;
+}
+
diff --git a/db/docs/api_c/db_associate.html b/db/docs/api_c/db_associate.html
new file mode 100644
index 000000000..56ea224ea
--- /dev/null
+++ b/db/docs/api_c/db_associate.html
@@ -0,0 +1,156 @@
+<!--Id: db_associate.so,v 10.9 2001/05/05 01:49:09 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DB-&gt;associate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DB-&gt;associate</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+DB-&gt;associate(DB *primary, DB *secondary,
+ int (*callback)(DB *, const DBT *, const DBT *, DBT *),
+ u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The DB-&gt;associate function is used to declare one database a
+secondary index for a primary database. After a secondary database has
+been "associated" with a primary database, all updates to the primary
+will be automatically reflected in the secondary and all reads from the
+secondary will return corresponding data from the primary. Note that
+as primary keys must be unique for secondary indices to work, the
+primary database must be configured without support for duplicate data
+items. See <a href="../ref/am/second.html">Secondary indices</a> for
+more information.
+<p>The <b>primary</b> argument should be a database handle for the primary
+database that is to be indexed.
+The <b>secondary</b> argument should be an open database handle of
+either a newly created and empty database that is to be used to store
+a secondary index, or of a database that was previously associated with
+the same primary and contains a secondary index. Note that it is not
+safe to associate as a secondary database a handle that is in use by
+another thread of control or has open cursors. If the handle was opened
+with the <a href="../api_c/env_open.html#DB_THREAD">DB_THREAD</a> flag it is safe to use it in multiple threads
+of control after the DB-&gt;associate function has returned. Note also
+that either secondary keys must be unique or the secondary database must
+be configured with support for duplicate data items.
+<p>The <b>callback</b> argument should refer to a callback function that
+creates a secondary key from a given primary key and data pair. When
+called, the first argument will be the secondary DB handle; the
+second and third arguments will be <a href="../api_c/dbt.html">DBT</a>s containing a primary
+key and datum respectively; and the fourth argument will be a zeroed
+DBT in which the callback function should fill in <b>data</b> and
+<b>size</b> fields that describe the secondary key.
+<p>If the callback function needs to allocate memory for the <b>data</b>
+field rather than simply pointing into the primary key or datum, the
+<b>flags</b> field of the returned <a href="../api_c/dbt.html">DBT</a> should be set to
+DB_DBT_APPMALLOC, which indicates that Berkeley DB should free the
+memory when it is done with it.
+<p>If any key/data pair in the primary yields a null secondary key and
+should be left out of the secondary index, the callback function may
+optionally return DB_DONOTINDEX. Otherwise, the callback
+function should return 0 in case of success or any other integer error
+code in case of failure; the error code will be returned from the Berkeley DB
+interface call that initiated the callback. Note that if the callback
+function returns DB_DONOTINDEX for any key/data pairs in the
+primary database, the secondary index will not contain any reference to
+those key/data pairs, and such operations as cursor iterations and range
+queries will reflect only the corresponding subset of the database. If
+this is not desirable, the application should ensure that the callback
+function is well-defined for all possible values and never returns
+DB_DONOTINDEX.
+<p>The callback argument may be NULL if and only if both the primary and
+secondary database handles were opened with the <a href="../api_c/db_open.html#DB_RDONLY">DB_RDONLY</a> flag.
+<p>The <b>flags</b> value must be set to 0 or
+the following value:
+<p><dl compact>
+<p><dt><a name="DB_CREATE">DB_CREATE</a><dd>If the secondary database is empty, walk through the primary and create
+an index to it in the empty secondary. Note that this operation is
+potentially very expensive.
+<p>If the secondary database has been opened in an environment configured
+with transactions, each put necessary for its creation will be done in
+the context of a transaction created for the purpose.
+<p>Note that care should be taken not to use a newly-created secondary
+database in another thread of control until the DB-&gt;associate
+call has returned successfully in the first thread.
+</dl>
+<h1>Errors</h1>
+<p>The DB-&gt;associate function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>The secondary database handle has already been associated with this or
+another database handle.
+<p>The secondary database handle is not open.
+<p>The primary database has been configured to allow duplicates.
+</dl>
+<p>The DB-&gt;associate function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the DB-&gt;associate function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/db_create.html">db_create</a>,
+<a href="../api_c/db_associate.html">DB-&gt;associate</a>,
+<a href="../api_c/db_close.html">DB-&gt;close</a>,
+<a href="../api_c/db_cursor.html">DB-&gt;cursor</a>,
+<a href="../api_c/db_del.html">DB-&gt;del</a>,
+<a href="../api_c/db_err.html">DB-&gt;err</a>, <a href="../api_c/db_err.html">DB-&gt;errx</a>
+<a href="../api_c/db_fd.html">DB-&gt;fd</a>,
+<a href="../api_c/db_get.html">DB-&gt;get</a>,
+<a href="../api_c/db_get.html">DB-&gt;pget</a>,
+<a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a>,
+<a href="../api_c/db_get_type.html">DB-&gt;get_type</a>,
+<a href="../api_c/db_join.html">DB-&gt;join</a>,
+<a href="../api_c/db_key_range.html">DB-&gt;key_range</a>,
+<a href="../api_c/db_open.html">DB-&gt;open</a>,
+<a href="../api_c/db_put.html">DB-&gt;put</a>,
+<a href="../api_c/db_remove.html">DB-&gt;remove</a>,
+<a href="../api_c/db_rename.html">DB-&gt;rename</a>,
+<a href="../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>,
+<a href="../api_c/db_set_append_recno.html">DB-&gt;set_append_recno</a>,
+<a href="../api_c/db_set_bt_compare.html">DB-&gt;set_bt_compare</a>,
+<a href="../api_c/db_set_bt_minkey.html">DB-&gt;set_bt_minkey</a>,
+<a href="../api_c/db_set_bt_prefix.html">DB-&gt;set_bt_prefix</a>,
+<a href="../api_c/db_set_cachesize.html">DB-&gt;set_cachesize</a>,
+<a href="../api_c/db_set_dup_compare.html">DB-&gt;set_dup_compare</a>,
+<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>,
+<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>,
+<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a>,
+<a href="../api_c/db_set_feedback.html">DB-&gt;set_feedback</a>,
+<a href="../api_c/db_set_flags.html">DB-&gt;set_flags</a>,
+<a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a>,
+<a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a>,
+<a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a>,
+<a href="../api_c/db_set_lorder.html">DB-&gt;set_lorder</a>,
+<a href="../api_c/db_set_pagesize.html">DB-&gt;set_pagesize</a>,
+<a href="../api_c/db_set_paniccall.html">DB-&gt;set_paniccall</a>,
+<a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a>,
+<a href="../api_c/db_set_re_delim.html">DB-&gt;set_re_delim</a>,
+<a href="../api_c/db_set_re_len.html">DB-&gt;set_re_len</a>,
+<a href="../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a>,
+<a href="../api_c/db_set_re_source.html">DB-&gt;set_re_source</a>,
+<a href="../api_c/db_stat.html">DB-&gt;stat</a>,
+<a href="../api_c/db_sync.html">DB-&gt;sync</a>,
+<a href="../api_c/db_truncate.html">DB-&gt;truncate</a>,
+<a href="../api_c/db_upgrade.html">DB-&gt;upgrade</a>,
+and
+<a href="../api_c/db_verify.html">DB-&gt;verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/db_set_alloc.html b/db/docs/api_c/db_set_alloc.html
new file mode 100644
index 000000000..90d55f0cc
--- /dev/null
+++ b/db/docs/api_c/db_set_alloc.html
@@ -0,0 +1,130 @@
+<!--Id: db_set_alloc.so,v 10.1 2001/04/04 19:06:25 bostic Exp -->
+<!--Id: env_set_alloc.so,v 1.3 2001/05/01 14:23:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DB-&gt;set_alloc</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DB-&gt;set_alloc</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB-&gt;set_alloc(DB *db,
+ void *(*app_malloc)(size_t size),
+ void *(*app_realloc)(void *, size_t),
+ void (*app_free)(void *));
+</pre></h3>
+<h1>Description</h1>
+<p>Set the allocation functions used by the DB_ENV and DB
+methods to allocate or free memory owned by the application. The
+<a href="../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a> interface sets the allocation functions for a
+database environment; the DB-&gt;set_alloc interface sets the
+allocation functions for a single database. If both are specified,
+functions specified for a database will be used in preference to
+functions specified for environment.
+<p>There are a number of interfaces in Berkeley DB where memory is allocated by
+the library and then given to the application. For example, the
+<a href="../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag, when specified in the <a href="../api_c/dbt.html">DBT</a> object,
+will cause the DB methods to allocate and reallocate memory
+which then becomes the responsibility of the calling application. (See
+<a href="../api_c/dbt.html">DBT</a> for more information.) Other examples are the Berkeley DB
+interfaces which return statistical information to the application:
+<a href="../api_c/db_stat.html">DB-&gt;stat</a>, <a href="../api_c/lock_stat.html">lock_stat</a>, <a href="../api_c/log_archive.html">log_archive</a>,
+<a href="../api_c/log_stat.html">log_stat</a>, <a href="../api_c/memp_stat.html">memp_stat</a>, and <a href="../api_c/txn_stat.html">txn_stat</a>. There is
+one interface in the Berkeley DB where memory is allocated by the application
+and then given to the library: <a href="../api_c/db_associate.html">DB-&gt;associate</a>.
+<p>On systems in which there may be multiple library versions of the
+standard allocation routines (notably Windows NT), transferring memory
+between the library and the application will fail because the Berkeley DB
+library allocates memory from a different heap than the application uses
+to free it. To avoid this problem, the <a href="../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a> and
+DB-&gt;set_alloc functions can be used to pass Berkeley DB references to the
+application's allocation routines.
+<p>It is not an error to not specify all three arguments to these
+interfaces; however, in that case the specified interfaces must be
+compatible with the standard library interfaces, as they will be used
+together. The functions specified must match the calling
+conventions of the ANSI C X3.159-1989 (ANSI C) library routines of the same name.
+<p>For DB handles opened inside of Berkeley DB environments, calling the
+DB-&gt;set_alloc function affects the entire environment and is equivalent to calling
+the <a href="../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a> function.
+<p>The DB-&gt;set_alloc interface may be used only to configure Berkeley DB before
+the <a href="../api_c/db_open.html">DB-&gt;open</a> interface is called.
+<p>The DB-&gt;set_alloc function returns a non-zero error value on failure and 0 on success.
+<h1>Errors</h1>
+<p>The DB-&gt;set_alloc function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The DB-&gt;set_alloc function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the DB-&gt;set_alloc function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/db_create.html">db_create</a>,
+<a href="../api_c/db_associate.html">DB-&gt;associate</a>,
+<a href="../api_c/db_close.html">DB-&gt;close</a>,
+<a href="../api_c/db_cursor.html">DB-&gt;cursor</a>,
+<a href="../api_c/db_del.html">DB-&gt;del</a>,
+<a href="../api_c/db_err.html">DB-&gt;err</a>, <a href="../api_c/db_err.html">DB-&gt;errx</a>
+<a href="../api_c/db_fd.html">DB-&gt;fd</a>,
+<a href="../api_c/db_get.html">DB-&gt;get</a>,
+<a href="../api_c/db_get.html">DB-&gt;pget</a>,
+<a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a>,
+<a href="../api_c/db_get_type.html">DB-&gt;get_type</a>,
+<a href="../api_c/db_join.html">DB-&gt;join</a>,
+<a href="../api_c/db_key_range.html">DB-&gt;key_range</a>,
+<a href="../api_c/db_open.html">DB-&gt;open</a>,
+<a href="../api_c/db_put.html">DB-&gt;put</a>,
+<a href="../api_c/db_remove.html">DB-&gt;remove</a>,
+<a href="../api_c/db_rename.html">DB-&gt;rename</a>,
+<a href="../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>,
+<a href="../api_c/db_set_append_recno.html">DB-&gt;set_append_recno</a>,
+<a href="../api_c/db_set_bt_compare.html">DB-&gt;set_bt_compare</a>,
+<a href="../api_c/db_set_bt_minkey.html">DB-&gt;set_bt_minkey</a>,
+<a href="../api_c/db_set_bt_prefix.html">DB-&gt;set_bt_prefix</a>,
+<a href="../api_c/db_set_cachesize.html">DB-&gt;set_cachesize</a>,
+<a href="../api_c/db_set_dup_compare.html">DB-&gt;set_dup_compare</a>,
+<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>,
+<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>,
+<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a>,
+<a href="../api_c/db_set_feedback.html">DB-&gt;set_feedback</a>,
+<a href="../api_c/db_set_flags.html">DB-&gt;set_flags</a>,
+<a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a>,
+<a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a>,
+<a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a>,
+<a href="../api_c/db_set_lorder.html">DB-&gt;set_lorder</a>,
+<a href="../api_c/db_set_pagesize.html">DB-&gt;set_pagesize</a>,
+<a href="../api_c/db_set_paniccall.html">DB-&gt;set_paniccall</a>,
+<a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a>,
+<a href="../api_c/db_set_re_delim.html">DB-&gt;set_re_delim</a>,
+<a href="../api_c/db_set_re_len.html">DB-&gt;set_re_len</a>,
+<a href="../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a>,
+<a href="../api_c/db_set_re_source.html">DB-&gt;set_re_source</a>,
+<a href="../api_c/db_stat.html">DB-&gt;stat</a>,
+<a href="../api_c/db_sync.html">DB-&gt;sync</a>,
+<a href="../api_c/db_truncate.html">DB-&gt;truncate</a>,
+<a href="../api_c/db_upgrade.html">DB-&gt;upgrade</a>,
+and
+<a href="../api_c/db_verify.html">DB-&gt;verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/db_truncate.html b/db/docs/api_c/db_truncate.html
new file mode 100644
index 000000000..e011122a0
--- /dev/null
+++ b/db/docs/api_c/db_truncate.html
@@ -0,0 +1,111 @@
+<!--Id: db_truncate.so,v 1.6 2001/04/18 13:44:46 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DB-&gt;truncate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DB-&gt;truncate</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB-&gt;truncate(DB *db, const char *file,
+ const char *database, u_int32_t *countp, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The DB-&gt;truncate interface empties the database specified by
+the <b>file</b> and <b>database</b> arguments, discarding all records
+it contains. If no <b>database</b> is specified, the underlying file
+represented by <b>file</b> is emptied.
+The number of records discarded from the database is returned in
+<b>countp</b>.
+<p>Truncate must have exclusive use of the database. While truncate is
+transaction-protected, it cannot be part of a application-created
+transaction.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>After DB-&gt;truncate has been called, regardless of its return,
+the DB handle may not be accessed again.
+<p>The DB-&gt;truncate function returns a non-zero error value on failure and 0 on success.
+<h1>Environment Variables</h1>
+<p><dl compact>
+<p><dt>DB_HOME<dd>If the <b>dbenv</b> argument to <a href="../api_c/db_create.html">db_create</a> was initialized using
+<a href="../api_c/env_open.html">DBENV-&gt;open</a>, the environment variable <b>DB_HOME</b> may be used
+as the path of the database environment home. Specifically, DB-&gt;truncate
+is affected by the configuration value DB_DATA_DIR.
+</dl>
+<h1>Errors</h1>
+<p>The DB-&gt;truncate function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>A database in the file is currently open.
+</dl>
+<p>The DB-&gt;truncate function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the DB-&gt;truncate function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/db_create.html">db_create</a>,
+<a href="../api_c/db_associate.html">DB-&gt;associate</a>,
+<a href="../api_c/db_close.html">DB-&gt;close</a>,
+<a href="../api_c/db_cursor.html">DB-&gt;cursor</a>,
+<a href="../api_c/db_del.html">DB-&gt;del</a>,
+<a href="../api_c/db_err.html">DB-&gt;err</a>, <a href="../api_c/db_err.html">DB-&gt;errx</a>
+<a href="../api_c/db_fd.html">DB-&gt;fd</a>,
+<a href="../api_c/db_get.html">DB-&gt;get</a>,
+<a href="../api_c/db_get.html">DB-&gt;pget</a>,
+<a href="../api_c/db_get_byteswapped.html">DB-&gt;get_byteswapped</a>,
+<a href="../api_c/db_get_type.html">DB-&gt;get_type</a>,
+<a href="../api_c/db_join.html">DB-&gt;join</a>,
+<a href="../api_c/db_key_range.html">DB-&gt;key_range</a>,
+<a href="../api_c/db_open.html">DB-&gt;open</a>,
+<a href="../api_c/db_put.html">DB-&gt;put</a>,
+<a href="../api_c/db_remove.html">DB-&gt;remove</a>,
+<a href="../api_c/db_rename.html">DB-&gt;rename</a>,
+<a href="../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>,
+<a href="../api_c/db_set_append_recno.html">DB-&gt;set_append_recno</a>,
+<a href="../api_c/db_set_bt_compare.html">DB-&gt;set_bt_compare</a>,
+<a href="../api_c/db_set_bt_minkey.html">DB-&gt;set_bt_minkey</a>,
+<a href="../api_c/db_set_bt_prefix.html">DB-&gt;set_bt_prefix</a>,
+<a href="../api_c/db_set_cachesize.html">DB-&gt;set_cachesize</a>,
+<a href="../api_c/db_set_dup_compare.html">DB-&gt;set_dup_compare</a>,
+<a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>,
+<a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a>,
+<a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a>,
+<a href="../api_c/db_set_feedback.html">DB-&gt;set_feedback</a>,
+<a href="../api_c/db_set_flags.html">DB-&gt;set_flags</a>,
+<a href="../api_c/db_set_h_ffactor.html">DB-&gt;set_h_ffactor</a>,
+<a href="../api_c/db_set_h_hash.html">DB-&gt;set_h_hash</a>,
+<a href="../api_c/db_set_h_nelem.html">DB-&gt;set_h_nelem</a>,
+<a href="../api_c/db_set_lorder.html">DB-&gt;set_lorder</a>,
+<a href="../api_c/db_set_pagesize.html">DB-&gt;set_pagesize</a>,
+<a href="../api_c/db_set_paniccall.html">DB-&gt;set_paniccall</a>,
+<a href="../api_c/db_set_q_extentsize.html">DB-&gt;set_q_extentsize</a>,
+<a href="../api_c/db_set_re_delim.html">DB-&gt;set_re_delim</a>,
+<a href="../api_c/db_set_re_len.html">DB-&gt;set_re_len</a>,
+<a href="../api_c/db_set_re_pad.html">DB-&gt;set_re_pad</a>,
+<a href="../api_c/db_set_re_source.html">DB-&gt;set_re_source</a>,
+<a href="../api_c/db_stat.html">DB-&gt;stat</a>,
+<a href="../api_c/db_sync.html">DB-&gt;sync</a>,
+<a href="../api_c/db_truncate.html">DB-&gt;truncate</a>,
+<a href="../api_c/db_upgrade.html">DB-&gt;upgrade</a>,
+and
+<a href="../api_c/db_verify.html">DB-&gt;verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/dbt_bulk.html b/db/docs/api_c/dbt_bulk.html
new file mode 100644
index 000000000..ec8cb1a9a
--- /dev/null
+++ b/db/docs/api_c/dbt_bulk.html
@@ -0,0 +1,81 @@
+<!--Id: dbt_bulk.so,v 10.5 2001/05/05 01:49:13 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DBT</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DBT: Bulk Retrieval</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+ <a name="3"><!--meow--></a>
+<p>If either of the DB_MULTIPLE or DB_MULTIPLE_KEY flags
+were specified to the <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> functions, the data
+<a href="../api_c/dbt.html">DBT</a> returned by those interfaces will refer to a buffer that
+is filled with data. Access to that data is through the following
+macros:
+<p><dl compact>
+<p><dt><a name="DB_MULTIPLE_INIT">DB_MULTIPLE_INIT</a><dd><pre>DB_MULTIPLE_INIT(void *pointer, <a href="../api_c/dbt.html">DBT</a> *data);</pre>
+<p>Initialize the retrieval. The <b>pointer</b> argument is a variable
+to be initialized. The <b>data</b> argument is a <a href="../api_c/dbt.html">DBT</a> structure
+returned from a successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a>
+for which one of the DB_MULTIPLE or DB_MULTIPLE_KEY
+flags was specified.
+<p><dt><a name="DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a><dd><pre>DB_MULTIPLE_NEXT(void *pointer, <a href="../api_c/dbt.html">DBT</a> *data, void *retdata, size_t retdlen);</pre>
+<p>The <b>data</b> argument is a <a href="../api_c/dbt.html">DBT</a> structure returned from a
+successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> for which the
+DB_MULTIPLE flag was specified. The <b>pointer</b> and
+<b>data</b> arguments must have been previously initialized by a call
+to DB_MULTIPLE_INIT. The <b>retdata</b> argument is set to
+refer to the next data element in the returned set, and the
+<b>retdlen</b> argument is set to the length, in bytes, of that data
+element. When used with the Queue and Recno access methods,
+<b>retdata</b> will be set to NULL for deleted records. The
+<b>pointer</b> argument is set to NULL if there are no more data
+elements in the returned set.
+<p><dt><a name="DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a><dd><pre>DB_MULTIPLE_KEY_NEXT(void *pointer, <a href="../api_c/dbt.html">DBT</a> *data,
+ void *retkey, size_t retklen, void *retdata, size_t retdlen);</pre>
+<p>The <b>data</b> argument is a <a href="../api_c/dbt.html">DBT</a> structure returned from a
+successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> for which the
+DB_MULTIPLE_KEY flag was specified. The <b>pointer</b> and
+<b>data</b> arguments must have been previously initialized by a call
+to DB_MULTIPLE_INIT. The <b>retkey</b> argument is set to
+refer to the next key element in the returned set, and the
+<b>retklen</b> argument is set to the length, in bytes, of that key
+element. The <b>retdata</b> argument is set to refer to the next data
+element in the returned set, and the <b>retdlen</b> argument is set to
+the length, in bytes, of that data element. The <b>pointer</b> and
+argument is set to NULL if there are no more key/data pairs in the
+returned set.
+<p><dt><a name="DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a><dd><pre>DB_MULTIPLE_RECNO_NEXT(void *pointer, <a href="../api_c/dbt.html">DBT</a> *data,
+ db_recno_t recno, void * retdata, size_t retdlen);</pre>
+<p>The <b>data</b> argument is a <a href="../api_c/dbt.html">DBT</a> structure returned from a
+successful call to <a href="../api_c/db_get.html">DB-&gt;get</a> or <a href="../api_c/dbc_get.html">DBcursor-&gt;c_get</a> for which the
+DB_MULTIPLE_KEY flag was specified. The <b>pointer</b> and
+<b>data</b> arguments must have been previously initialized by a call
+to DB_MULTIPLE_INIT. The <b>recno</b> argument is set to the
+record number of the next record in the returned set. The
+<b>retdata</b> argument is set to refer to the next data element in
+the returned set, and the <b>retdlen</b> argument is set to the length,
+in bytes, of that data element. When used with the Queue and Recno
+access methods, <b>retdata</b> will be set to NULL for deleted
+records. The <b>pointer</b> argument is set to NULL if there are
+no more key/data pairs in the returned set.
+</dl>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/env_err.html b/db/docs/api_c/env_err.html
new file mode 100644
index 000000000..01aea3553
--- /dev/null
+++ b/db/docs/api_c/env_err.html
@@ -0,0 +1,98 @@
+<!--Id: env_err.so,v 10.13 2001/04/05 20:01:26 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DBENV-&gt;err</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DBENV-&gt;err</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+void
+DBENV-&gt;err(DB_ENV *dbenv, int error, const char *fmt, ...);
+<p>
+void
+DBENV-&gt;errx(DB_ENV *dbenv, const char *fmt, ...);
+</pre></h3>
+<h1>Description</h1>
+<p>The DBENV-&gt;err, DBENV-&gt;errx, <a href="../api_c/db_err.html">DB-&gt;err</a> and
+<a href="../api_c/db_err.html">DB-&gt;errx</a> functions provide error-messaging functionality for
+applications written using the Berkeley DB library.
+<p>The DBENV-&gt;err function constructs an error message consisting of the
+following elements:
+<p><blockquote><p><dl compact>
+<p><dt>An optional prefix string<dd>If no error callback function has been set using the
+<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a> function, any prefix string specified using the
+<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a> function, followed by two separating characters: a colon
+and a &lt;space&gt; character.
+<p><dt>An optional printf-style message<dd>The supplied message <b>fmt</b>, if non-NULL, in which the
+ANSI C X3.159-1989 (ANSI C) printf function specifies how subsequent arguments
+are converted for output.
+<p><dt>A separator<dd>Two separating characters: a colon and a &lt;space&gt; character.
+<p><dt>A standard error string<dd>The standard system or Berkeley DB library error string associated with the
+<b>error</b> value, as returned by the <a href="../api_c/env_strerror.html">db_strerror</a> function.
+</dl>
+</blockquote>
+<p>This constructed error message is then handled as follows:
+<p><blockquote>
+<p>If an error callback function has been set (see <a href="../api_c/db_set_errcall.html">DB-&gt;set_errcall</a>
+and <a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>), that function is called with two
+arguments: any prefix string specified (see <a href="../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a> and
+<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>) and the error message.
+<p>If a C library FILE * has been set (see <a href="../api_c/db_set_errfile.html">DB-&gt;set_errfile</a> and
+<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>), the error message is written to that output
+stream.
+<p>If none of these output options has been configured, the error message
+is written to stderr, the standard error output stream.</blockquote>
+<p>The DBENV-&gt;errx and <a href="../api_c/db_err.html">DB-&gt;errx</a> functions perform identically to the
+DBENV-&gt;err and <a href="../api_c/db_err.html">DB-&gt;err</a> functions, except that they do not append
+the final separator characters and standard error string to the error
+message.
+<h1>See Also</h1>
+<a href="../api_c/env_create.html">db_env_create</a>,
+<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
+<a href="../api_c/env_err.html">DBENV-&gt;err</a>, <a href="../api_c/env_err.html">DBENV-&gt;errx</a>
+<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
+<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
+<a href="../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>,
+<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
+<a href="../api_c/env_set_data_dir.html">DBENV-&gt;set_data_dir</a>,
+<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
+<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
+<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
+<a href="../api_c/env_set_feedback.html">DBENV-&gt;set_feedback</a>,
+<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
+<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
+<a href="../api_c/env_set_pageyield.html">db_env_set_pageyield</a>,
+<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
+<a href="../api_c/env_set_panicstate.html">db_env_set_panicstate</a>,
+<a href="../api_c/env_set_rec_init.html">DBENV-&gt;set_recovery_init</a>,
+<a href="../api_c/env_set_rpc_server.html">DBENV-&gt;set_rpc_server</a>,
+<a href="../api_c/env_set_region_init.html">db_env_set_region_init</a>,
+<a href="../api_c/env_set_shm_key.html">DBENV-&gt;set_shm_key</a>,
+<a href="../api_c/env_set_tas_spins.html">db_env_set_tas_spins</a>,
+<a href="../api_c/env_set_tmp_dir.html">DBENV-&gt;set_tmp_dir</a>,
+<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>,
+<a href="../api_c/env_strerror.html">db_strerror</a>
+and
+<a href="../api_c/env_version.html">db_version</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/env_set_alloc.html b/db/docs/api_c/env_set_alloc.html
new file mode 100644
index 000000000..dc85ebe89
--- /dev/null
+++ b/db/docs/api_c/env_set_alloc.html
@@ -0,0 +1,107 @@
+<!--Id: env_set_alloc.so,v 1.3 2001/05/01 14:23:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DBENV-&gt;set_alloc</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DBENV-&gt;set_alloc</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DB_ENV-&gt;set_alloc(DB *db,
+ void *(*app_malloc)(size_t size),
+ void *(*app_realloc)(void *, size_t),
+ void (*app_free)(void *));
+</pre></h3>
+<h1>Description</h1>
+<p>Set the allocation functions used by the DB_ENV and DB
+methods to allocate or free memory owned by the application. The
+DBENV-&gt;set_alloc interface sets the allocation functions for a
+database environment; the <a href="../api_c/db_set_alloc.html">DB-&gt;set_alloc</a> interface sets the
+allocation functions for a single database. If both are specified,
+functions specified for a database will be used in preference to
+functions specified for environment.
+<p>There are a number of interfaces in Berkeley DB where memory is allocated by
+the library and then given to the application. For example, the
+<a href="../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag, when specified in the <a href="../api_c/dbt.html">DBT</a> object,
+will cause the DB methods to allocate and reallocate memory
+which then becomes the responsibility of the calling application. (See
+<a href="../api_c/dbt.html">DBT</a> for more information.) Other examples are the Berkeley DB
+interfaces which return statistical information to the application:
+<a href="../api_c/db_stat.html">DB-&gt;stat</a>, <a href="../api_c/lock_stat.html">lock_stat</a>, <a href="../api_c/log_archive.html">log_archive</a>,
+<a href="../api_c/log_stat.html">log_stat</a>, <a href="../api_c/memp_stat.html">memp_stat</a>, and <a href="../api_c/txn_stat.html">txn_stat</a>. There is
+one interface in the Berkeley DB where memory is allocated by the application
+and then given to the library: <a href="../api_c/db_associate.html">DB-&gt;associate</a>.
+<p>On systems in which there may be multiple library versions of the
+standard allocation routines (notably Windows NT), transferring memory
+between the library and the application will fail because the Berkeley DB
+library allocates memory from a different heap than the application uses
+to free it. To avoid this problem, the DBENV-&gt;set_alloc and
+<a href="../api_c/db_set_alloc.html">DB-&gt;set_alloc</a> functions can be used to pass Berkeley DB references to the
+application's allocation routines.
+<p>It is not an error to not specify all three arguments to these
+interfaces; however, in that case the specified interfaces must be
+compatible with the standard library interfaces, as they will be used
+together. The functions specified must match the calling
+conventions of the ANSI C X3.159-1989 (ANSI C) library routines of the same name.
+<p>The DBENV-&gt;set_alloc interface may be used only to configure Berkeley DB before
+the <a href="../api_c/env_open.html">DBENV-&gt;open</a> interface is called.
+<p>The DBENV-&gt;set_alloc function returns a non-zero error value on failure and 0 on success.
+<h1>Errors</h1>
+<p>The DBENV-&gt;set_alloc function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The DBENV-&gt;set_alloc function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the DBENV-&gt;set_alloc function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/env_create.html">db_env_create</a>,
+<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
+<a href="../api_c/env_err.html">DBENV-&gt;err</a>, <a href="../api_c/env_err.html">DBENV-&gt;errx</a>
+<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
+<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
+<a href="../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>,
+<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
+<a href="../api_c/env_set_data_dir.html">DBENV-&gt;set_data_dir</a>,
+<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
+<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
+<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
+<a href="../api_c/env_set_feedback.html">DBENV-&gt;set_feedback</a>,
+<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
+<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
+<a href="../api_c/env_set_pageyield.html">db_env_set_pageyield</a>,
+<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
+<a href="../api_c/env_set_panicstate.html">db_env_set_panicstate</a>,
+<a href="../api_c/env_set_rec_init.html">DBENV-&gt;set_recovery_init</a>,
+<a href="../api_c/env_set_rpc_server.html">DBENV-&gt;set_rpc_server</a>,
+<a href="../api_c/env_set_region_init.html">db_env_set_region_init</a>,
+<a href="../api_c/env_set_shm_key.html">DBENV-&gt;set_shm_key</a>,
+<a href="../api_c/env_set_tas_spins.html">db_env_set_tas_spins</a>,
+<a href="../api_c/env_set_tmp_dir.html">DBENV-&gt;set_tmp_dir</a>,
+<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>,
+<a href="../api_c/env_strerror.html">db_strerror</a>
+and
+<a href="../api_c/env_version.html">db_version</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/env_set_lg_regionmax.html b/db/docs/api_c/env_set_lg_regionmax.html
new file mode 100644
index 000000000..322fdd830
--- /dev/null
+++ b/db/docs/api_c/env_set_lg_regionmax.html
@@ -0,0 +1,73 @@
+<!--Id: env_set_lg_regionmax.so,v 10.3 2001/05/01 14:23:08 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DBENV-&gt;set_lg_regionmax</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DBENV-&gt;set_lg_regionmax</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DBENV-&gt;set_lg_regionmax(DB_ENV *dbenv, u_int32_t lg_regionmax);
+</pre></h3>
+<h1>Description</h1>
+<p>Set the size of the underlying logging subsystem region, in bytes. By
+default, or if the value is set to 0, the base region size is 60KB.
+The log region is used to store filenames, and so may need to be
+increased in size if a large number of files will be opened and
+registered with the specified Berkeley DB environment's log manager.
+<p>The DBENV-&gt;set_lg_regionmax interface may be used only to configure Berkeley DB before
+the <a href="../api_c/env_open.html">DBENV-&gt;open</a> interface is called.
+<p>The DBENV-&gt;set_lg_regionmax function returns a non-zero error value on failure and 0 on success.
+<p>The database environment's log region size may also be set using the environment's
+<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
+single line with the string "set_lg_regionmax", one or more whitespace characters,
+and the size in bytes. Because the <b>DB_CONFIG</b> file is read when the database
+environment is opened, it will silently overrule configuration done
+before that time.
+<h1>Errors</h1>
+<p>The DBENV-&gt;set_lg_regionmax function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>Called after <a href="../api_c/env_open.html">DBENV-&gt;open</a> was called.
+</dl>
+<p>The DBENV-&gt;set_lg_regionmax function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the DBENV-&gt;set_lg_regionmax function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/env_set_lg_bsize.html">DBENV-&gt;set_lg_bsize</a>,
+<a href="../api_c/env_set_lg_dir.html">DBENV-&gt;set_lg_dir</a>,
+<a href="../api_c/env_set_lg_max.html">DBENV-&gt;set_lg_max</a>,
+<a href="../api_c/env_set_lg_regionmax.html">DBENV-&gt;set_lg_regionmax</a>,
+<a href="../api_c/log_archive.html">log_archive</a>,
+<a href="../api_c/log_compare.html">log_compare</a>,
+<a href="../api_c/log_file.html">log_file</a>,
+<a href="../api_c/log_flush.html">log_flush</a>,
+<a href="../api_c/log_get.html">log_get</a>,
+<a href="../api_c/log_put.html">log_put</a>,
+<a href="../api_c/log_register.html">log_register</a>,
+<a href="../api_c/log_stat.html">log_stat</a>,
+and
+<a href="../api_c/log_unregister.html">log_unregister</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/env_set_rpc_server.html b/db/docs/api_c/env_set_rpc_server.html
new file mode 100644
index 000000000..17f0afe31
--- /dev/null
+++ b/db/docs/api_c/env_set_rpc_server.html
@@ -0,0 +1,97 @@
+<!--"@(#)env_set_rpc_server.so 10.1 (Sleepycat) 8/25/99"-->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DBENV-&gt;set_rpc_server</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DBENV-&gt;set_rpc_server</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+DBENV-&gt;set_rpc_server(DB_ENV *dbenv, CLIENT *client, char *host,
+ long cl_timeout, long sv_timeout, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>Establishes a connection for this <b>dbenv</b> to a RPC server. If
+the <b>client</b> argument is NULL, this call creates a connection to
+the Berkeley DB server on the indicated hostname and sets up a channel for
+communication.
+If the <b>client</b> channel has been provided by the
+application then Berkeley DB will use it as its connection and the <b>host</b> and
+<b>cl_timeout</b> fields are ignored.
+<p>The <b>cl_timeout</b> argument specifies the number of seconds the client
+should wait for results to come back from the server. Once the timeout
+has expired on any communication with the server, DB_NOSERVER will
+be returned. If this value is zero, a default timeout is used.
+<p>The <b>sv_timeout</b> argument specifies the number of seconds the server
+should allow a client connection to remain idle before assuming that the
+client is gone. Once that timeout has been reached, the server releases
+all resources associated with that client connection. Subsequent attempts
+by that client to communicate with the server result in
+DB_NOSERVER_ID, indicating that an invalid identifier has been
+given to the server. This value can be considered a hint to the server.
+The server may alter this value based on its own policies or allowed
+values. If this value is zero, a default timeout is used.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>When the DBENV-&gt;set_rpc_server function has been called, any subsequent calls
+to Berkeley DB library interfaces may return either <a name="DB_NOSERVER">DB_NOSERVER</a> or
+<a name="DB_NOSERVER_ID">DB_NOSERVER_ID</a>.
+<p>The DBENV-&gt;set_rpc_server function returns a non-zero error value on failure and 0 on success.
+<h1>Errors</h1>
+<p>The DBENV-&gt;set_rpc_server function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The DBENV-&gt;set_rpc_server function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the DBENV-&gt;set_rpc_server function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/env_create.html">db_env_create</a>,
+<a href="../api_c/env_close.html">DBENV-&gt;close</a>,
+<a href="../api_c/env_err.html">DBENV-&gt;err</a>, <a href="../api_c/env_err.html">DBENV-&gt;errx</a>
+<a href="../api_c/env_open.html">DBENV-&gt;open</a>,
+<a href="../api_c/env_remove.html">DBENV-&gt;remove</a>,
+<a href="../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>,
+<a href="../api_c/env_set_cachesize.html">DBENV-&gt;set_cachesize</a>,
+<a href="../api_c/env_set_data_dir.html">DBENV-&gt;set_data_dir</a>,
+<a href="../api_c/env_set_errcall.html">DBENV-&gt;set_errcall</a>,
+<a href="../api_c/env_set_errfile.html">DBENV-&gt;set_errfile</a>,
+<a href="../api_c/env_set_errpfx.html">DBENV-&gt;set_errpfx</a>,
+<a href="../api_c/env_set_feedback.html">DBENV-&gt;set_feedback</a>,
+<a href="../api_c/env_set_flags.html">DBENV-&gt;set_flags</a>,
+<a href="../api_c/env_set_mutexlocks.html">DBENV-&gt;set_mutexlocks</a>,
+<a href="../api_c/env_set_pageyield.html">db_env_set_pageyield</a>,
+<a href="../api_c/env_set_paniccall.html">DBENV-&gt;set_paniccall</a>,
+<a href="../api_c/env_set_panicstate.html">db_env_set_panicstate</a>,
+<a href="../api_c/env_set_rec_init.html">DBENV-&gt;set_recovery_init</a>,
+<a href="../api_c/env_set_rpc_server.html">DBENV-&gt;set_rpc_server</a>,
+<a href="../api_c/env_set_region_init.html">db_env_set_region_init</a>,
+<a href="../api_c/env_set_shm_key.html">DBENV-&gt;set_shm_key</a>,
+<a href="../api_c/env_set_tas_spins.html">db_env_set_tas_spins</a>,
+<a href="../api_c/env_set_tmp_dir.html">DBENV-&gt;set_tmp_dir</a>,
+<a href="../api_c/env_set_verbose.html">DBENV-&gt;set_verbose</a>,
+<a href="../api_c/env_strerror.html">db_strerror</a>
+and
+<a href="../api_c/env_version.html">db_version</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/txn_discard.html b/db/docs/api_c/txn_discard.html
new file mode 100644
index 000000000..7f6f09aae
--- /dev/null
+++ b/db/docs/api_c/txn_discard.html
@@ -0,0 +1,72 @@
+<!--Id: txn_discard.so,v 10.2 2001/05/05 01:49:17 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: txn_discard</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>txn_discard</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int
+txn_discard(DB_TXN *tid, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The txn_discard function frees up all the per-process resources
+associated with the specified DB_TXN handle, neither committing
+nor aborting the transaction. This call may be used only after calls
+to <a href="../api_c/txn_recover.html">txn_recover</a> when there are multiple global transaction
+managers recovering transactions in a single Berkeley DB environment. Any
+transactions returned by <a href="../api_c/txn_recover.html">txn_recover</a> that are not handled by
+the current global transaction manager should be discarded using
+txn_discard.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>The txn_discard function returns EINVAL if the transaction handle does
+not refer to a transaction that was recovered into a prepared but not
+yet completed state.
+<p>Otherwise, the txn_discard function returns a non-zero error value on failure and 0 on success.
+<h1>Errors</h1>
+<p>The txn_discard function may fail and return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>The transaction handle does not refer to a transaction that was
+recovered into a prepared but not yet completed state.
+</dl>
+<p>The txn_discard function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the txn_discard function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/env_set_tx_max.html">DBENV-&gt;set_tx_max</a>,
+<a href="../api_c/env_set_tx_recover.html">DBENV-&gt;set_tx_recover</a>,
+<a href="../api_c/env_set_tx_timestamp.html">DBENV-&gt;set_tx_timestamp</a>,
+<a href="../api_c/txn_abort.html">txn_abort</a>,
+<a href="../api_c/txn_begin.html">txn_begin</a>,
+<a href="../api_c/txn_checkpoint.html">txn_checkpoint</a>,
+<a href="../api_c/txn_commit.html">txn_commit</a>,
+<a href="../api_c/txn_discard.html">txn_discard</a>,
+<a href="../api_c/txn_id.html">txn_id</a>,
+<a href="../api_c/txn_prepare.html">txn_prepare</a>,
+<a href="../api_c/txn_recover.html">txn_recover</a>,
+and
+<a href="../api_c/txn_stat.html">txn_stat</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_c/txn_recover.html b/db/docs/api_c/txn_recover.html
new file mode 100644
index 000000000..fd91fce01
--- /dev/null
+++ b/db/docs/api_c/txn_recover.html
@@ -0,0 +1,82 @@
+<!--Id: txn_recover.so,v 10.6 2001/05/04 14:31:05 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: txn_recover</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>txn_recover</h1>
+</td>
+<td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db.h&gt;
+<p>
+int txn_recover(DB_ENV *dbenv, DB_PREPLIST preplist[],
+ long count, long *retp, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The txn_recover interface returns a list of prepared but not
+yet resolved transactions. The txn_recover function should only be
+called after the environment has been recovered.
+<p>On return from txn_recover, the <b>preplist</b> argument will
+be filled in with a list of transactions that must be resolved by the
+application (committed, aborted or discarded). The <b>preplist</b>
+argument is a structure of type DB_PREPLIST; the following DB_PREPLIST
+fields will be filled in:
+<p><dl compact>
+<p><dt>DB_TXN *txn;<dd>The transaction handle for the transaction.
+<p><dt>u_int8_t gid[<a href="../api_c/txn_prepare.html#DB_XIDDATASIZE">DB_XIDDATASIZE</a>];<dd>The global transaction ID for the transaction. The global transaction
+ID is the one specified when the transaction was prepared. The
+application is responsible for ensuring uniqueness among global
+transaction IDs.
+</dl>
+<p>The application must call <a href="../api_c/txn_abort.html">txn_abort</a>, <a href="../api_c/txn_commit.html">txn_commit</a> or
+<a href="../api_c/txn_discard.html">txn_discard</a> on each returned DB_TXN handle before
+starting any new operations.
+<p>The <b>count</b> parameter specifies the number of available entries
+in the passed-in <b>preplist</b> array. The <b>retp</b> parameter
+returns the number of entries txn_recover has filled in, in the
+array.
+<p>The <b>flags</b> value must be set to one of the following values:
+<p><dl compact>
+<p><dt><a name="DB_FIRST">DB_FIRST</a><dd>Begin returning a list of prepared, but not yet resolved transactions.
+<p><dt><a name="DB_NEXT">DB_NEXT</a><dd>Continue returning a list of prepared, but not yet resolved transactions,
+starting where the last call to txn_recover left off.
+</dl>
+<p>The txn_recover function returns a non-zero error value on failure and 0 on success.
+<h1>Errors</h1>
+<p>The txn_recover function may fail and return a non-zero error for errors specified for other Berkeley DB and C library or system functions.
+If a catastrophic error has occurred, the txn_recover function may fail and return
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>See Also</h1>
+<a href="../api_c/env_set_tx_max.html">DBENV-&gt;set_tx_max</a>,
+<a href="../api_c/env_set_tx_recover.html">DBENV-&gt;set_tx_recover</a>,
+<a href="../api_c/env_set_tx_timestamp.html">DBENV-&gt;set_tx_timestamp</a>,
+<a href="../api_c/txn_abort.html">txn_abort</a>,
+<a href="../api_c/txn_begin.html">txn_begin</a>,
+<a href="../api_c/txn_checkpoint.html">txn_checkpoint</a>,
+<a href="../api_c/txn_commit.html">txn_commit</a>,
+<a href="../api_c/txn_discard.html">txn_discard</a>,
+<a href="../api_c/txn_id.html">txn_id</a>,
+<a href="../api_c/txn_prepare.html">txn_prepare</a>,
+<a href="../api_c/txn_recover.html">txn_recover</a>,
+and
+<a href="../api_c/txn_stat.html">txn_stat</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_c/c_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/db_associate.html b/db/docs/api_cxx/db_associate.html
new file mode 100644
index 000000000..2d17da91c
--- /dev/null
+++ b/db/docs/api_cxx/db_associate.html
@@ -0,0 +1,158 @@
+<!--Id: db_associate.so,v 10.9 2001/05/05 01:49:09 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: Db::associate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>Db::associate</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+DB::associate(Db *secondary,
+ int (*callback)(Db *, const Dbt *, const Dbt *, Dbt *),
+ u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The Db::associate function is used to declare one database a
+secondary index for a primary database. After a secondary database has
+been "associated" with a primary database, all updates to the primary
+will be automatically reflected in the secondary and all reads from the
+secondary will return corresponding data from the primary. Note that
+as primary keys must be unique for secondary indices to work, the
+primary database must be configured without support for duplicate data
+items. See <a href="../ref/am/second.html">Secondary indices</a> for
+more information.
+<p>The associate method called should be a method off a database handle for
+the primary database that is to be indexed.
+The <b>secondary</b> argument should be an open database handle of
+either a newly created and empty database that is to be used to store
+a secondary index, or of a database that was previously associated with
+the same primary and contains a secondary index. Note that it is not
+safe to associate as a secondary database a handle that is in use by
+another thread of control or has open cursors. If the handle was opened
+with the <a href="../api_cxx/env_open.html#DB_THREAD">DB_THREAD</a> flag it is safe to use it in multiple threads
+of control after the Db::associate method has returned. Note also
+that either secondary keys must be unique or the secondary database must
+be configured with support for duplicate data items.
+<p>The <b>callback</b> argument should refer to a callback function that
+creates a secondary key from a given primary key and data pair. When
+called, the first argument will be the secondary <a href="../api_cxx/db_class.html">Db</a> handle; the
+second and third arguments will be <a href="../api_cxx/dbt_class.html">Dbt</a>s containing a primary
+key and datum respectively; and the fourth argument will be a zeroed
+DBT in which the callback function should fill in <b>data</b> and
+<b>size</b> fields that describe the secondary key.
+<p>If the callback function needs to allocate memory for the <b>data</b>
+field rather than simply pointing into the primary key or datum, the
+<b>flags</b> field of the returned <a href="../api_cxx/dbt_class.html">Dbt</a> should be set to
+DB_DBT_APPMALLOC, which indicates that Berkeley DB should free the
+memory when it is done with it.
+<p>If any key/data pair in the primary yields a null secondary key and
+should be left out of the secondary index, the callback function may
+optionally return DB_DONOTINDEX. Otherwise, the callback
+function should return 0 in case of success or any other integer error
+code in case of failure; the error code will be returned from the Berkeley DB
+interface call that initiated the callback. Note that if the callback
+function returns DB_DONOTINDEX for any key/data pairs in the
+primary database, the secondary index will not contain any reference to
+those key/data pairs, and such operations as cursor iterations and range
+queries will reflect only the corresponding subset of the database. If
+this is not desirable, the application should ensure that the callback
+function is well-defined for all possible values and never returns
+DB_DONOTINDEX.
+<p>The callback argument may be NULL if and only if both the primary and
+secondary database handles were opened with the <a href="../api_cxx/db_open.html#DB_RDONLY">DB_RDONLY</a> flag.
+<p>The <b>flags</b> value must be set to 0 or
+the following value:
+<p><dl compact>
+<p><dt><a name="DB_CREATE">DB_CREATE</a><dd>If the secondary database is empty, walk through the primary and create
+an index to it in the empty secondary. Note that this operation is
+potentially very expensive.
+<p>If the secondary database has been opened in an environment configured
+with transactions, each put necessary for its creation will be done in
+the context of a transaction created for the purpose.
+<p>Note that care should be taken not to use a newly-created secondary
+database in another thread of control until the Db::associate
+call has returned successfully in the first thread.
+</dl>
+<h1>Errors</h1>
+<p>The Db::associate method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>The secondary database handle has already been associated with this or
+another database handle.
+<p>The secondary database handle is not open.
+<p>The primary database has been configured to allow duplicates.
+</dl>
+<p>The Db::associate method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the Db::associate method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/db_class.html">Db</a>
+<h1>See Also</h1>
+<a href="../api_cxx/db_associate.html">Db::associate</a>,
+<a href="../api_cxx/db_close.html">Db::close</a>,
+<a href="../api_cxx/db_cursor.html">Db::cursor</a>,
+<a href="../api_cxx/db_del.html">Db::del</a>,
+<a href="../api_cxx/db_err.html">Db::err</a>, <a href="../api_cxx/db_err.html">Db::errx</a>
+<a href="../api_cxx/db_fd.html">Db::fd</a>,
+<a href="../api_cxx/db_get.html">Db::get</a>,
+<a href="../api_cxx/db_get.html">Db::pget</a>,
+<a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a>,
+<a href="../api_cxx/db_get_type.html">Db::get_type</a>,
+<a href="../api_cxx/db_join.html">Db::join</a>,
+<a href="../api_cxx/db_key_range.html">Db::key_range</a>,
+<a href="../api_cxx/db_open.html">Db::open</a>,
+<a href="../api_cxx/db_put.html">Db::put</a>,
+<a href="../api_cxx/db_remove.html">Db::remove</a>,
+<a href="../api_cxx/db_rename.html">Db::rename</a>,
+<a href="../api_cxx/db_set_alloc.html">Db::set_alloc</a>,
+<a href="../api_cxx/db_set_append_recno.html">Db::set_append_recno</a>,
+<a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a>,
+<a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a>,
+<a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a>,
+<a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a>,
+<a href="../api_cxx/db_set_dup_compare.html">Db::set_dup_compare</a>,
+<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>,
+<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>,
+<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a>,
+<a href="../api_cxx/db_set_feedback.html">Db::set_feedback</a>,
+<a href="../api_cxx/db_set_flags.html">Db::set_flags</a>,
+<a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a>,
+<a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a>,
+<a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a>,
+<a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a>,
+<a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a>,
+<a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a>,
+<a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a>,
+<a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>,
+<a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a>,
+<a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a>,
+<a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a>,
+<a href="../api_cxx/db_stat.html">Db::stat</a>,
+<a href="../api_cxx/db_sync.html">Db::sync</a>,
+<a href="../api_cxx/db_truncate.html">Db::truncate</a>,
+<a href="../api_cxx/db_upgrade.html">Db::upgrade</a>,
+and
+<a href="../api_cxx/db_verify.html">Db::verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/db_set_alloc.html b/db/docs/api_cxx/db_set_alloc.html
new file mode 100644
index 000000000..194ec431a
--- /dev/null
+++ b/db/docs/api_cxx/db_set_alloc.html
@@ -0,0 +1,138 @@
+<!--Id: db_set_alloc.so,v 10.1 2001/04/04 19:06:25 bostic Exp -->
+<!--Id: env_set_alloc.so,v 1.3 2001/05/01 14:23:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: Db::set_alloc</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>Db::set_alloc</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+extern "C" {
+ typedef void *(*db_malloc_fcn_type)(void *, size_t);
+ typedef void *(*db_realloc_fcn_type)(size_t);
+ typedef void *(*db_free_fcn_type)(void *);
+};
+<p>
+int
+Db::set_alloc(db_malloc_fcn_type app_malloc,
+ db_realloc_fcn_type app_realloc,
+ db_free_fcn_type app_free);
+</pre></h3>
+<h1>Description</h1>
+<p>Set the allocation functions used by the <a href="../api_cxx/dbenv_class.html">DbEnv</a> and <a href="../api_cxx/db_class.html">Db</a>
+methods to allocate or free memory owned by the application. The
+<a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a> interface sets the allocation functions for a
+database environment; the Db::set_alloc interface sets the
+allocation functions for a single database. If both are specified,
+functions specified for a database will be used in preference to
+functions specified for environment.
+<p>There are a number of interfaces in Berkeley DB where memory is allocated by
+the library and then given to the application. For example, the
+<a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag, when specified in the <a href="../api_cxx/dbt_class.html">Dbt</a> object,
+will cause the <a href="../api_cxx/db_class.html">Db</a> methods to allocate and reallocate memory
+which then becomes the responsibility of the calling application. (See
+<a href="../api_cxx/dbt_class.html">Dbt</a> for more information.) Other examples are the Berkeley DB
+interfaces which return statistical information to the application:
+<a href="../api_cxx/db_stat.html">Db::stat</a>, <a href="../api_cxx/lock_stat.html">DbEnv::lock_stat</a>, <a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>,
+<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>, <a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, and <a href="../api_cxx/txn_stat.html">DbEnv::txn_stat</a>. There is
+one interface in the Berkeley DB where memory is allocated by the application
+and then given to the library: <a href="../api_cxx/db_associate.html">Db::associate</a>.
+<p>On systems in which there may be multiple library versions of the
+standard allocation routines (notably Windows NT), transferring memory
+between the library and the application will fail because the Berkeley DB
+library allocates memory from a different heap than the application uses
+to free it. To avoid this problem, the <a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a> and
+Db::set_alloc methods can be used to pass Berkeley DB references to the
+application's allocation routines.
+<p>It is not an error to not specify all three arguments to these
+interfaces; however, in that case the specified interfaces must be
+compatible with the standard library interfaces, as they will be used
+together. The methods specified must match the calling
+conventions of the ANSI C X3.159-1989 (ANSI C) library routines of the same name.
+<p>For <a href="../api_cxx/db_class.html">Db</a> handles opened inside of Berkeley DB environments, calling the
+Db::set_alloc method affects the entire environment and is equivalent to calling
+the <a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a> method.
+<p>The Db::set_alloc interface may be used only to configure Berkeley DB before
+the <a href="../api_cxx/db_open.html">Db::open</a> interface is called.
+<p>The Db::set_alloc method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<h1>Errors</h1>
+<p>The Db::set_alloc method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The Db::set_alloc method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the Db::set_alloc method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/db_class.html">Db</a>
+<h1>See Also</h1>
+<a href="../api_cxx/db_associate.html">Db::associate</a>,
+<a href="../api_cxx/db_close.html">Db::close</a>,
+<a href="../api_cxx/db_cursor.html">Db::cursor</a>,
+<a href="../api_cxx/db_del.html">Db::del</a>,
+<a href="../api_cxx/db_err.html">Db::err</a>, <a href="../api_cxx/db_err.html">Db::errx</a>
+<a href="../api_cxx/db_fd.html">Db::fd</a>,
+<a href="../api_cxx/db_get.html">Db::get</a>,
+<a href="../api_cxx/db_get.html">Db::pget</a>,
+<a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a>,
+<a href="../api_cxx/db_get_type.html">Db::get_type</a>,
+<a href="../api_cxx/db_join.html">Db::join</a>,
+<a href="../api_cxx/db_key_range.html">Db::key_range</a>,
+<a href="../api_cxx/db_open.html">Db::open</a>,
+<a href="../api_cxx/db_put.html">Db::put</a>,
+<a href="../api_cxx/db_remove.html">Db::remove</a>,
+<a href="../api_cxx/db_rename.html">Db::rename</a>,
+<a href="../api_cxx/db_set_alloc.html">Db::set_alloc</a>,
+<a href="../api_cxx/db_set_append_recno.html">Db::set_append_recno</a>,
+<a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a>,
+<a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a>,
+<a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a>,
+<a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a>,
+<a href="../api_cxx/db_set_dup_compare.html">Db::set_dup_compare</a>,
+<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>,
+<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>,
+<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a>,
+<a href="../api_cxx/db_set_feedback.html">Db::set_feedback</a>,
+<a href="../api_cxx/db_set_flags.html">Db::set_flags</a>,
+<a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a>,
+<a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a>,
+<a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a>,
+<a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a>,
+<a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a>,
+<a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a>,
+<a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a>,
+<a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>,
+<a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a>,
+<a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a>,
+<a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a>,
+<a href="../api_cxx/db_stat.html">Db::stat</a>,
+<a href="../api_cxx/db_sync.html">Db::sync</a>,
+<a href="../api_cxx/db_truncate.html">Db::truncate</a>,
+<a href="../api_cxx/db_upgrade.html">Db::upgrade</a>,
+and
+<a href="../api_cxx/db_verify.html">Db::verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/db_truncate.html b/db/docs/api_cxx/db_truncate.html
new file mode 100644
index 000000000..31f34448e
--- /dev/null
+++ b/db/docs/api_cxx/db_truncate.html
@@ -0,0 +1,114 @@
+<!--Id: db_truncate.so,v 1.6 2001/04/18 13:44:46 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: Db::truncate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>Db::truncate</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+Db::truncate(const char *file,
+ const char *database, u_int32_t *countp, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The Db::truncate interface empties the database specified by
+the <b>file</b> and <b>database</b> arguments, discarding all records
+it contains. If no <b>database</b> is specified, the underlying file
+represented by <b>file</b> is emptied.
+The number of records discarded from the database is returned in
+<b>countp</b>.
+<p>Truncate must have exclusive use of the database. While truncate is
+transaction-protected, it cannot be part of a application-created
+transaction.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>After Db::truncate has been called, regardless of its return,
+the <a href="../api_cxx/db_class.html">Db</a> handle may not be accessed again.
+<p>The Db::truncate method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<h1>Environment Variables</h1>
+<p><dl compact>
+<p><dt>DB_HOME<dd>If the <b>dbenv</b> argument to <a href="../api_c/db_create.html">db_create</a> was initialized using
+<a href="../api_cxx/env_open.html">DbEnv::open</a>, the environment variable <b>DB_HOME</b> may be used
+as the path of the database environment home. Specifically, Db::truncate
+is affected by the configuration value DB_DATA_DIR.
+</dl>
+<h1>Errors</h1>
+<p>The Db::truncate method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>A database in the file is currently open.
+</dl>
+<p>The Db::truncate method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the Db::truncate method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/db_class.html">Db</a>
+<h1>See Also</h1>
+<a href="../api_cxx/db_associate.html">Db::associate</a>,
+<a href="../api_cxx/db_close.html">Db::close</a>,
+<a href="../api_cxx/db_cursor.html">Db::cursor</a>,
+<a href="../api_cxx/db_del.html">Db::del</a>,
+<a href="../api_cxx/db_err.html">Db::err</a>, <a href="../api_cxx/db_err.html">Db::errx</a>
+<a href="../api_cxx/db_fd.html">Db::fd</a>,
+<a href="../api_cxx/db_get.html">Db::get</a>,
+<a href="../api_cxx/db_get.html">Db::pget</a>,
+<a href="../api_cxx/db_get_byteswapped.html">Db::get_byteswapped</a>,
+<a href="../api_cxx/db_get_type.html">Db::get_type</a>,
+<a href="../api_cxx/db_join.html">Db::join</a>,
+<a href="../api_cxx/db_key_range.html">Db::key_range</a>,
+<a href="../api_cxx/db_open.html">Db::open</a>,
+<a href="../api_cxx/db_put.html">Db::put</a>,
+<a href="../api_cxx/db_remove.html">Db::remove</a>,
+<a href="../api_cxx/db_rename.html">Db::rename</a>,
+<a href="../api_cxx/db_set_alloc.html">Db::set_alloc</a>,
+<a href="../api_cxx/db_set_append_recno.html">Db::set_append_recno</a>,
+<a href="../api_cxx/db_set_bt_compare.html">Db::set_bt_compare</a>,
+<a href="../api_cxx/db_set_bt_minkey.html">Db::set_bt_minkey</a>,
+<a href="../api_cxx/db_set_bt_prefix.html">Db::set_bt_prefix</a>,
+<a href="../api_cxx/db_set_cachesize.html">Db::set_cachesize</a>,
+<a href="../api_cxx/db_set_dup_compare.html">Db::set_dup_compare</a>,
+<a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>,
+<a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a>,
+<a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a>,
+<a href="../api_cxx/db_set_feedback.html">Db::set_feedback</a>,
+<a href="../api_cxx/db_set_flags.html">Db::set_flags</a>,
+<a href="../api_cxx/db_set_h_ffactor.html">Db::set_h_ffactor</a>,
+<a href="../api_cxx/db_set_h_hash.html">Db::set_h_hash</a>,
+<a href="../api_cxx/db_set_h_nelem.html">Db::set_h_nelem</a>,
+<a href="../api_cxx/db_set_lorder.html">Db::set_lorder</a>,
+<a href="../api_cxx/db_set_pagesize.html">Db::set_pagesize</a>,
+<a href="../api_cxx/db_set_paniccall.html">Db::set_paniccall</a>,
+<a href="../api_cxx/db_set_q_extentsize.html">Db::set_q_extentsize</a>,
+<a href="../api_cxx/db_set_re_delim.html">Db::set_re_delim</a>,
+<a href="../api_cxx/db_set_re_len.html">Db::set_re_len</a>,
+<a href="../api_cxx/db_set_re_pad.html">Db::set_re_pad</a>,
+<a href="../api_cxx/db_set_re_source.html">Db::set_re_source</a>,
+<a href="../api_cxx/db_stat.html">Db::stat</a>,
+<a href="../api_cxx/db_sync.html">Db::sync</a>,
+<a href="../api_cxx/db_truncate.html">Db::truncate</a>,
+<a href="../api_cxx/db_upgrade.html">Db::upgrade</a>,
+and
+<a href="../api_cxx/db_verify.html">Db::verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/dbt_bulk.html b/db/docs/api_cxx/dbt_bulk.html
new file mode 100644
index 000000000..aabb547d6
--- /dev/null
+++ b/db/docs/api_cxx/dbt_bulk.html
@@ -0,0 +1,81 @@
+<!--Id: dbt_bulk.so,v 10.5 2001/05/05 01:49:13 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DBT</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DBT: Bulk Retrieval</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+ <a name="3"><!--meow--></a>
+<p>If either of the DB_MULTIPLE or DB_MULTIPLE_KEY flags
+were specified to the <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> methods, the data
+<a href="../api_cxx/dbt_class.html">Dbt</a> returned by those interfaces will refer to a buffer that
+is filled with data. Access to that data is through the following
+macros:
+<p><dl compact>
+<p><dt><a name="DB_MULTIPLE_INIT">DB_MULTIPLE_INIT</a><dd><pre>DB_MULTIPLE_INIT(void *pointer, <a href="../api_cxx/dbt_class.html">Dbt</a> *data);</pre>
+<p>Initialize the retrieval. The <b>pointer</b> argument is a variable
+to be initialized. The <b>data</b> argument is a <a href="../api_cxx/dbt_class.html">Dbt</a> structure
+returned from a successful call to <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a>
+for which one of the DB_MULTIPLE or DB_MULTIPLE_KEY
+flags was specified.
+<p><dt><a name="DB_MULTIPLE_NEXT">DB_MULTIPLE_NEXT</a><dd><pre>DB_MULTIPLE_NEXT(void *pointer, <a href="../api_cxx/dbt_class.html">Dbt</a> *data, void *retdata, size_t retdlen);</pre>
+<p>The <b>data</b> argument is a <a href="../api_cxx/dbt_class.html">Dbt</a> structure returned from a
+successful call to <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> for which the
+DB_MULTIPLE flag was specified. The <b>pointer</b> and
+<b>data</b> arguments must have been previously initialized by a call
+to DB_MULTIPLE_INIT. The <b>retdata</b> argument is set to
+refer to the next data element in the returned set, and the
+<b>retdlen</b> argument is set to the length, in bytes, of that data
+element. When used with the Queue and Recno access methods,
+<b>retdata</b> will be set to NULL for deleted records. The
+<b>pointer</b> argument is set to NULL if there are no more data
+elements in the returned set.
+<p><dt><a name="DB_MULTIPLE_KEY_NEXT">DB_MULTIPLE_KEY_NEXT</a><dd><pre>DB_MULTIPLE_KEY_NEXT(void *pointer, <a href="../api_cxx/dbt_class.html">Dbt</a> *data,
+ void *retkey, size_t retklen, void *retdata, size_t retdlen);</pre>
+<p>The <b>data</b> argument is a <a href="../api_cxx/dbt_class.html">Dbt</a> structure returned from a
+successful call to <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> for which the
+DB_MULTIPLE_KEY flag was specified. The <b>pointer</b> and
+<b>data</b> arguments must have been previously initialized by a call
+to DB_MULTIPLE_INIT. The <b>retkey</b> argument is set to
+refer to the next key element in the returned set, and the
+<b>retklen</b> argument is set to the length, in bytes, of that key
+element. The <b>retdata</b> argument is set to refer to the next data
+element in the returned set, and the <b>retdlen</b> argument is set to
+the length, in bytes, of that data element. The <b>pointer</b> and
+argument is set to NULL if there are no more key/data pairs in the
+returned set.
+<p><dt><a name="DB_MULTIPLE_RECNO_NEXT">DB_MULTIPLE_RECNO_NEXT</a><dd><pre>DB_MULTIPLE_RECNO_NEXT(void *pointer, <a href="../api_cxx/dbt_class.html">Dbt</a> *data,
+ db_recno_t recno, void * retdata, size_t retdlen);</pre>
+<p>The <b>data</b> argument is a <a href="../api_cxx/dbt_class.html">Dbt</a> structure returned from a
+successful call to <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> for which the
+DB_MULTIPLE_KEY flag was specified. The <b>pointer</b> and
+<b>data</b> arguments must have been previously initialized by a call
+to DB_MULTIPLE_INIT. The <b>recno</b> argument is set to the
+record number of the next record in the returned set. The
+<b>retdata</b> argument is set to refer to the next data element in
+the returned set, and the <b>retdlen</b> argument is set to the length,
+in bytes, of that data element. When used with the Queue and Recno
+access methods, <b>retdata</b> will be set to NULL for deleted
+records. The <b>pointer</b> argument is set to NULL if there are
+no more key/data pairs in the returned set.
+</dl>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/env_err.html b/db/docs/api_cxx/env_err.html
new file mode 100644
index 000000000..26096abde
--- /dev/null
+++ b/db/docs/api_cxx/env_err.html
@@ -0,0 +1,101 @@
+<!--Id: env_err.so,v 10.13 2001/04/05 20:01:26 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::err</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv::err</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+DbEnv::err(int error, const char *fmt, ...);
+<p>
+DbEnv::errx(const char *fmt, ...);
+</pre></h3>
+<h1>Description</h1>
+<p>The DbEnv::err, DbEnv::errx, <a href="../api_cxx/db_err.html">Db::err</a> and
+<a href="../api_cxx/db_err.html">Db::errx</a> methods provide error-messaging functionality for
+applications written using the Berkeley DB library.
+<p>The DbEnv::err method constructs an error message consisting of the
+following elements:
+<p><blockquote><p><dl compact>
+<p><dt>An optional prefix string<dd>If no error callback method has been set using the
+<a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a> method, any prefix string specified using the
+<a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a> method, followed by two separating characters: a colon
+and a &lt;space&gt; character.
+<p><dt>An optional printf-style message<dd>The supplied message <b>fmt</b>, if non-NULL, in which the
+ANSI C X3.159-1989 (ANSI C) printf function specifies how subsequent arguments
+are converted for output.
+<p><dt>A separator<dd>Two separating characters: a colon and a &lt;space&gt; character.
+<p><dt>A standard error string<dd>The standard system or Berkeley DB library error string associated with the
+<b>error</b> value, as returned by the <a href="../api_cxx/env_strerror.html">DbEnv::strerror</a> method.
+</dl>
+</blockquote>
+<p>This constructed error message is then handled as follows:
+<p><blockquote>
+<p>If an error callback method has been set (see <a href="../api_cxx/db_set_errcall.html">Db::set_errcall</a>
+and <a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>), that method is called with two
+arguments: any prefix string specified (see <a href="../api_cxx/db_set_errpfx.html">Db::set_errpfx</a> and
+<a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>) and the error message.
+<p>If a C library FILE * has been set (see <a href="../api_cxx/db_set_errfile.html">Db::set_errfile</a> and
+<a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a>), the error message is written to that output
+stream.
+<p>If a C++ ostream has been set
+(see <a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a>), the error message is written to that
+stream.
+<p>If none of these output options has been configured, the error message
+is written to stderr, the standard error output stream.</blockquote>
+<p>The DbEnv::errx and <a href="../api_cxx/db_err.html">Db::errx</a> methods perform identically to the
+DbEnv::err and <a href="../api_cxx/db_err.html">Db::err</a> methods, except that they do not append
+the final separator characters and standard error string to the error
+message.
+<h1>Class</h1>
+<a href="../api_cxx/dbenv_class.html">DbEnv</a>
+<h1>See Also</h1>
+<a href="../api_cxx/env_close.html">DbEnv::close</a>,
+<a href="../api_cxx/env_err.html">DbEnv::err</a>, <a href="../api_cxx/env_err.html">DbEnv::errx</a>
+<a href="../api_cxx/env_open.html">DbEnv::open</a>,
+<a href="../api_cxx/env_remove.html">DbEnv::remove</a>,
+<a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a>,
+<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>,
+<a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a>,
+<a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>,
+<a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a>,
+<a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a>,
+<a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>,
+<a href="../api_cxx/env_set_feedback.html">DbEnv::set_feedback</a>,
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a>,
+<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
+<a href="../api_cxx/env_set_pageyield.html">DbEnv::set_pageyield</a>,
+<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
+<a href="../api_cxx/env_set_panicstate.html">DbEnv::set_panicstate</a>,
+<a href="../api_cxx/env_set_rec_init.html">DbEnv::set_recovery_init</a>,
+<a href="../api_cxx/env_set_rpc_server.html">DbEnv::set_rpc_server</a>,
+<a href="../api_cxx/env_set_region_init.html">DbEnv::set_region_init</a>,
+<a href="../api_cxx/env_set_shm_key.html">DbEnv::set_shm_key</a>,
+<a href="../api_cxx/env_set_tas_spins.html">DbEnv::set_tas_spins</a>,
+<a href="../api_cxx/env_set_tmp_dir.html">DbEnv::set_tmp_dir</a>,
+<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>,
+<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>
+and
+<a href="../api_cxx/env_version.html">DbEnv::version</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/env_set_alloc.html b/db/docs/api_cxx/env_set_alloc.html
new file mode 100644
index 000000000..7838fe017
--- /dev/null
+++ b/db/docs/api_cxx/env_set_alloc.html
@@ -0,0 +1,116 @@
+<!--Id: env_set_alloc.so,v 1.3 2001/05/01 14:23:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::set_alloc</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv::set_alloc</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+extern "C" {
+ typedef void *(*db_malloc_fcn_type)(void *, size_t);
+ typedef void *(*db_realloc_fcn_type)(size_t);
+ typedef void *(*db_free_fcn_type)(void *);
+};
+<p>
+int
+DbEnv::set_alloc(db_malloc_fcn_type app_malloc,
+ db_realloc_fcn_type app_realloc,
+ db_free_fcn_type app_free);
+</pre></h3>
+<h1>Description</h1>
+<p>Set the allocation functions used by the <a href="../api_cxx/dbenv_class.html">DbEnv</a> and <a href="../api_cxx/db_class.html">Db</a>
+methods to allocate or free memory owned by the application. The
+DbEnv::set_alloc interface sets the allocation functions for a
+database environment; the <a href="../api_cxx/db_set_alloc.html">Db::set_alloc</a> interface sets the
+allocation functions for a single database. If both are specified,
+functions specified for a database will be used in preference to
+functions specified for environment.
+<p>There are a number of interfaces in Berkeley DB where memory is allocated by
+the library and then given to the application. For example, the
+<a href="../api_cxx/dbt_class.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a> flag, when specified in the <a href="../api_cxx/dbt_class.html">Dbt</a> object,
+will cause the <a href="../api_cxx/db_class.html">Db</a> methods to allocate and reallocate memory
+which then becomes the responsibility of the calling application. (See
+<a href="../api_cxx/dbt_class.html">Dbt</a> for more information.) Other examples are the Berkeley DB
+interfaces which return statistical information to the application:
+<a href="../api_cxx/db_stat.html">Db::stat</a>, <a href="../api_cxx/lock_stat.html">DbEnv::lock_stat</a>, <a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>,
+<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>, <a href="../api_cxx/memp_stat.html">DbEnv::memp_stat</a>, and <a href="../api_cxx/txn_stat.html">DbEnv::txn_stat</a>. There is
+one interface in the Berkeley DB where memory is allocated by the application
+and then given to the library: <a href="../api_cxx/db_associate.html">Db::associate</a>.
+<p>On systems in which there may be multiple library versions of the
+standard allocation routines (notably Windows NT), transferring memory
+between the library and the application will fail because the Berkeley DB
+library allocates memory from a different heap than the application uses
+to free it. To avoid this problem, the DbEnv::set_alloc and
+<a href="../api_cxx/db_set_alloc.html">Db::set_alloc</a> methods can be used to pass Berkeley DB references to the
+application's allocation routines.
+<p>It is not an error to not specify all three arguments to these
+interfaces; however, in that case the specified interfaces must be
+compatible with the standard library interfaces, as they will be used
+together. The methods specified must match the calling
+conventions of the ANSI C X3.159-1989 (ANSI C) library routines of the same name.
+<p>The DbEnv::set_alloc interface may be used only to configure Berkeley DB before
+the <a href="../api_cxx/env_open.html">DbEnv::open</a> interface is called.
+<p>The DbEnv::set_alloc method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<h1>Errors</h1>
+<p>The DbEnv::set_alloc method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The DbEnv::set_alloc method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv::set_alloc method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/dbenv_class.html">DbEnv</a>
+<h1>See Also</h1>
+<a href="../api_cxx/env_close.html">DbEnv::close</a>,
+<a href="../api_cxx/env_err.html">DbEnv::err</a>, <a href="../api_cxx/env_err.html">DbEnv::errx</a>
+<a href="../api_cxx/env_open.html">DbEnv::open</a>,
+<a href="../api_cxx/env_remove.html">DbEnv::remove</a>,
+<a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a>,
+<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>,
+<a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a>,
+<a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>,
+<a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a>,
+<a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a>,
+<a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>,
+<a href="../api_cxx/env_set_feedback.html">DbEnv::set_feedback</a>,
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a>,
+<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
+<a href="../api_cxx/env_set_pageyield.html">DbEnv::set_pageyield</a>,
+<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
+<a href="../api_cxx/env_set_panicstate.html">DbEnv::set_panicstate</a>,
+<a href="../api_cxx/env_set_rec_init.html">DbEnv::set_recovery_init</a>,
+<a href="../api_cxx/env_set_rpc_server.html">DbEnv::set_rpc_server</a>,
+<a href="../api_cxx/env_set_region_init.html">DbEnv::set_region_init</a>,
+<a href="../api_cxx/env_set_shm_key.html">DbEnv::set_shm_key</a>,
+<a href="../api_cxx/env_set_tas_spins.html">DbEnv::set_tas_spins</a>,
+<a href="../api_cxx/env_set_tmp_dir.html">DbEnv::set_tmp_dir</a>,
+<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>,
+<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>
+and
+<a href="../api_cxx/env_version.html">DbEnv::version</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/env_set_lg_regionmax.html b/db/docs/api_cxx/env_set_lg_regionmax.html
new file mode 100644
index 000000000..a3fef85cc
--- /dev/null
+++ b/db/docs/api_cxx/env_set_lg_regionmax.html
@@ -0,0 +1,77 @@
+<!--Id: env_set_lg_regionmax.so,v 10.3 2001/05/01 14:23:08 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::set_lg_regionmax</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv::set_lg_regionmax</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbEnv::set_lg_regionmax(u_int32_t lg_regionmax);
+</pre></h3>
+<h1>Description</h1>
+<p>Set the size of the underlying logging subsystem region, in bytes. By
+default, or if the value is set to 0, the base region size is 60KB.
+The log region is used to store filenames, and so may need to be
+increased in size if a large number of files will be opened and
+registered with the specified Berkeley DB environment's log manager.
+<p>The DbEnv::set_lg_regionmax interface may be used only to configure Berkeley DB before
+the <a href="../api_cxx/env_open.html">DbEnv::open</a> interface is called.
+<p>The DbEnv::set_lg_regionmax method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<p>The database environment's log region size may also be set using the environment's
+<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
+single line with the string "set_lg_regionmax", one or more whitespace characters,
+and the size in bytes. Because the <b>DB_CONFIG</b> file is read when the database
+environment is opened, it will silently overrule configuration done
+before that time.
+<h1>Errors</h1>
+<p>The DbEnv::set_lg_regionmax method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>Called after <a href="../api_cxx/env_open.html">DbEnv::open</a> was called.
+</dl>
+<p>The DbEnv::set_lg_regionmax method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv::set_lg_regionmax method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/dbenv_class.html">DbEnv</a>
+<h1>See Also</h1>
+<a href="../api_cxx/env_set_lg_bsize.html">DbEnv::set_lg_bsize</a>,
+<a href="../api_cxx/env_set_lg_dir.html">DbEnv::set_lg_dir</a>,
+<a href="../api_cxx/env_set_lg_max.html">DbEnv::set_lg_max</a>,
+<a href="../api_cxx/env_set_lg_regionmax.html">DbEnv::set_lg_regionmax</a>,
+<a href="../api_cxx/log_archive.html">DbEnv::log_archive</a>,
+<a href="../api_cxx/log_compare.html">DbEnv::log_compare</a>,
+<a href="../api_cxx/log_file.html">DbEnv::log_file</a>,
+<a href="../api_cxx/log_flush.html">DbEnv::log_flush</a>,
+<a href="../api_cxx/log_get.html">DbEnv::log_get</a>,
+<a href="../api_cxx/log_put.html">DbEnv::log_put</a>,
+<a href="../api_cxx/log_register.html">DbEnv::log_register</a>,
+<a href="../api_cxx/log_stat.html">DbEnv::log_stat</a>,
+and
+<a href="../api_cxx/log_unregister.html">DbEnv::log_unregister</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/env_set_rpc_server.html b/db/docs/api_cxx/env_set_rpc_server.html
new file mode 100644
index 000000000..90f7e9221
--- /dev/null
+++ b/db/docs/api_cxx/env_set_rpc_server.html
@@ -0,0 +1,101 @@
+<!--"@(#)env_set_rpc_server.so 10.1 (Sleepycat) 8/25/99"-->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::set_rpc_server</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv::set_rpc_server</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbEnv::set_rpc_server(CLIENT *client, char *host,
+ long cl_timeout, long sv_timeout, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>Establishes a connection for this <b>dbenv</b> to a RPC server. If
+the <b>client</b> argument is NULL, this call creates a connection to
+the Berkeley DB server on the indicated hostname and sets up a channel for
+communication.
+If the <b>client</b> channel has been provided by the
+application then Berkeley DB will use it as its connection and the <b>host</b> and
+<b>cl_timeout</b> fields are ignored.
+<p>The <b>cl_timeout</b> argument specifies the number of seconds the client
+should wait for results to come back from the server. Once the timeout
+has expired on any communication with the server, DB_NOSERVER will
+be returned. If this value is zero, a default timeout is used.
+<p>The <b>sv_timeout</b> argument specifies the number of seconds the server
+should allow a client connection to remain idle before assuming that the
+client is gone. Once that timeout has been reached, the server releases
+all resources associated with that client connection. Subsequent attempts
+by that client to communicate with the server result in
+DB_NOSERVER_ID, indicating that an invalid identifier has been
+given to the server. This value can be considered a hint to the server.
+The server may alter this value based on its own policies or allowed
+values. If this value is zero, a default timeout is used.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>When the DbEnv::set_rpc_server method has been called, any subsequent calls
+to Berkeley DB library interfaces may return either <a name="DB_NOSERVER">DB_NOSERVER</a> or
+<a name="DB_NOSERVER_ID">DB_NOSERVER_ID</a>.
+<p>The DbEnv::set_rpc_server method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<h1>Errors</h1>
+<p>The DbEnv::set_rpc_server method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The DbEnv::set_rpc_server method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv::set_rpc_server method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/dbenv_class.html">DbEnv</a>
+<h1>See Also</h1>
+<a href="../api_cxx/env_close.html">DbEnv::close</a>,
+<a href="../api_cxx/env_err.html">DbEnv::err</a>, <a href="../api_cxx/env_err.html">DbEnv::errx</a>
+<a href="../api_cxx/env_open.html">DbEnv::open</a>,
+<a href="../api_cxx/env_remove.html">DbEnv::remove</a>,
+<a href="../api_cxx/env_set_alloc.html">DbEnv::set_alloc</a>,
+<a href="../api_cxx/env_set_cachesize.html">DbEnv::set_cachesize</a>,
+<a href="../api_cxx/env_set_data_dir.html">DbEnv::set_data_dir</a>,
+<a href="../api_cxx/env_set_errcall.html">DbEnv::set_errcall</a>,
+<a href="../api_cxx/env_set_errfile.html">DbEnv::set_errfile</a>,
+<a href="../api_cxx/env_set_error_stream.html">DbEnv::set_error_stream</a>,
+<a href="../api_cxx/env_set_errpfx.html">DbEnv::set_errpfx</a>,
+<a href="../api_cxx/env_set_feedback.html">DbEnv::set_feedback</a>,
+<a href="../api_cxx/env_set_flags.html">DbEnv::set_flags</a>,
+<a href="../api_cxx/env_set_mutexlocks.html">DbEnv::set_mutexlocks</a>,
+<a href="../api_cxx/env_set_pageyield.html">DbEnv::set_pageyield</a>,
+<a href="../api_cxx/env_set_paniccall.html">DbEnv::set_paniccall</a>,
+<a href="../api_cxx/env_set_panicstate.html">DbEnv::set_panicstate</a>,
+<a href="../api_cxx/env_set_rec_init.html">DbEnv::set_recovery_init</a>,
+<a href="../api_cxx/env_set_rpc_server.html">DbEnv::set_rpc_server</a>,
+<a href="../api_cxx/env_set_region_init.html">DbEnv::set_region_init</a>,
+<a href="../api_cxx/env_set_shm_key.html">DbEnv::set_shm_key</a>,
+<a href="../api_cxx/env_set_tas_spins.html">DbEnv::set_tas_spins</a>,
+<a href="../api_cxx/env_set_tmp_dir.html">DbEnv::set_tmp_dir</a>,
+<a href="../api_cxx/env_set_verbose.html">DbEnv::set_verbose</a>,
+<a href="../api_cxx/env_strerror.html">DbEnv::strerror</a>
+and
+<a href="../api_cxx/env_version.html">DbEnv::version</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/get_dbt.html b/db/docs/api_cxx/get_dbt.html
new file mode 100644
index 000000000..29e2567f9
--- /dev/null
+++ b/db/docs/api_cxx/get_dbt.html
@@ -0,0 +1,43 @@
+<!--Id: get_dbt.so,v 1.1 2001/04/06 13:24:51 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbMemoryException::get_dbt</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbMemoryException::get_dbt</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+Dbt *
+DbMemoryException::get_dbt() const;
+</pre></h3>
+<h1>Description</h1>
+<p>Return the <a href="../api_cxx/dbt_class.html">Dbt</a> that has insufficient memory to complete the
+operation, causing the <a href="../api_cxx/mem_class.html">DbMemoryException</a> to be thrown.
+<h1>Class</h1>
+<a href="../api_cxx/except_class.html">DbException</a>
+<h1>See Also</h1>
+<a href="../api_cxx/get_errno.html">DbException::get_errno</a>,
+<a href="../api_cxx/what.html">DbException::what</a>,
+and
+<a href="../api_cxx/mem_class.html">DbMemoryException</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/mem_class.html b/db/docs/api_cxx/mem_class.html
new file mode 100644
index 000000000..dbdbfccb4
--- /dev/null
+++ b/db/docs/api_cxx/mem_class.html
@@ -0,0 +1,54 @@
+<!--Id: mem_class.so,v 10.6 2001/04/26 13:31:24 dda Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbMemoryException</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbMemoryException</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+class DbMemoryException : public DbException {
+ DbMemoryException(Dbt *dbt);
+ DbMemoryException(const char *description);
+ DbMemoryException(const char *prefix, Dbt *dbt);
+ DbMemoryException(const char *prefix1, const char *prefix2, Dbt *dbt);
+ Dbt *get_dbt() const;
+};
+</pre></h3>
+<h1>Description</h1>
+<p>This manual page describes the DbMemoryException class and how
+it is used by the various Db* classes.
+<p>A DbMemoryException is thrown when there is insufficient memory
+to complete an operation, and there is the possibility of recovering.
+An example is during a <a href="../api_cxx/db_get.html">Db::get</a> or <a href="../api_cxx/dbc_get.html">Dbc::get</a> operation with
+the <a href="../api_cxx/dbt_class.html">Dbt</a> flags set to <a href="../api_cxx/dbt_class.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a>. In this case, the
+<a href="../api_cxx/get_dbt.html">DbMemoryException::get_dbt</a> method returns the problematic <a href="../api_cxx/dbt_class.html">Dbt</a>, and the
+operation can be retried with a larger buffer.
+<h1>Class</h1>
+<a href="../api_cxx/except_class.html">DbException</a>
+<h1>See Also</h1>
+<a href="../api_cxx/get_errno.html">DbException::get_errno</a>,
+<a href="../api_cxx/what.html">DbException::what</a>,
+and
+<a href="../api_cxx/mem_class.html">DbMemoryException</a>
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/txn_discard.html b/db/docs/api_cxx/txn_discard.html
new file mode 100644
index 000000000..ac0d45ec8
--- /dev/null
+++ b/db/docs/api_cxx/txn_discard.html
@@ -0,0 +1,76 @@
+<!--Id: txn_discard.so,v 10.2 2001/05/05 01:49:17 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbTxn::discard</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbTxn::discard</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbTxn::discard(u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The DbTxn::discard method frees up all the per-process resources
+associated with the specified <a href="../api_cxx/txn_class.html">DbTxn</a> handle, neither committing
+nor aborting the transaction. This call may be used only after calls
+to <a href="../api_cxx/txn_recover.html">DbEnv::txn_recover</a> when there are multiple global transaction
+managers recovering transactions in a single Berkeley DB environment. Any
+transactions returned by <a href="../api_cxx/txn_recover.html">DbEnv::txn_recover</a> that are not handled by
+the current global transaction manager should be discarded using
+DbTxn::discard.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>The DbTxn::discard method returns EINVAL if the transaction handle does
+not refer to a transaction that was recovered into a prepared but not
+yet completed state.
+<p>Otherwise, the DbTxn::discard method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<h1>Errors</h1>
+<p>The DbTxn::discard method may fail and throw an exception or return a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>The transaction handle does not refer to a transaction that was
+recovered into a prepared but not yet completed state.
+</dl>
+<p>The DbTxn::discard method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbTxn::discard method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/txn_class.html">DbTxn</a>
+<h1>See Also</h1>
+<a href="../api_cxx/env_set_tx_max.html">DbEnv::set_tx_max</a>,
+<a href="../api_cxx/env_set_tx_recover.html">DbEnv::set_tx_recover</a>,
+<a href="../api_cxx/env_set_tx_timestamp.html">DbEnv::set_tx_timestamp</a>,
+<a href="../api_cxx/txn_abort.html">DbTxn::abort</a>,
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>,
+<a href="../api_cxx/txn_checkpoint.html">DbEnv::txn_checkpoint</a>,
+<a href="../api_cxx/txn_commit.html">DbTxn::commit</a>,
+<a href="../api_cxx/txn_discard.html">DbTxn::discard</a>,
+<a href="../api_cxx/txn_id.html">DbTxn::id</a>,
+<a href="../api_cxx/txn_prepare.html">DbTxn::prepare</a>,
+<a href="../api_cxx/txn_recover.html">DbEnv::txn_recover</a>,
+and
+<a href="../api_cxx/txn_stat.html">DbEnv::txn_stat</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_cxx/txn_recover.html b/db/docs/api_cxx/txn_recover.html
new file mode 100644
index 000000000..97c20aa09
--- /dev/null
+++ b/db/docs/api_cxx/txn_recover.html
@@ -0,0 +1,87 @@
+<!--Id: txn_recover.so,v 10.6 2001/05/04 14:31:05 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv::txn_recover</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv::txn_recover</h1>
+</td>
+<td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+#include &lt;db_cxx.h&gt;
+<p>
+int
+DbEnv::txn_recover(DB_PREPLIST preplist[],
+ long count, long *retp, u_int32_t flags);
+</pre></h3>
+<h1>Description</h1>
+<p>The DbEnv::txn_recover interface returns a list of prepared but not
+yet resolved transactions. The DbEnv::txn_recover method should only be
+called after the environment has been recovered.
+<p>On return from DbEnv::txn_recover, the <b>preplist</b> argument will
+be filled in with a list of transactions that must be resolved by the
+application (committed, aborted or discarded). The <b>preplist</b>
+argument is a structure of type DB_PREPLIST; the following DB_PREPLIST
+fields will be filled in:
+<p><dl compact>
+<p><dt>DB_TXN *txn;<dd>The transaction handle for the transaction.
+<p><dt>u_int8_t gid[<a href="../api_cxx/txn_prepare.html#DB_XIDDATASIZE">DB_XIDDATASIZE</a>];<dd>The global transaction ID for the transaction. The global transaction
+ID is the one specified when the transaction was prepared. The
+application is responsible for ensuring uniqueness among global
+transaction IDs.
+</dl>
+<p>The application must call <a href="../api_cxx/txn_abort.html">DbTxn::abort</a>, <a href="../api_cxx/txn_commit.html">DbTxn::commit</a> or
+<a href="../api_cxx/txn_discard.html">DbTxn::discard</a> on each returned <a href="../api_cxx/txn_class.html">DbTxn</a> handle before
+starting any new operations.
+<p>The <b>count</b> parameter specifies the number of available entries
+in the passed-in <b>preplist</b> array. The <b>retp</b> parameter
+returns the number of entries DbEnv::txn_recover has filled in, in the
+array.
+<p>The <b>flags</b> value must be set to one of the following values:
+<p><dl compact>
+<p><dt><a name="DB_FIRST">DB_FIRST</a><dd>Begin returning a list of prepared, but not yet resolved transactions.
+<p><dt><a name="DB_NEXT">DB_NEXT</a><dd>Continue returning a list of prepared, but not yet resolved transactions,
+starting where the last call to DbEnv::txn_recover left off.
+</dl>
+<p>The DbEnv::txn_recover method either returns a non-zero error value or throws an exception that
+encapsulates a non-zero error value on failure, and returns 0 on success.
+<h1>Errors</h1>
+<p>The DbEnv::txn_recover method may fail and throw an exception or return a non-zero error for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv::txn_recover method may fail and either
+return <a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a> or throw an exception encapsulating
+<a href="../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>, in which case all subsequent Berkeley DB calls will fail
+in the same way.
+<h1>Class</h1>
+<a href="../api_cxx/dbenv_class.html">DbEnv</a>, <a href="../api_cxx/txn_class.html">DbTxn</a>
+<h1>See Also</h1>
+<a href="../api_cxx/env_set_tx_max.html">DbEnv::set_tx_max</a>,
+<a href="../api_cxx/env_set_tx_recover.html">DbEnv::set_tx_recover</a>,
+<a href="../api_cxx/env_set_tx_timestamp.html">DbEnv::set_tx_timestamp</a>,
+<a href="../api_cxx/txn_abort.html">DbTxn::abort</a>,
+<a href="../api_cxx/txn_begin.html">DbEnv::txn_begin</a>,
+<a href="../api_cxx/txn_checkpoint.html">DbEnv::txn_checkpoint</a>,
+<a href="../api_cxx/txn_commit.html">DbTxn::commit</a>,
+<a href="../api_cxx/txn_discard.html">DbTxn::discard</a>,
+<a href="../api_cxx/txn_id.html">DbTxn::id</a>,
+<a href="../api_cxx/txn_prepare.html">DbTxn::prepare</a>,
+<a href="../api_cxx/txn_recover.html">DbEnv::txn_recover</a>,
+and
+<a href="../api_cxx/txn_stat.html">DbEnv::txn_stat</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_cxx/cxx_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/db_associate.html b/db/docs/api_java/db_associate.html
new file mode 100644
index 000000000..9d0301d06
--- /dev/null
+++ b/db/docs/api_java/db_associate.html
@@ -0,0 +1,154 @@
+<!--Id: db_associate.so,v 10.9 2001/05/05 01:49:09 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: Db.associate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>Db.associate</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+<p>
+public interface DbSecondaryKeyCreate
+{
+ public abstract Dbt secondary_key_create(Db secondary, Dbt key, Dbt data)
+ throws DbException;
+}
+public class Db
+{
+ ...
+ public int associate(Db secondary,
+ DbSecondaryKeyCreate secondary_key_create, int flags)
+ throws DbException;
+ ...
+}
+</pre></h3>
+<h1>Description</h1>
+<p>The Db.associate function is used to declare one database a
+secondary index for a primary database. After a secondary database has
+been "associated" with a primary database, all updates to the primary
+will be automatically reflected in the secondary and all reads from the
+secondary will return corresponding data from the primary. Note that
+as primary keys must be unique for secondary indices to work, the
+primary database must be configured without support for duplicate data
+items. See <a href="../ref/am/second.html">Secondary indices</a> for
+more information.
+<p>The associate method called should be a method off a database handle for
+the primary database that is to be indexed.
+The <b>secondary</b> argument should be an open database handle of
+either a newly created and empty database that is to be used to store
+a secondary index, or of a database that was previously associated with
+the same primary and contains a secondary index. Note that it is not
+safe to associate as a secondary database a handle that is in use by
+another thread of control or has open cursors. If the handle was opened
+with the <a href="../api_java/env_open.html#DB_THREAD">Db.DB_THREAD</a> flag it is safe to use it in multiple threads
+of control after the Db.associate method has returned. Note also
+that either secondary keys must be unique or the secondary database must
+be configured with support for duplicate data items.
+<p>The <b>callback</b> argument should refer to a callback function that
+creates a secondary key from a given primary key and data pair. When
+called, the first argument will be the secondary <a href="../api_java/db_class.html">Db</a> handle; the
+second and third arguments will be <a href="../api_java/dbt_class.html">Dbt</a>s containing a primary
+key and datum respectively; and the fourth argument will be a zeroed
+DBT in which the callback function should fill in <b>data</b> and
+<b>size</b> fields that describe the secondary key.
+<p>If any key/data pair in the primary yields a null secondary key and
+should be left out of the secondary index, the callback function may
+optionally return Db.DB_DONOTINDEX. Otherwise, the callback
+function should return 0 in case of success or any other integer error
+code in case of failure; the error code will be returned from the Berkeley DB
+interface call that initiated the callback. Note that if the callback
+function returns Db.DB_DONOTINDEX for any key/data pairs in the
+primary database, the secondary index will not contain any reference to
+those key/data pairs, and such operations as cursor iterations and range
+queries will reflect only the corresponding subset of the database. If
+this is not desirable, the application should ensure that the callback
+function is well-defined for all possible values and never returns
+Db.DB_DONOTINDEX.
+<p>The callback argument may be NULL if and only if both the primary and
+secondary database handles were opened with the <a href="../api_java/db_open.html#DB_RDONLY">Db.DB_RDONLY</a> flag.
+<p>The <b>flags</b> value must be set to 0 or
+the following value:
+<p><dl compact>
+<p><dt><a name="Db.DB_CREATE">Db.DB_CREATE</a><dd>If the secondary database is empty, walk through the primary and create
+an index to it in the empty secondary. Note that this operation is
+potentially very expensive.
+<p>If the secondary database has been opened in an environment configured
+with transactions, each put necessary for its creation will be done in
+the context of a transaction created for the purpose.
+<p>Note that care should be taken not to use a newly-created secondary
+database in another thread of control until the Db.associate
+call has returned successfully in the first thread.
+</dl>
+<h1>Errors</h1>
+<p>The Db.associate method may fail and throw an exception encapsulating a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>The secondary database handle has already been associated with this or
+another database handle.
+<p>The secondary database handle is not open.
+<p>The primary database has been configured to allow duplicates.
+</dl>
+<p>The Db.associate method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the Db.associate method may fail and throw
+a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls
+will fail in the same way.
+<h1>Class</h1>
+<a href="../api_java/db_class.html">Db</a>
+<h1>See Also</h1>
+<a href="../api_java/db_associate.html">Db.associate</a>,
+<a href="../api_java/db_close.html">Db.close</a>,
+<a href="../api_java/db_cursor.html">Db.cursor</a>,
+<a href="../api_java/db_del.html">Db.del</a>,
+<a href="../api_java/db_fd.html">Db.fd</a>,
+<a href="../api_java/db_get.html">Db.get</a>,
+<a href="../api_java/db_get.html">Db.pget</a>,
+<a href="../api_java/db_get_byteswapped.html">Db.get_byteswapped</a>,
+<a href="../api_java/db_get_type.html">Db.get_type</a>,
+<a href="../api_java/db_join.html">Db.join</a>,
+<a href="../api_java/db_key_range.html">Db.key_range</a>,
+<a href="../api_java/db_open.html">Db.open</a>,
+<a href="../api_java/db_put.html">Db.put</a>,
+<a href="../api_java/db_remove.html">Db.remove</a>,
+<a href="../api_java/db_rename.html">Db.rename</a>,
+<a href="../api_java/db_set_append_recno.html">Db.set_append_recno</a>,
+<a href="../api_java/db_set_bt_minkey.html">Db.set_bt_minkey</a>,
+<a href="../api_java/db_set_cachesize.html">Db.set_cachesize</a>,
+<a href="../api_java/db_set_errcall.html">Db.set_errcall</a>,
+<a href="../api_java/db_set_errpfx.html">Db.set_errpfx</a>,
+<a href="../api_java/db_set_feedback.html">Db.set_feedback</a>,
+<a href="../api_java/db_set_flags.html">Db.set_flags</a>,
+<a href="../api_java/db_set_h_ffactor.html">Db.set_h_ffactor</a>,
+<a href="../api_java/db_set_h_nelem.html">Db.set_h_nelem</a>,
+<a href="../api_java/db_set_lorder.html">Db.set_lorder</a>,
+<a href="../api_java/db_set_pagesize.html">Db.set_pagesize</a>,
+<a href="../api_java/db_set_q_extentsize.html">Db.set_q_extentsize</a>,
+<a href="../api_java/db_set_re_delim.html">Db.set_re_delim</a>,
+<a href="../api_java/db_set_re_len.html">Db.set_re_len</a>,
+<a href="../api_java/db_set_re_pad.html">Db.set_re_pad</a>,
+<a href="../api_java/db_set_re_source.html">Db.set_re_source</a>,
+<a href="../api_java/db_stat.html">Db.stat</a>,
+<a href="../api_java/db_sync.html">Db.sync</a>,
+<a href="../api_java/db_truncate.html">Db.truncate</a>,
+<a href="../api_java/db_upgrade.html">Db.upgrade</a>,
+and
+<a href="../api_java/db_verify.html">Db.verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/db_truncate.html b/db/docs/api_java/db_truncate.html
new file mode 100644
index 000000000..c1ce182e0
--- /dev/null
+++ b/db/docs/api_java/db_truncate.html
@@ -0,0 +1,107 @@
+<!--Id: db_truncate.so,v 1.6 2001/04/18 13:44:46 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: Db.truncate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>Db.truncate</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+import java.io.FileNotFoundException;
+<p>
+public int truncate(String file, String database, int flags)
+ throws DbException, FileNotFoundException;
+</pre></h3>
+<h1>Description</h1>
+<p>The Db.truncate interface empties the database specified by
+the <b>file</b> and <b>database</b> arguments, discarding all records
+it contains. If no <b>database</b> is specified, the underlying file
+represented by <b>file</b> is emptied.
+The number of records discarded from the database is returned.
+<p>Truncate must have exclusive use of the database. While truncate is
+transaction-protected, it cannot be part of a application-created
+transaction.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>After Db.truncate has been called, regardless of its return,
+the <a href="../api_java/db_class.html">Db</a> handle may not be accessed again.
+<p>The Db.truncate method throws an exception that encapsulates a non-zero error value on
+failure.
+<h1>Environment Variables</h1>
+<p><dl compact>
+<p><dt>DB_HOME<dd>If the <b>dbenv</b> argument to <a href="../api_c/db_create.html">db_create</a> was initialized using
+<a href="../api_java/env_open.html">DbEnv.open</a>, the environment variable <b>DB_HOME</b> may be used
+as the path of the database environment home. Specifically, Db.truncate
+is affected by the configuration value DB_DATA_DIR.
+</dl>
+<h1>Errors</h1>
+<p>The Db.truncate method may fail and throw an exception encapsulating a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>A database in the file is currently open.
+</dl>
+<p>If the file or directory does not exist, the Db.truncate method will
+fail and
+throw a FileNotFoundException exception.
+<p>The Db.truncate method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the Db.truncate method may fail and throw
+a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls
+will fail in the same way.
+<h1>Class</h1>
+<a href="../api_java/db_class.html">Db</a>
+<h1>See Also</h1>
+<a href="../api_java/db_associate.html">Db.associate</a>,
+<a href="../api_java/db_close.html">Db.close</a>,
+<a href="../api_java/db_cursor.html">Db.cursor</a>,
+<a href="../api_java/db_del.html">Db.del</a>,
+<a href="../api_java/db_fd.html">Db.fd</a>,
+<a href="../api_java/db_get.html">Db.get</a>,
+<a href="../api_java/db_get.html">Db.pget</a>,
+<a href="../api_java/db_get_byteswapped.html">Db.get_byteswapped</a>,
+<a href="../api_java/db_get_type.html">Db.get_type</a>,
+<a href="../api_java/db_join.html">Db.join</a>,
+<a href="../api_java/db_key_range.html">Db.key_range</a>,
+<a href="../api_java/db_open.html">Db.open</a>,
+<a href="../api_java/db_put.html">Db.put</a>,
+<a href="../api_java/db_remove.html">Db.remove</a>,
+<a href="../api_java/db_rename.html">Db.rename</a>,
+<a href="../api_java/db_set_append_recno.html">Db.set_append_recno</a>,
+<a href="../api_java/db_set_bt_minkey.html">Db.set_bt_minkey</a>,
+<a href="../api_java/db_set_cachesize.html">Db.set_cachesize</a>,
+<a href="../api_java/db_set_errcall.html">Db.set_errcall</a>,
+<a href="../api_java/db_set_errpfx.html">Db.set_errpfx</a>,
+<a href="../api_java/db_set_feedback.html">Db.set_feedback</a>,
+<a href="../api_java/db_set_flags.html">Db.set_flags</a>,
+<a href="../api_java/db_set_h_ffactor.html">Db.set_h_ffactor</a>,
+<a href="../api_java/db_set_h_nelem.html">Db.set_h_nelem</a>,
+<a href="../api_java/db_set_lorder.html">Db.set_lorder</a>,
+<a href="../api_java/db_set_pagesize.html">Db.set_pagesize</a>,
+<a href="../api_java/db_set_q_extentsize.html">Db.set_q_extentsize</a>,
+<a href="../api_java/db_set_re_delim.html">Db.set_re_delim</a>,
+<a href="../api_java/db_set_re_len.html">Db.set_re_len</a>,
+<a href="../api_java/db_set_re_pad.html">Db.set_re_pad</a>,
+<a href="../api_java/db_set_re_source.html">Db.set_re_source</a>,
+<a href="../api_java/db_stat.html">Db.stat</a>,
+<a href="../api_java/db_sync.html">Db.sync</a>,
+<a href="../api_java/db_truncate.html">Db.truncate</a>,
+<a href="../api_java/db_upgrade.html">Db.upgrade</a>,
+and
+<a href="../api_java/db_verify.html">Db.verify</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/env_set_lg_regionmax.html b/db/docs/api_java/env_set_lg_regionmax.html
new file mode 100644
index 000000000..64995a7e7
--- /dev/null
+++ b/db/docs/api_java/env_set_lg_regionmax.html
@@ -0,0 +1,76 @@
+<!--Id: env_set_lg_regionmax.so,v 10.3 2001/05/01 14:23:08 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv.set_lg_regionmax</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv.set_lg_regionmax</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+<p>
+public void set_lg_regionmax(int lg_regionmax)
+ throws DbException;
+</pre></h3>
+<h1>Description</h1>
+<p>Set the size of the underlying logging subsystem region, in bytes. By
+default, or if the value is set to 0, the base region size is 60KB.
+The log region is used to store filenames, and so may need to be
+increased in size if a large number of files will be opened and
+registered with the specified Berkeley DB environment's log manager.
+<p>The DbEnv.set_lg_regionmax interface may be used only to configure Berkeley DB before
+the <a href="../api_java/env_open.html">DbEnv.open</a> interface is called.
+<p>The DbEnv.set_lg_regionmax method throws an exception that encapsulates a non-zero error value on
+failure.
+<p>The database environment's log region size may also be set using the environment's
+<b>DB_CONFIG</b> file. The syntax of the entry in that file is a
+single line with the string "set_lg_regionmax", one or more whitespace characters,
+and the size in bytes. Because the <b>DB_CONFIG</b> file is read when the database
+environment is opened, it will silently overrule configuration done
+before that time.
+<h1>Errors</h1>
+<p>The DbEnv.set_lg_regionmax method may fail and throw an exception encapsulating a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>Called after <a href="../api_java/env_open.html">DbEnv.open</a> was called.
+</dl>
+<p>The DbEnv.set_lg_regionmax method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv.set_lg_regionmax method may fail and throw
+a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls
+will fail in the same way.
+<h1>Class</h1>
+<a href="../api_java/dbenv_class.html">DbEnv</a>
+<h1>See Also</h1>
+<a href="../api_java/env_set_lg_bsize.html">DbEnv.set_lg_bsize</a>,
+<a href="../api_java/env_set_lg_dir.html">DbEnv.set_lg_dir</a>,
+<a href="../api_java/env_set_lg_max.html">DbEnv.set_lg_max</a>,
+<a href="../api_java/env_set_lg_regionmax.html">DbEnv.set_lg_regionmax</a>,
+<a href="../api_java/log_archive.html">DbEnv.log_archive</a>,
+<a href="../api_java/log_compare.html">DbEnv.log_compare</a>,
+<a href="../api_java/log_file.html">DbEnv.log_file</a>,
+<a href="../api_java/log_flush.html">DbEnv.log_flush</a>,
+<a href="../api_java/log_get.html">DbEnv.log_get</a>,
+<a href="../api_java/log_put.html">DbEnv.log_put</a>,
+<a href="../api_java/log_register.html">DbEnv.log_register</a>,
+<a href="../api_java/log_stat.html">DbEnv.log_stat</a>,
+and
+<a href="../api_java/log_unregister.html">DbEnv.log_unregister</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/env_set_rpc_server.html b/db/docs/api_java/env_set_rpc_server.html
new file mode 100644
index 000000000..b379bc643
--- /dev/null
+++ b/db/docs/api_java/env_set_rpc_server.html
@@ -0,0 +1,94 @@
+<!--"@(#)env_set_rpc_server.so 10.1 (Sleepycat) 8/25/99"-->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv.set_rpc_server</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv.set_rpc_server</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+<p>
+public void set_rpc_server(DbClient client, String host,
+ long cl_timeout, long sv_timeout, int flags)
+ throws DbException;
+</pre></h3>
+<h1>Description</h1>
+<p>Establishes a connection for this <b>dbenv</b> to a RPC server. If
+the <b>client</b> argument is NULL, this call creates a connection to
+the Berkeley DB server on the indicated hostname and sets up a channel for
+communication.
+The <b>client</b> argument is reserved for future use.
+If it is not NULL, an exception is thrown.
+<p>The <b>cl_timeout</b> argument specifies the number of seconds the client
+should wait for results to come back from the server. Once the timeout
+has expired on any communication with the server, Db.DB_NOSERVER will
+be returned. If this value is zero, a default timeout is used.
+<p>The <b>sv_timeout</b> argument specifies the number of seconds the server
+should allow a client connection to remain idle before assuming that the
+client is gone. Once that timeout has been reached, the server releases
+all resources associated with that client connection. Subsequent attempts
+by that client to communicate with the server result in
+Db.DB_NOSERVER_ID, indicating that an invalid identifier has been
+given to the server. This value can be considered a hint to the server.
+The server may alter this value based on its own policies or allowed
+values. If this value is zero, a default timeout is used.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>When the DbEnv.set_rpc_server method has been called, any subsequent calls
+to Berkeley DB library interfaces may return either <a name="DB_NOSERVER">DB_NOSERVER</a> or
+<a name="DB_NOSERVER_ID">DB_NOSERVER_ID</a>.
+<p>The DbEnv.set_rpc_server method throws an exception that encapsulates a non-zero error value on
+failure.
+<h1>Errors</h1>
+<p>The DbEnv.set_rpc_server method may fail and throw an exception encapsulating a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+</dl>
+<p>The DbEnv.set_rpc_server method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv.set_rpc_server method may fail and throw
+a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls
+will fail in the same way.
+<h1>Class</h1>
+<a href="../api_java/dbenv_class.html">DbEnv</a>
+<h1>See Also</h1>
+<a href="../api_java/env_close.html">DbEnv.close</a>,
+<a href="../api_java/env_version.html">DbEnv.get_version_string</a>,
+<a href="../api_java/env_open.html">DbEnv.open</a>,
+<a href="../api_java/env_remove.html">DbEnv.remove</a>,
+<a href="../api_java/env_set_cachesize.html">DbEnv.set_cachesize</a>,
+<a href="../api_java/env_set_data_dir.html">DbEnv.set_data_dir</a>,
+<a href="../api_java/env_set_errcall.html">DbEnv.set_errcall</a>,
+<a href="../api_java/env_set_error_stream.html">DbEnv.set_error_stream</a>,
+<a href="../api_java/env_set_errpfx.html">DbEnv.set_errpfx</a>,
+<a href="../api_java/env_set_feedback.html">DbEnv.set_feedback</a>,
+<a href="../api_java/env_set_flags.html">DbEnv.set_flags</a>,
+<a href="../api_java/env_set_mutexlocks.html">DbEnv.set_mutexlocks</a>,
+<a href="../api_java/env_set_pageyield.html">DbEnv.set_pageyield</a>,
+<a href="../api_java/env_set_panicstate.html">DbEnv.set_panicstate</a>,
+<a href="../api_java/env_set_rec_init.html">DbEnv.set_recovery_init</a>,
+<a href="../api_java/env_set_rpc_server.html">DbEnv.set_rpc_server</a>,
+<a href="../api_java/env_set_region_init.html">DbEnv.set_region_init</a>,
+<a href="../api_java/env_set_shm_key.html">DbEnv.set_shm_key</a>,
+<a href="../api_java/env_set_tas_spins.html">DbEnv.set_tas_spins</a>,
+<a href="../api_java/env_set_tmp_dir.html">DbEnv.set_tmp_dir</a>,
+<a href="../api_java/env_set_verbose.html">DbEnv.set_verbose</a>,
+and <a href="../api_java/env_strerror.html">DbEnv.strerror</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/get_dbt.html b/db/docs/api_java/get_dbt.html
new file mode 100644
index 000000000..cb1ea69f3
--- /dev/null
+++ b/db/docs/api_java/get_dbt.html
@@ -0,0 +1,43 @@
+<!--Id: get_dbt.so,v 1.1 2001/04/06 13:24:51 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbMemoryException.get_dbt</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbMemoryException.get_dbt</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+<p>
+public Dbt get_dbt();
+</pre></h3>
+<h1>Description</h1>
+<p>Return the <a href="../api_java/dbt_class.html">Dbt</a> that has insufficient memory to complete the
+operation, causing the <a href="../api_java/mem_class.html">DbMemoryException</a> to be thrown.
+<h1>Class</h1>
+<a href="../api_java/except_class.html">DbException</a>
+<h1>See Also</h1>
+<a href="../api_java/get_errno.html">DbException.get_errno</a>,
+<a href="../api_java/deadlock_class.html">DbDeadlockException</a>,
+<a href="../api_java/mem_class.html">DbMemoryException</a>,
+and
+<a href="../api_java/runrec_class.html">DbRunRecoveryException</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/txn_discard.html b/db/docs/api_java/txn_discard.html
new file mode 100644
index 000000000..85dc1e53b
--- /dev/null
+++ b/db/docs/api_java/txn_discard.html
@@ -0,0 +1,74 @@
+<!--Id: txn_discard.so,v 10.2 2001/05/05 01:49:17 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbTxn.discard</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbTxn.discard</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+<p>
+public void discard(u_int32_t flags)
+ throws DbException;
+</pre></h3>
+<h1>Description</h1>
+<p>The DbTxn.discard method frees up all the per-process resources
+associated with the specified <a href="../api_java/txn_class.html">DbTxn</a> handle, neither committing
+nor aborting the transaction. This call may be used only after calls
+to <a href="../api_java/txn_recover.html">DbEnv.txn_recover</a> when there are multiple global transaction
+managers recovering transactions in a single Berkeley DB environment. Any
+transactions returned by <a href="../api_java/txn_recover.html">DbEnv.txn_recover</a> that are not handled by
+the current global transaction manager should be discarded using
+DbTxn.discard.
+<p>The <b>flags</b> parameter is currently unused, and must be set to 0.
+<p>The DbTxn.discard method returns EINVAL if the transaction handle does
+not refer to a transaction that was recovered into a prepared but not
+yet completed state.
+<p>Otherwise, the DbTxn.discard method throws an exception that encapsulates a non-zero error value on
+failure.
+<h1>Errors</h1>
+<p>The DbTxn.discard method may fail and throw an exception encapsulating a non-zero error for the following conditions:
+<p><dl compact>
+<p><dt>EINVAL<dd>An invalid flag value or parameter was specified.
+<p>The transaction handle does not refer to a transaction that was
+recovered into a prepared but not yet completed state.
+</dl>
+<p>The DbTxn.discard method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbTxn.discard method may fail and throw
+a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls
+will fail in the same way.
+<h1>Class</h1>
+<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/txn_class.html">DbTxn</a>
+<h1>See Also</h1>
+<a href="../api_java/env_set_tx_max.html">DbEnv.set_tx_max</a>,
+<a href="../api_java/env_set_tx_timestamp.html">DbEnv.set_tx_timestamp</a>,
+<a href="../api_java/txn_abort.html">DbTxn.abort</a>,
+<a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>,
+<a href="../api_java/txn_checkpoint.html">DbEnv.txn_checkpoint</a>,
+<a href="../api_java/txn_commit.html">DbTxn.commit</a>,
+<a href="../api_java/txn_discard.html">DbTxn.discard</a>,
+<a href="../api_java/txn_id.html">DbTxn.id</a>,
+<a href="../api_java/txn_prepare.html">DbTxn.prepare</a>,
+<a href="../api_java/txn_recover.html">DbEnv.txn_recover</a>,
+and
+<a href="../api_java/txn_stat.html">DbEnv.txn_stat</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_java/txn_recover.html b/db/docs/api_java/txn_recover.html
new file mode 100644
index 000000000..402e3c379
--- /dev/null
+++ b/db/docs/api_java/txn_recover.html
@@ -0,0 +1,81 @@
+<!--Id: txn_recover.so,v 10.6 2001/05/04 14:31:05 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: DbEnv.txn_recover</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1>DbEnv.txn_recover</h1>
+</td>
+<td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>
+import com.sleepycat.db.*;
+<p>
+public DbPreplist[] txn_recover(int count, int flags)
+ throws DbException;
+</pre></h3>
+<h1>Description</h1>
+<p>The DbEnv.txn_recover interface returns a list of prepared but not
+yet resolved transactions. The DbEnv.txn_recover method should only be
+called after the environment has been recovered.
+<p>The DbEnv.txn_recover method returns a list of transactions that must be
+resolved by the application (committed, aborted or discarded). The
+return value is an array of objects of type DbPreplist; the following
+DbPreplist fields will be filled in:
+<p><dl compact>
+<p><dt>public DbTxn txn;<dd>The transaction handle for the transaction.
+<p><dt>public byte[] gid;<dd>The global transaction ID for the transaction. The global transaction
+ID is the one specified when the transaction was prepared. The
+application is responsible for ensuring uniqueness among global
+transaction IDs.
+</dl>
+<p>The application must call <a href="../api_java/txn_abort.html">DbTxn.abort</a>, <a href="../api_java/txn_commit.html">DbTxn.commit</a> or
+<a href="../api_java/txn_discard.html">DbTxn.discard</a> on each returned <a href="../api_java/txn_class.html">DbTxn</a> handle before
+starting any new operations.
+<p>The <b>count</b> parameter specifies the number of maximum size of the
+array that should be returned.
+<p>The <b>flags</b> value must be set to one of the following values:
+<p><dl compact>
+<p><dt><a name="Db.DB_FIRST">Db.DB_FIRST</a><dd>Begin returning a list of prepared, but not yet resolved transactions.
+<p><dt><a name="Db.DB_NEXT">Db.DB_NEXT</a><dd>Continue returning a list of prepared, but not yet resolved transactions,
+starting where the last call to DbEnv.txn_recover left off.
+</dl>
+<p>The DbEnv.txn_recover method throws an exception that encapsulates a non-zero error value on
+failure.
+<h1>Errors</h1>
+<p>The DbEnv.txn_recover method may fail and throw an exception for errors specified for other Berkeley DB and C library or system methods.
+If a catastrophic error has occurred, the DbEnv.txn_recover method may fail and throw
+a <a href="../api_java/runrec_class.html">DbRunRecoveryException</a>, in which case all subsequent Berkeley DB calls
+will fail in the same way.
+<h1>Class</h1>
+<a href="../api_java/dbenv_class.html">DbEnv</a>, <a href="../api_java/txn_class.html">DbTxn</a>
+<h1>See Also</h1>
+<a href="../api_java/env_set_tx_max.html">DbEnv.set_tx_max</a>,
+<a href="../api_java/env_set_tx_timestamp.html">DbEnv.set_tx_timestamp</a>,
+<a href="../api_java/txn_abort.html">DbTxn.abort</a>,
+<a href="../api_java/txn_begin.html">DbEnv.txn_begin</a>,
+<a href="../api_java/txn_checkpoint.html">DbEnv.txn_checkpoint</a>,
+<a href="../api_java/txn_commit.html">DbTxn.commit</a>,
+<a href="../api_java/txn_discard.html">DbTxn.discard</a>,
+<a href="../api_java/txn_id.html">DbTxn.id</a>,
+<a href="../api_java/txn_prepare.html">DbTxn.prepare</a>,
+<a href="../api_java/txn_recover.html">DbEnv.txn_recover</a>,
+and
+<a href="../api_java/txn_stat.html">DbEnv.txn_stat</a>.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_java/java_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/api_tcl/db_truncate.html b/db/docs/api_tcl/db_truncate.html
new file mode 100644
index 000000000..1ae13d1b4
--- /dev/null
+++ b/db/docs/api_tcl/db_truncate.html
@@ -0,0 +1,48 @@
+<!--Id: db_truncate.so,v 11.1 2001/02/27 19:00:44 sue Exp -->
+<!--Id: m4.tcl,v 11.22 2001/04/18 15:50:10 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: berkdb dbtruncate</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td>
+<h1><b>berkdb dbtruncate</b></h1>
+</td>
+<td align=right>
+<a href="../api_tcl/tcl_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<hr size=1 noshade>
+<tt>
+<h3><pre>berkdb dbtruncate
+ [-env env]
+ [--]
+ file
+ [database]
+</pre></h3>
+<h1>Description</h1>
+<p>Truncates the Berkeley DB database specified by the database name <b>file</b> and
+[database] name arguments. If no <b>database</b> is specified,
+the physical file represented by <b>file</b> is emptied, incidentally
+removing all databases that it contained.
+<p>The options are as follows:
+<p><dl compact>
+<p><dt>-env env<dd>If a <b>-env</b> argument is given, the database in the specified Berkeley DB
+environment is removed.
+<p><dt>--<dd>Mark the end of the command arguments.
+</dl>
+<p>The <b>berkdb dbtruncate</b> command returns the number of records discarded
+from the database on success. If an error occurs, a Berkeley DB error message
+is returned or a Tcl error is thrown.
+</tt>
+<table width="100%"><tr><td><br></td><td align=right>
+<a href="../api_tcl/tcl_index.html"><img src="../images/api.gif" alt="API"></a><a href="../reftoc.html"><img src="../images/ref.gif" alt="Ref"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am/second.html b/db/docs/ref/am/second.html
new file mode 100644
index 000000000..aa024c48e
--- /dev/null
+++ b/db/docs/ref/am/second.html
@@ -0,0 +1,223 @@
+<!--Id: second.so,v 10.5 2001/05/07 19:28:36 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Secondary indices</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am/close.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/cursor.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Secondary indices</h1>
+<p>A secondary index, put simply, is a way to efficiently access records
+in a database (the primary) by means of some piece of information other
+than the usual (primary) key. In Berkeley DB, this index is simply another
+database whose keys are these pieces of information (the secondary
+keys), and whose data are the primary keys. Secondary indices can be
+(and often are) created manually by the application; there is no
+disadvantage, other than complexity, to doing so. However, when the
+secondary key can be mechanically derived from the primary key and datum
+that it points to, as is frequently the case, Berkeley DB can automatically
+and transparently manage secondary indices.
+<p>As an example of how secondary indices might be used, consider a
+database containing a list of students at a college, each of whom has
+a unique student ID number. A typical database would use the student
+ID number as the key; however, one might also reasonably want to be
+able to look up students by last name. To do this, one would construct
+a secondary index in which the secondary key was this last name.
+<p>In SQL, this would be done by executing something like the following:
+<p><blockquote><pre>CREATE TABLE students(student_id CHAR(4) NOT NULL,
+ lastname CHAR(15), firstname CHAR(15), PRIMARY KEY(student_id));
+CREATE INDEX lname ON students(lastname);</pre></blockquote>
+<p>In Berkeley DB, this would work as follows:
+<pre><p><blockquote>struct student_record {
+ char student_id[4];
+ char last_name[15];
+ char first_name[15];
+};
+<p>
+void
+second()
+{
+<p><blockquote>DB *dbp, *sdbp;
+int ret;
+<p>
+/* Open/create primary */
+if ((ret = db_create(&dbp, dbenv, 0)) != 0)
+ handle_error();
+if ((ret = dbp-&gt;open(dbp,
+ "students.db", NULL, DB_BTREE, DB_CREATE, 0600)) != 0)
+ handle_error();
+<p>
+/*
+ * Open/create secondary. Note that it supports duplicate data
+ * items, since last names might not be unique.
+ */
+if ((ret = db_create(&sdbp, dbenv, 0)) != 0)
+ handle_error();
+if ((ret = dbp-&gt;set_flags(dbp, DB_DUP | DB_DUPSORT)) != 0)
+ handle_error();
+if ((ret = dbp-&gt;open(dbp,
+ "lastname.db", NULL, DB_BTREE, DB_CREATE, 0600)) != 0)
+ handle_error();
+<p>
+/* Associate the secondary with the primary. */
+if ((ret = dbp-&gt;associate(dbp, sdbp, getname, 0)) != 0)
+ handle_error();</blockquote>
+}
+<p>
+/*
+ * getname -- extracts a secondary key (the last name) from a primary
+ * key/data pair
+ */
+int
+getname(dbp, pkey, pdata, skey)
+ DB *dbp;
+ const DBT *pkey, *pdata;
+ DBT *skey;
+{
+ /*
+ * Since the secondary key is a simple structure member of the
+ * record, we don't have to do anything fancy to return it. If
+ * we have composite keys that need to be constructed from the
+ * record, rather than simply pointing into it, then the user's
+ * function might need to allocate space and copy data. In
+ * this case, the DB_DBT_APPMALLOC flag should be set in the
+ * secondary key DBT.
+ */
+ memset(skey, 0, sizeof(DBT));
+ skey-&gt;data = ((struct student_record *)pdata-&gt;data)-&gt;last_name;
+ skey-&gt;size = sizeof((struct student_record *)pdata-&gt;data)-&gt;last_name;
+ return (0);
+}</blockquote></pre>
+<p>From the application's perspective, putting things into the database
+works exactly as it does without a secondary index; one can simply
+insert records into the primary database. In SQL one would do the
+following:
+<p><blockquote><pre>INSERT INTO student
+ VALUES ("WC42", "Churchill ", "Winston ");</pre></blockquote>
+<p>and in Berkeley DB, one does:
+<p><blockquote><pre>struct student_record s;
+DBT data, key;
+<p>
+memset(&key, 0, sizeof(DBT));
+memset(&data, 0, sizeof(DBT));
+memset(&s, 0, sizeof(struct student_record));
+key.data = "WC42";
+key.size = 4;
+memcpy(&s.student_id, "WC42", sizeof(s.student_id));
+memcpy(&s.last_name, "Churchill ", sizeof(s.last_name));
+memcpy(&s.first_name, "Winston ", sizeof(s.first_name));
+data.data = &s;
+data.size = sizeof(s);
+if ((ret = dbp-&gt;put(dbp, txn, &key, &data, 0)) != 0)
+ handle_error();</pre></blockquote>
+<p>Internally, a record with secondary key "Churchill" is inserted into
+the secondary database (in addition to the insertion of "WC42" into the
+primary, of course).
+<p>Deletes are similar. The SQL clause:
+<p><blockquote><pre>DELETE FROM student WHERE (student_id = "WC42");</pre></blockquote>
+<p>looks like:
+<p><blockquote><pre>DBT key;
+<p>
+memset(&key, 0, sizeof(DBT));
+key.data = "WC42";
+key.size = 4;
+if ((ret = dbp-&gt;del(dbp, txn, &key, 0)) != 0)
+ handle_error();</pre></blockquote>
+<p>Deletes can also be performed on the secondary index directly; a delete
+done this way will delete the "real" record in the primary as well. If
+the secondary supports duplicates and there are duplicate occurrences of
+the secondary key, then all records with that secondary key are removed
+from both the secondary index and the primary database. In
+SQL:
+<p><blockquote><pre>DELETE FROM lname WHERE (lastname = "Churchill ");</pre></blockquote>
+<p>In Berkeley DB:
+<p><blockquote><pre>DBT skey;
+<p>
+memset(&skey, 0, sizeof(DBT));
+skey.data = "Churchill ";
+skey.size = 15;
+if ((ret = sdbp-&gt;del(sdbp, txn, &skey, 0)) != 0)
+ handle_error();</pre></blockquote>
+<p>Gets on a secondary automatically return the primary datum. If
+<a href="../../api_c/db_get.html">DB-&gt;pget</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_pget</a> is used in lieu of <a href="../../api_c/db_get.html">DB-&gt;get</a>
+or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, the primary key is returned as well. Thus, the
+equivalent of:
+<p><blockquote><pre>SELECT * from lname WHERE (lastname = "Churchill ");</pre></blockquote>
+<p>would be:
+<p><blockquote><pre>DBT data, pkey, skey;
+<p>
+memset(&skey, 0, sizeof(DBT));
+memset(&pkey, 0, sizeof(DBT));
+memset(&data, 0, sizeof(DBT));
+skey.data = "Churchill ";
+skey.size = 15;
+if ((ret = sdbp-&gt;pget(sdbp, txn, &skey, &pkey, &data, 0)) != 0)
+ handle_error();
+/*
+ * Now pkey contains "WC42" and data contains Winston's record.
+ */</pre></blockquote>
+<p>To create a secondary index to a Berkeley DB database, open the database that
+is to become a secondary index normally, then pass it as the "secondary"
+argument to the <a href="../../api_c/db_associate.html">DB-&gt;associate</a> interface for some primary database.
+<p>From the time a <a href="../../api_c/db_associate.html">DB-&gt;associate</a> call is made until the secondary
+database handle is closed, secondary indices become, as their name
+implies, alternate interfaces to the primary database. All updates to
+the primary will be automatically reflected in each secondary index that
+has been associated with it. All get operations using the
+<a href="../../api_c/db_get.html">DB-&gt;get</a> or <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a> interfaces on the secondary index
+return the primary datum associated with the specified (or otherwise
+current, in the case of cursor operations) secondary key. The
+<a href="../../api_c/db_get.html">DB-&gt;pget</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_pget</a> interfaces also become usable;
+these behave just like <a href="../../api_c/db_get.html">DB-&gt;get</a> and <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>, but return
+the primary key in addition to the primary datum, for those applications
+that need it as well.
+<p>Cursor get operations on a secondary index perform as expected; although
+the data returned will by default be those of the primary database, a
+position in the secondary index is maintained normally, and records will
+appear in the order determined by the secondary key and the comparison
+function or other structure of the secondary database.
+<p>Delete operations on a secondary index delete the item from the primary
+database and all relevant secondaries, including the current one.
+<p>Put operations of any kind are forbidden on secondary indices, as there
+is no way to specify a primary key for a newly put item. Instead, the
+application should use the <a href="../../api_c/dbc_put.html">DBcursor-&gt;c_put</a> or <a href="../../api_c/db_put.html">DB-&gt;put</a> methods
+on the primary database.
+<p>Any number of secondary indices may be associated with a given primary
+database, up to limitations on available memory and the number of open
+file descriptors.
+<p>Note that although Berkeley DB guarantees that updates made using any
+DB handle with an associated secondary will be reflected in the
+that secondary, associating each primary handle with all the appropriate
+secondaries is the responsibility of the application and is not enforced
+by Berkeley DB. It is generally unsafe, but not forbidden by Berkeley DB, to modify
+a database that has secondary indices without having those indices open
+and associated. Similarly, it is generally unsafe, but not forbidden,
+to modify a secondary index directly. Applications that violate these
+rules face the possibility of outdated or incorrect results if the
+secondary indices are later used.
+<p>If for any reason a secondary index gets outdated, the correct course
+of action is to discard it using the <a href="../../api_c/db_remove.html">DB-&gt;remove</a> method
+and create a new one using the
+<a href="../../api_c/db_associate.html">DB-&gt;associate</a> method.
+<p>Note that there is also no way to disassociate a secondary index from
+a primary database. If a secondary index is no longer needed, all of
+its handles should be closed using the <a href="../../api_c/db_close.html">DB-&gt;close</a> method., and
+then the database should be removed (if desired) using a new database
+handle and the <a href="../../api_c/db_remove.html">DB-&gt;remove</a> method.
+<p>Closing a primary database handle automatically closes all secondary
+database handles associated with it; continuing to use a secondary
+database handle after the primary database has been closed may result
+in application crashes or other unexpected behavior.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am/close.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/cursor.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am/truncate.html b/db/docs/ref/am/truncate.html
new file mode 100644
index 000000000..043123910
--- /dev/null
+++ b/db/docs/ref/am/truncate.html
@@ -0,0 +1,24 @@
+<!--Id: truncate.so,v 10.4 2001/03/10 19:05:22 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Database truncation</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am/stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/upgrade.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Database truncation</h1>
+<p>The <a href="../../api_c/db_truncate.html">DB-&gt;truncate</a> function is the standard interface for emptying a
+database of all records.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am/stat.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am/upgrade.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/align.html b/db/docs/ref/am_misc/align.html
new file mode 100644
index 000000000..abe18acc1
--- /dev/null
+++ b/db/docs/ref/am_misc/align.html
@@ -0,0 +1,28 @@
+<!--Id: align.so,v 1.3 2001/03/10 19:59:24 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Data alignment</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am/curclose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/partial.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Data alignment</h1>
+<p>The Berkeley DB access methods provide no guarantees about byte alignment for
+returned key/data pairs, or callback functions which take <a href="../../api_c/dbt.html">DBT</a>
+references as arguments, and applications are responsible for arranging
+any necessary alignment. The <a href="../../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a>,
+<a href="../../api_c/dbt.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> and <a href="../../api_c/dbt.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a> flags may be used to
+store returned items in memory of arbitrary alignment.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am/curclose.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/partial.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/dbsizes.html b/db/docs/ref/am_misc/dbsizes.html
new file mode 100644
index 000000000..25210e5be
--- /dev/null
+++ b/db/docs/ref/am_misc/dbsizes.html
@@ -0,0 +1,45 @@
+<!--Id: dbsizes.so,v 10.25 2001/03/10 19:59:24 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Database limits</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/stability.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/diskspace.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Database limits</h1>
+<p>The largest database file that Berkeley DB can handle depends on the page size
+selected by the application. Berkeley DB stores database file page numbers as
+unsigned 32-bit numbers and database file page sizes as unsigned 16-bit
+numbers. Using the maximum database page size of 65536, this results in
+a maximum database file size of 2<sup>48</sup> (256 terabytes). The
+minimum database page size is 512 bytes, which results in a minimum
+maximum database size of 2<sup>41</sup> (2 terabytes).
+<p>The largest database file Berkeley DB can support is potentially further limited
+if the host system does not have filesystem support for files larger than
+2<sup>32</sup>, including the ability to seek to absolute offsets within
+those files.
+<p>The largest key or data item that Berkeley DB can support is largely limited
+by available memory. Specifically, while key and data byte strings may
+be of essentially unlimited length, any one of them must fit into
+available memory so that it can be returned to the application. As some
+of the Berkeley DB interfaces return both key and data items to the application,
+those interfaces will require that any key/data pair fit simultaneously
+into memory. Further, as the access methods may need to compare key and
+data items with other key and data items, it may be a requirement that
+any two key or two data items fit into available memory. Finally, when
+writing applications supporting transactions, it may be necessary to have
+an additional copy of any data item in memory for logging purposes.
+<p>The maximum Btree depth is 255.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/stability.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/diskspace.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/diskspace.html b/db/docs/ref/am_misc/diskspace.html
new file mode 100644
index 000000000..81666fcda
--- /dev/null
+++ b/db/docs/ref/am_misc/diskspace.html
@@ -0,0 +1,146 @@
+<!--Id: diskspace.so,v 10.15 2001/04/21 18:55:01 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Disk space requirements</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/dbsizes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/tune.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Disk space requirements</h1>
+<p>It is possible to estimate the total database size based on the size of
+the data. The following calculations are an estimate of how many bytes
+you will need to hold a set of data and then how many pages it will take
+to actually store it on disk.
+<p>Space freed by deleting key/data pairs from a Btree or Hash database is
+never returned to the filesystem, although it is reused where possible.
+This means that the Btree and Hash databases are grow-only. If enough
+keys are deleted from a database that shrinking the underlying file is
+desirable, you should create a new database and copy the records from
+the old one into it.
+<p>These are rough estimates at best. For example, they do not take into
+account overflow records, filesystem metadata information, large sets
+of duplicate data items (where the key is only stored once), or
+real-life situations where the sizes of key and data items are wildly
+variable, and the page-fill factor changes over time.
+<h3>Btree</h3>
+<p>The formulas for the Btree access method are as follows:
+<p><blockquote><pre>useful-bytes-per-page = (page-size - page-overhead) * page-fill-factor
+<p>
+bytes-of-data = n-records *
+ (bytes-per-entry + page-overhead-for-two-entries)
+<p>
+n-pages-of-data = bytes-of-data / useful-bytes-per-page
+<p>
+total-bytes-on-disk = n-pages-of-data * page-size
+</pre></blockquote>
+<p>The <b>useful-bytes-per-page</b> is a measure of the bytes on each page
+that will actually hold the application data. It is computed as the total
+number of bytes on the page that are available to hold application data,
+corrected by the percentage of the page that is likely to contain data.
+The reason for this correction is that the percentage of a page that
+contains application data can vary from close to 50% after a page split
+to almost 100% if the entries in the database were inserted in sorted
+order. Obviously, the <b>page-fill-factor</b> can drastically alter
+the amount of disk space required to hold any particular data set. The
+page-fill factor of any existing database can be displayed using the
+<a href="../../utility/db_stat.html">db_stat</a> utility.
+<p>As an example, using an 8K page size, with an 85% page-fill factor, there
+are 6941 bytes of useful space on each page:
+<p><blockquote><pre>6941 = (8192 - 26) * .85</pre></blockquote>
+<p>The total <b>bytes-of-data</b> is an easy calculation: It is the number
+of key/data pairs plus the overhead required to store each pair on a page.
+The overhead to store a single item on a Btree page is 5 bytes. So,
+assuming 60,000,000 key/data pairs, each of which is 8 bytes long, there
+are 1440000000 bytes, or roughly 1.34GB of total data:
+<p><blockquote><pre>1560000000 = 60000000 * ((8 * 2) + (5 * 2))</pre></blockquote>
+<p>The total pages of data, <b>n-pages-of-data</b>, is the
+<b>bytes-of-data</b> divided by the <b>useful-bytes-per-page</b>. In
+the example, there are 224751 pages of data.
+<p><blockquote><pre>224751 = 1560000000 / 6941</pre></blockquote>
+<p>The total bytes of disk space for the database is <b>n-pages-of-data</b>
+multiplied by the <b>page-size</b>. In the example, the result is
+1841160192 bytes, or roughly 1.71GB.
+<p><blockquote><pre>1841160192 = 224751 * 8192</pre></blockquote>
+<h3>Hash</h3>
+<p>The formulas for the Hash access method are as follows:
+<p><blockquote><pre>useful-bytes-per-page = (page-size - page-overhead)
+<p>
+bytes-of-data = n-records *
+ (bytes-per-entry + page-overhead-for-two-entries)
+<p>
+n-pages-of-data = bytes-of-data / useful-bytes-per-page
+<p>
+total-bytes-on-disk = n-pages-of-data * page-size
+</pre></blockquote>
+<p>The <b>useful-bytes-per-page</b> is a measure of the bytes on each page
+that will actually hold the application data. It is computed as the total
+number of bytes on the page that are available to hold application data.
+If the application has explicitly set a page-fill factor, pages will
+not necessarily be kept full. For databases with a preset fill factor,
+see the calculation below. The page-overhead for Hash databases is 26
+bytes and the page-overhead-for-two-entries is 6 bytes.
+<p>As an example, using an 8K page size, there are 8166 bytes of useful space
+on each page:
+<p><blockquote><pre>8166 = (8192 - 26)</pre></blockquote>
+<p>The total <b>bytes-of-data</b> is an easy calculation: it is the number
+of key/data pairs plus the overhead required to store each pair on a page.
+In this case that's 6 bytes per pair. So, assuming 60,000,000 key/data
+pairs, each of which is 8 bytes long, there are 1320000000 bytes, or
+roughly 1.23GB of total data:
+<p><blockquote><pre>1320000000 = 60000000 * (16 + 6)</pre></blockquote>
+<p>The total pages of data, <b>n-pages-of-data</b>, is the
+<b>bytes-of-data</b> divided by the <b>useful-bytes-per-page</b>. In
+this example, there are 161646 pages of data.
+<p><blockquote><pre>161646 = 1320000000 / 8166</pre></blockquote>
+<p>The total bytes of disk space for the database is <b>n-pages-of-data</b>
+multiplied by the <b>page-size</b>. In the example, the result is
+1324204032 bytes, or roughly 1.23GB.
+<p><blockquote><pre>1324204032 = 161646 * 8192</pre></blockquote>
+<p>Now, let's assume that the application specified a fill factor explicitly.
+The fill factor indicates the target number of items to place on a single
+page (a fill factor might reduce the utilization of each page, but it can
+be useful in avoiding splits and preventing buckets from becoming too
+large). Using our estimates above, each item is 22 bytes (16 + 6), and
+there are 8166 useful bytes on a page (8192 - 26). That means that, on
+average, you can fit 371 pairs per page.
+<p><blockquote><pre>371 = 8166 / 22</pre></blockquote>
+<p>However, let's assume that the application designer knows that although
+most items are 8 bytes, they can sometimes be as large as 10, and it's
+very important to avoid overflowing buckets and splitting. Then, the
+application might specify a fill factor of 314.
+<p><blockquote><pre>314 = 8166 / 26</pre></blockquote>
+<p>With a fill factor of 314, then the formula for computing database size
+is
+<p><blockquote><pre>n-pages-of-data = npairs / pairs-per-page</pre></blockquote>
+<p>or 191082.
+<p><blockquote><pre>191082 = 60000000 / 314</pre></blockquote>
+<p>At 191082 pages, the total database size would be 1565343744, or 1.46GB.
+<p><blockquote><pre>1565343744 = 191082 * 8192</pre></blockquote>
+<p>There are a few additional caveats with respect to Hash databases. This
+discussion assumes that the hash function does a good job of evenly
+distributing keys among hash buckets. If the function does not do this,
+you may find your table growing significantly larger than you expected.
+Secondly, in order to provide support for Hash databases coexisting with
+other databases in a single file, pages within a Hash database are
+allocated in power-of-two chunks. That means that a Hash database with 65
+buckets will take up as much space as a Hash database with 128 buckets;
+each time the Hash database grows beyond its current power-of-two number
+of buckets, it allocates space for the next power-of-two buckets. This
+space may be sparsely allocated in the file system, but the files will
+appear to be their full size. Finally, because of this need for
+contiguous allocation, overflow pages and duplicate pages can be allocated
+only at specific points in the file, and this too can lead to sparse hash
+tables.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/dbsizes.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/tune.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/error.html b/db/docs/ref/am_misc/error.html
new file mode 100644
index 000000000..86d14ad71
--- /dev/null
+++ b/db/docs/ref/am_misc/error.html
@@ -0,0 +1,62 @@
+<!--Id: error.so,v 10.20 2001/05/07 19:28:38 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Error support</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/perm.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/stability.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Error support</h1>
+<p>Berkeley DB offers programmatic support for displaying error return values.
+<p>The <a href="../../api_c/env_strerror.html">db_strerror</a> interface returns a pointer to the error
+message corresponding to any Berkeley DB error return, similar to the ANSI C
+strerror interface, but is able to handle both system error returns and
+Berkeley DB specific return values.
+<p>For example:
+<p><blockquote><pre>int ret;
+if ((ret = dbp-&gt;put(dbp, NULL, &key, &data, 0)) != 0) {
+ fprintf(stderr, "put failed: %s\n", db_strerror(ret));
+ return (1);
+}</pre></blockquote>
+<p>There are also two additional error interfaces, <a href="../../api_c/db_err.html">DB-&gt;err</a> and
+<a href="../../api_c/db_err.html">DB-&gt;errx</a>. These interfaces work like the ANSI C X3.159-1989 (ANSI C) printf
+interface, taking a printf-style format string and argument list, and
+writing a message constructed from the format string and arguments.
+<p>The <a href="../../api_c/db_err.html">DB-&gt;err</a> function appends the standard error string to the constructed
+message; the <a href="../../api_c/db_err.html">DB-&gt;errx</a> function does not. These interfaces provide simpler
+ways of displaying Berkeley DB error messages. For example, if your application
+tracks session IDs in a variable called session_id, it can include that
+information in its error messages:
+<p>Error messages can additionally be configured to always include a prefix
+(for example, the program name) using the <a href="../../api_c/db_set_errpfx.html">DB-&gt;set_errpfx</a> interface.
+<p><blockquote><pre>#define DATABASE "access.db"
+<p>
+int ret;
+<p>
+(void)dbp-&gt;set_errpfx(dbp, program_name);
+<p>
+if ((ret =
+ dbp-&gt;open(dbp, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp-&gt;err(dbp, ret, "%s", DATABASE);
+ dbp-&gt;errx(dbp,
+ "contact your system administrator: session ID was %d",
+ session_id);
+ return (1);
+}</pre></blockquote>
+<p>For example, if the program were called my_app and the open call returned
+an EACCESS system error, the error messages shown would appear as follows:
+<p><blockquote><pre>my_app: access.db: Permission denied.
+my_app: contact your system administrator: session ID was 14</pre></blockquote>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/perm.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/stability.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/faq.html b/db/docs/ref/am_misc/faq.html
new file mode 100644
index 000000000..e8e2103bf
--- /dev/null
+++ b/db/docs/ref/am_misc/faq.html
@@ -0,0 +1,59 @@
+<!--Id: faq.so,v 10.6 2001/05/04 14:38:42 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Access method FAQ</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/tune.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/arch/bigpic.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Access method FAQ</h1>
+<p><ol>
+<p><li><b>I'm seeing database corruption when creating multiple databases
+in a single physical file.</b>
+<p>This problem is usually the result of DB handles not sharing an
+underlying database environment. See <a href="../../ref/am/opensub.html">Opening multiple databases in a single file</a> for more information.
+ <a name="3"><!--meow--></a> <a name="4"><!--meow--></a>
+<p><li><b>Is there any way to compact databases, or return unused
+database pages to the filesystem?</b>
+<p>When Berkeley DB database pages are emptied, they are made available for other
+uses, that is, new pages will not be allocated from the underlying
+filesystems as long as there are unused pages available. However, you
+cannot return those pages to the filesystem without dumping and
+reloading the database.
+ <a name="5"><!--meow--></a>
+<p><li><b>Is there any way to avoid double buffering in the Berkeley DB system?</b>
+<p>While you cannot avoid double buffering entirely, there are three
+different tuning knobs you can work with to address this issue:
+<p>First, the Berkeley DB cache size can be explicitly set. Rather than allocate
+additional space in the Berkeley DB cache to cover unexpectedly heavy load or
+large table sizes, double buffering may suggest you size the cache to
+function well under normal conditions, and then depend on the file
+buffer cache to cover abnormal conditions. Obviously, this is a
+trade-off, as Berkeley DB may not then perform as well as usual under abnormal
+conditions.
+<p>Second, depending on the underlying operating system you're using, you
+may be able to alter the amount of physical memory devoted to the file
+buffer cache. Running as the system super-user makes a difference for
+some UNIX or UNIX-like operating systems as well.
+<p>Third, changing the size of the Berkeley DB environment regions can change
+the amount of space the operating system makes available for the file
+buffer cache, and it's often worth considering exactly how the operating
+system is dividing up its available memory. Further, moving the Berkeley DB
+database environment regions from filesystem backed memory into system
+memory (or heap memory), can often make additional system memory
+available for the file buffer cache, especially on systems without a
+unified buffer cache and VM system.
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/tune.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/arch/bigpic.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/partial.html b/db/docs/ref/am_misc/partial.html
new file mode 100644
index 000000000..0842519ee
--- /dev/null
+++ b/db/docs/ref/am_misc/partial.html
@@ -0,0 +1,134 @@
+<!--Id: partial.so,v 10.21 2001/03/10 19:59:24 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Partial record storage and retrieval</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/align.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/perm.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Partial record storage and retrieval</h1>
+<p>It is possible to both store and retrieve parts of data items in all
+Berkeley DB access methods. This is done by setting the
+<a href="../../api_c/dbt.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a> flag in the <a href="../../api_c/dbt.html">DBT</a> structure passed to the
+Berkeley DB interface.
+<p>The <a href="../../api_c/dbt.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a> flag is based on the values of two fields
+of the <a href="../../api_c/dbt.html">DBT</a> structure: <b>dlen</b> and <b>doff</b>. The value
+of <b>dlen</b> is the number of bytes of the record in which the
+application is interested. The value of <b>doff</b> is the offset from
+the beginning of the data item where those bytes start.
+<p>For example, if the data item were <b>ABCDEFGHIJKL</b>, a <b>doff</b>
+value of 3 would indicate that the bytes of interest started at
+<b>D</b>, and a <b>dlen</b> value of 4 would indicate that the bytes
+of interest were <b>DEFG</b>.
+<p>When retrieving a data item from a database, the <b>dlen</b> bytes
+starting <b>doff</b> bytes from the beginning of the record are
+returned, as if they comprised the entire record. If any or all of the
+specified bytes do not exist in the record, the retrieval is still
+successful, and any existing bytes (and nul bytes for any non-existent
+bytes) are returned.
+<p>When storing a data item into the database, the <b>dlen</b> bytes
+starting <b>doff</b> bytes from the beginning of the specified key's
+data record are replaced by the data specified by the <b>data</b> and
+<b>size</b> fields. If <b>dlen</b> is smaller than <b>size</b>, the
+record will grow, and if <b>dlen</b> is larger than <b>size</b>, the
+record will shrink. If the specified bytes do not exist, the record will
+be extended using nul bytes as necessary, and the store call will still
+succeed.
+<p>The following are various examples of the put case for the
+<a href="../../api_c/dbt.html#DB_DBT_PARTIAL">DB_DBT_PARTIAL</a> flag. In all examples, the initial data item is 20
+bytes in length:
+<p><b>ABCDEFGHIJ0123456789</b>
+<p><ol>
+<p><li><p><blockquote><pre>size = 20
+doff = 0
+dlen = 20
+data = abcdefghijabcdefghij
+<p>
+Result: The 20 bytes at offset 0 are replaced by the 20 bytes of data;
+that is, the entire record is replaced.
+<p>
+ABCDEFGHIJ0123456789 -&gt; abcdefghijabcdefghij
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 10
+doff = 20
+dlen = 0
+data = abcdefghij
+<p>
+Result: The 0 bytes at offset 20 are replaced by the 10 bytes of data;
+that is, the record is extended by 10 bytes.
+<p>
+ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJ0123456789abcdefghij
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 10
+doff = 10
+dlen = 5
+data = abcdefghij
+<p>
+Result: The 5 bytes at offset 10 are replaced by the 10 bytes of data.
+<p>
+ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJabcdefghij56789
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 10
+doff = 10
+dlen = 0
+data = abcdefghij
+<p>
+Result: The 0 bytes at offset 10 are replaced by the 10 bytes of data;
+that is, 10 bytes are inserted into the record.
+<p>
+ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJabcdefghij0123456789
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 10
+doff = 2
+dlen = 15
+data = abcdefghij
+<p>
+Result: The 15 bytes at offset 2 are replaced by the 10 bytes of data.
+<p>
+ABCDEFGHIJ0123456789 -&gt; ABabcdefghij789
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 10
+doff = 0
+dlen = 0
+data = abcdefghij
+<p>
+Result: The 0 bytes at offset 0 are replaced by the 10 bytes of data;
+that is, the 10 bytes are inserted at the beginning of the record.
+<p>
+ABCDEFGHIJ0123456789 -&gt; abcdefghijABCDEFGHIJ0123456789
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 0
+doff = 0
+dlen = 10
+data = ""
+<p>
+Result: The 10 bytes at offset 0 are replaced by the 0 bytes of data;
+that is, the first 10 bytes of the record are discarded.
+<p>
+ABCDEFGHIJ0123456789 -&gt; 0123456789
+</pre></blockquote>
+<p><li><p><blockquote><pre>size = 10
+doff = 25
+dlen = 0
+data = abcdefghij
+<p>
+Result: The 0 bytes at offset 25 are replaced by the 10 bytes of data;
+that is, 10 bytes are inserted into the record past the end of the
+current data (\0 represents a nul byte).
+<p>
+ABCDEFGHIJ0123456789 -&gt; ABCDEFGHIJ0123456789\0\0\0\0\0abcdefghij
+</pre></blockquote>
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/align.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/perm.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/perm.html b/db/docs/ref/am_misc/perm.html
new file mode 100644
index 000000000..e4b1e617e
--- /dev/null
+++ b/db/docs/ref/am_misc/perm.html
@@ -0,0 +1,36 @@
+<!--Id: perm.so,v 1.3 2001/05/05 01:49:22 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Retrieved key/data permanence for C/C++</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/partial.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/error.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Retrieved key/data permanence for C/C++</h1>
+<p>When using the non-cursor Berkeley DB calls to retrieve key/data items under
+the C/C++ APIs (for example, <a href="../../api_c/db_get.html">DB-&gt;get</a>), the memory to which the
+pointer stored into the <a href="../../api_c/dbt.html">DBT</a> refers is only valid until the next
+call to Berkeley DB using the DB handle. (This includes <b>any</b>
+use of the returned DB handle, including by another thread of
+control within the process. For this reason, when multiple threads are
+using the returned DB handle concurrently, one of the
+<a href="../../api_c/dbt.html#DB_DBT_MALLOC">DB_DBT_MALLOC</a>, <a href="../../api_c/dbt.html#DB_DBT_REALLOC">DB_DBT_REALLOC</a> or <a href="../../api_c/dbt.html#DB_DBT_USERMEM">DB_DBT_USERMEM</a>
+flags must be specified with any non-cursor <a href="../../api_c/dbt.html">DBT</a> used for key or
+data retrieval.)
+<p>When using the cursor Berkeley DB calls to retrieve key/data items under the
+C/C++ APIs (for example, <a href="../../api_c/dbc_get.html">DBcursor-&gt;c_get</a>), the memory to which the
+pointer stored into the <a href="../../api_c/dbt.html">DBT</a> refers is only valid until the next
+call to Berkeley DB using the DBC handle returned by <a href="../../api_c/db_cursor.html">DB-&gt;cursor</a>.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/partial.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/error.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/stability.html b/db/docs/ref/am_misc/stability.html
new file mode 100644
index 000000000..2570f8cc4
--- /dev/null
+++ b/db/docs/ref/am_misc/stability.html
@@ -0,0 +1,54 @@
+<!--Id: stability.so,v 10.28 2001/04/04 22:32:29 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Cursor stability</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/dbsizes.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Cursor stability</h1>
+<p>In the absence of locking, no guarantees are made about the stability
+of cursors in different threads of control. However, the Btree, Queue
+and Recno access methods guarantee that cursor operations, interspersed
+with any other operation in the same thread of control will always
+return keys in order and will return each non-deleted key/data pair
+exactly once. Because the Hash access method uses a dynamic hashing
+algorithm, it cannot guarantee any form of stability in the presence of
+inserts and deletes unless transactional locking is performed.
+<p>If locking was specified when the Berkeley DB environment was opened, but
+transactions are not in effect, the access methods provide repeatable
+reads with respect to the cursor. That is, a <a href="../../api_c/dbc_get.html#DB_CURRENT">DB_CURRENT</a> call
+on the cursor is guaranteed to return the same record as was returned
+on the last call to the cursor.
+ <a name="4"><!--meow--></a> <a name="5"><!--meow--></a>
+<p>In the presence of transactions, the Btree, Hash and Recno access
+methods provide degree 3 isolation (serializable transactions). The
+Queue access method provides degree 3 isolation with the exception that
+it permits phantom records to appear between calls. That is, deleted
+records are not locked, therefore another transaction may replace a
+deleted record between two calls to retrieve it. The record would not
+appear in the first call but would be seen by the second call. For
+readers not enclosed in transactions, all access method calls provide
+degree 2 isolation, that is, reads are not repeatable. Finally, Berkeley DB
+provides degree 1 isolation when the <a href="../../api_c/db_open.html#DB_DIRTY_READ">DB_DIRTY_READ</a> flag is
+specified; that is, reads may see data modified in transactions which
+have not yet committed.
+<p>For all access methods, a cursor scan of the database performed within
+the context of a transaction is guaranteed to return each key/data pair
+once and only once, except in the following case. If, while performing
+a cursor scan using the Hash access method, the transaction performing
+the scan inserts a new pair into the database, it is possible that
+duplicate key/data pairs will be returned.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/dbsizes.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/am_misc/tune.html b/db/docs/ref/am_misc/tune.html
new file mode 100644
index 000000000..f4aa16b6c
--- /dev/null
+++ b/db/docs/ref/am_misc/tune.html
@@ -0,0 +1,84 @@
+<!--Id: tune.so,v 10.6 2001/03/10 19:59:24 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Access method tuning</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Access Methods</dl></h3></td>
+<td align=right><a href="../../ref/am_misc/diskspace.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Access method tuning</h1>
+<p>There are a few different issues to consider when tuning the performance
+of Berkeley DB access method applications.
+<p><dl compact>
+<p><dt>access method<dd>An application's choice of a database access method can significantly
+affect performance. Applications using fixed-length records and integer
+keys are likely to get better performance from the Queue access method.
+Applications using variable-length records are likely to get better
+performance from the Btree access method, as it tends to be faster for
+most applications than either the Hash or Recno access methods. Because
+the access method APIs are largely identical between the Berkeley DB access
+methods, it is easy for applications to benchmark the different access
+methods against each other. See <a href="../../ref/am_conf/select.html">Selecting an access method</a> for more information.
+<p><dt>cache size<dd>The Berkeley DB database cache defaults to a fairly small size, and most
+applications concerned with performance will want to set it explicitly.
+Using a too-small cache will result in horrible performance. The first
+step in tuning the cache size is to use the db_stat utility (or the
+statistics returned by the <a href="../../api_c/db_stat.html">DB-&gt;stat</a> function) to measure the
+effectiveness of the cache. The goal is to maximize the cache's hit
+rate. Typically, increasing the size of the cache until the hit rate
+reaches 100% or levels off will yield the best performance. However,
+if your working set is sufficiently large, you will be limited by the
+system's available physical memory. Depending on the virtual memory
+and file system buffering policies of your system, and the requirements
+of other applications, the maximum cache size will be some amount
+smaller than the size of physical memory. If you find that
+<a href="../../utility/db_stat.html">db_stat</a> shows that increasing the cache size improves your hit
+rate, but performance is not improving (or is getting worse), then it's
+likely you've hit other system limitations. At this point, you should
+review the system's swapping/paging activity and limit the size of the
+cache to the maximum size possible without triggering paging activity.
+Finally, always remember to make your measurements under conditions as
+close as possible to the conditions your deployed application will run
+under, and to test your final choices under worst-case conditions.
+<p><dt>shared memory<dd>By default, Berkeley DB creates its database environment shared regions in
+filesystem backed memory. Some systems do not distinguish between
+regular filesystem pages and memory-mapped pages backed by the
+filesystem, when selecting dirty pages to be flushed back to disk. For
+this reason, dirtying pages in the Berkeley DB cache may cause intense
+filesystem activity, typically when the filesystem sync thread or
+process is run. In some cases, this can dramatically affect application
+throughput. The workaround to this problem is to create the shared
+regions in system shared memory (<a href="../../api_c/env_open.html#DB_SYSTEM_MEM">DB_SYSTEM_MEM</a>) or in
+application private memory (<a href="../../api_c/env_open.html#DB_PRIVATE">DB_PRIVATE</a>).
+<p><dt>large key/data items<dd>Storing large key/data items in a database can alter the performance
+characteristics of Btree, Hash and Recno databases. The first parameter
+to consider is the database page size. When a key/data item is too
+large to be placed on a database page, it is stored on "overflow" pages
+that are maintained outside of the normal database structure (typically,
+items that are larger than one-quarter of the page size are deemed to
+be too large). Accessing these overflow pages requires at least one
+additional page reference over a normal access, so it is usually better
+to increase the page size than to create a database with a large number
+of overflow pages. Use the <a href="../../utility/db_stat.html">db_stat</a> utility (or the statistics
+returned by the <a href="../../api_c/db_stat.html">DB-&gt;stat</a> function) to review the number of overflow
+pages in the database.
+<p>The second issue is using large key/data items instead of duplicate data
+items. While this can offer performance gains to some applications
+(because it is possible to retrieve several data items in a single get
+call), once the key/data items are large enough to be pushed off-page,
+they will slow the application down. Using duplicate data items is
+usually the better choice in the long run.
+</dl>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/am_misc/diskspace.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/am_misc/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/build_unix/embedix.html b/db/docs/ref/build_unix/embedix.html
new file mode 100644
index 000000000..342cf0f3d
--- /dev/null
+++ b/db/docs/ref/build_unix/embedix.html
@@ -0,0 +1,36 @@
+<!--Id: embedix.so,v 11.1 2001/04/04 18:14:17 sue Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Embedix</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Building Berkeley DB for UNIX systems</dl></h3></td>
+<td align=right><a href="../../ref/build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/build_unix/freebsd.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Embedix</h1>
+<p><ol>
+<p><li><b>How do I make Embedix aware of Berkeley DB?</b>
+<p>In order to make Embedix aware of a software component, two items are
+needed, an Embedix Component Descriptor file and a source RPM file
+for that component. After Berkeley DB has been configured for RPM and
+Embedix using the configuration options described in <a href="conf.html">Configuring
+Berkeley DB</a>, the RPM should be built using:
+<p><blockquote><pre>make</pre></blockquote>
+After the RPM is built, as root, the files need to be installed
+in the Embedix installation area, using:
+<p><blockquote><pre>make install</pre></blockquote>
+After installation, start up the
+Embedix target wizard and Berkeley DB will appear in the component list.
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/build_unix/aix.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/build_unix/freebsd.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/env/faq.html b/db/docs/ref/env/faq.html
new file mode 100644
index 000000000..b6d572210
--- /dev/null
+++ b/db/docs/ref/env/faq.html
@@ -0,0 +1,41 @@
+<!--Id: faq.so,v 10.1 2001/04/25 15:10:45 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Environment FAQ</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Environment</dl></h3></td>
+<td align=right><a href="../../ref/env/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/cam/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Environment FAQ</h1>
+<p><ol>
+<p><li><b>I'm using multiple processes to access an Berkeley DB database
+environment; is there any way to ensure that two processes don't run
+recovery at the same time, or that all processes have exited the
+database environment so that recovery can be run?</b>
+<p>It's the responsibility of the processes (and/or threads of control)
+using a Berkeley DB environment to ensure recovery is never performed if there
+are other processes running recovery or using an existing database
+environment. It would be great if Berkeley DB could solve this, but it
+requires a way to single-thread execution on a system, and there's
+rarely anything Berkeley DB can use for that purpose -- let alone a portable
+method.
+<p>Most application suites solve this problem by writing a tiny watch
+program that recovers the database environment and then runs the
+processes that actually use the database environment to perform work.
+The watcher program then monitors the working processes, and if any of
+them exit badly for any reason, the watcher kills any remaining
+processes and restarts the cycle.
+</ol>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/env/error.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/cam/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/install/multiple.html b/db/docs/ref/install/multiple.html
new file mode 100644
index 000000000..c72a3fd4e
--- /dev/null
+++ b/db/docs/ref/install/multiple.html
@@ -0,0 +1,54 @@
+<!--Id: multiple.so,v 10.3 2001/04/16 17:47:13 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Building with multiple versions of Berkeley DB</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>System Installation Notes</dl></h3></td>
+<td align=right><a href="../../ref/install/file.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/install/rpm.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Building with multiple versions of Berkeley DB</h1>
+<p>In some cases it may be necessary to build applications which include
+multiple versions of Berkeley DB. Examples include applications which include
+software from other vendors, or applications running on a system where
+the system C library itself uses Berkeley DB. In such cases, the two versions
+of Berkeley DB may be incompatible, that is, they may have different external
+and internal interfaces, and may even have different underlying database
+formats.
+<p>To create a Berkeley DB library whose symbols won't collide with other Berkeley DB
+libraries (or other application or library modules, for that matter),
+configure Berkeley DB using the <a href="../../ref/build_unix/conf.html#--with-uniquename=NAME">--with-uniquename=NAME</a> configuration option,
+and then build Berkeley DB as usual. (Note that
+<a href="../../ref/build_unix/conf.html#--with-uniquename=NAME">--with-uniquename</a> only affects the Berkeley DB C language library build;
+loading multiple versions of the C++ or Java APIs will require
+additional work.) The modified symbol names are hidden from the
+application in the Berkeley DB header files, that is, there is no need for
+the application to be aware that it is using a special library build as
+long as it includes the appropriate Berkeley DB header file.
+<p>If "NAME" is not specified when configuring with
+<a href="../../ref/build_unix/conf.html#--with-uniquename=NAME">--with-uniquename</a>, a default value built from the major and minor
+numbers of the Berkeley DB release will be used. It is rarely necessary to
+specify NAME; using the major and minor release numbers will ensure that
+only one copy of the library will be loaded into the application unless
+two distinct versions really are necessary.
+<p>When distributing any library software that uses Berkeley DB, or any software
+which will be recompiled by users for their systems, we recommend two
+things: First, include the Berkeley DB release as part of your release. This
+will insulate your software from potential Berkeley DB API changes as well as
+simplifying your coding because you will only have to code to a single
+version of the Berkeley DB API instead of adapting at compile time to whatever
+version of Berkeley DB happens to be installed on the target system. Second,
+use <a href="../../ref/build_unix/conf.html#--with-uniquename=NAME">--with-uniquename</a> when configuring Berkeley DB, because that will insure that
+you do not unexpectedly collide with other application code or a library
+already installed on the target system.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/install/file.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/install/rpm.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/install/rpm.html b/db/docs/ref/install/rpm.html
new file mode 100644
index 000000000..fed9524e5
--- /dev/null
+++ b/db/docs/ref/install/rpm.html
@@ -0,0 +1,28 @@
+<!--Id: rpm.so,v 1.3 2001/04/10 20:44:04 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Building RPM distribution packages</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>System Installation Notes</dl></h3></td>
+<td align=right><a href="../../ref/install/multiple.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/debug/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Building RPM distribution packages</h1>
+<p>If you would like to distribute your configuration and build of Berkeley DB
+as an RPM software package, first configure Berkeley DB using the
+<a href="../../ref/build_unix/conf.html#--with-rpm">--with-rpm</a>
+configuration option, and then build Berkeley DB as follows:
+<p><blockquote><pre>../dist/configure --with-rpm=DIR
+make</pre></blockquote>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/install/multiple.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/debug/intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/simple_tut/example.cs b/db/docs/ref/simple_tut/example.cs
new file mode 100644
index 000000000..e610648d1
--- /dev/null
+++ b/db/docs/ref/simple_tut/example.cs
@@ -0,0 +1,73 @@
+#include <sys/types.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "db.h"
+
+#define DATABASE "access.db"
+
+int
+main()
+{
+ DB *dbp;
+ DBT key, data;
+ int ret, t_ret;
+
+ /* Create the database handle and open the underlying database. */
+ if ((ret = db_create(&dbp, NULL, 0)) != 0) {
+ fprintf(stderr, "db_create: %s\n", db_strerror(ret));
+ exit (1);
+ }
+ if ((ret =
+ dbp->open(dbp, DATABASE, NULL, DB_BTREE, DB_CREATE, 0664)) != 0) {
+ dbp->err(dbp, ret, "%s", DATABASE);
+ goto err;
+ }
+
+ /* Initialize key/data structures. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = "fruit";
+ key.size = sizeof("fruit");
+ data.data = "apple";
+ data.size = sizeof("apple");
+
+ /* Store a key/data pair. */
+ if ((ret = dbp->put(dbp, NULL, &key, &data, 0)) == 0)
+ printf("db: %s: key stored.\n", (char *)key.data);
+ else {
+ dbp->err(dbp, ret, "DB->put");
+ goto err;
+ }
+
+ /* Retrieve a key/data pair. */
+ if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)
+ printf("db: %s: key retrieved: data was %s.\n",
+ (char *)key.data, (char *)data.data);
+ else {
+ dbp->err(dbp, ret, "DB->get");
+ goto err;
+ }
+
+ /* Delete a key/data pair. */
+ if ((ret = dbp->del(dbp, NULL, &key, 0)) == 0)
+ printf("db: %s: key was deleted.\n", (char *)key.data);
+ else {
+ dbp->err(dbp, ret, "DB->del");
+ goto err;
+ }
+
+ /* Retrieve a key/data pair. */
+ if ((ret = dbp->get(dbp, NULL, &key, &data, 0)) == 0)
+ printf("db: %s: key retrieved: data was %s.\n",
+ (char *)key.data, (char *)data.data);
+ else
+ dbp->err(dbp, ret, "DB->get");
+
+err: if ((t_ret = dbp->close(dbp, 0)) != 0 && ret == 0)
+ ret = t_ret;
+
+ exit(ret);
+}
diff --git a/db/docs/ref/transapp/nested.html b/db/docs/ref/transapp/nested.html
new file mode 100644
index 000000000..902f57ed3
--- /dev/null
+++ b/db/docs/ref/transapp/nested.html
@@ -0,0 +1,65 @@
+<!--Id: nested.so,v 10.22 2001/03/02 21:01:22 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Nested transactions</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Berkeley DB Transactional Data Store Applications</dl></h3></td>
+<td align=right><a href="../../ref/transapp/cursor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/transapp/admin.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Nested transactions</h1>
+<p>Berkeley DB provides support for nested transactions. Nested transactions
+allow an application to decompose a large or long-running transaction
+into smaller units that may be independently aborted.
+<p>Normally, when beginning a transaction, the application will pass a NULL
+value for the parent argument to <a href="../../api_c/txn_begin.html">txn_begin</a>. If, however, the
+parent argument is a DB_TXN handle, the newly created transaction
+will be treated as a nested transaction within the parent. Transactions
+may nest arbitrarily deeply. For the purposes of this discussion,
+transactions created with a parent identifier will be called
+<i>child transactions</i>.
+<p>Once a transaction becomes a parent, as long as any of its child
+transactions are unresolved (that is, they have neither committed nor
+aborted), the parent may not issue any Berkeley DB calls except to begin more
+child transactions, or to commit or abort. For example, it may not
+issue any access method or cursor calls. After all of a parent's
+children have committed or aborted, the parent may again request
+operations on its own behalf.
+<p>The semantics of nested transactions are as follows. When a child
+transaction is begun, it inherits all the locks of its parent. This
+means that the child will never block waiting on a lock held by its
+parent. Further, locks held by two children of the same parent will
+also conflict. To make this concrete, consider the following set of
+transactions and lock acquisitions.
+<p>Transaction T1 is the parent transaction. It acquires a write lock on
+item A and then begins two child transactions: C1 and C2. C1 also
+wishes to acquire a write lock on A; this succeeds. If C2 attempts to
+acquire a write lock on A, it will block until C1 releases the lock, at
+which point it will succeed. Now, let's say that C1 acquires a write
+lock on B. If C2 now attempts to obtain a lock on B, it will block.
+However, let's now assume that C1 commits. Its locks are
+anti-inherited, which means they are given to T1, so T1 will now hold
+a lock on B. At this point, C2 would be unblocked and would then
+acquire a lock on B.
+<p>Child transactions are entirely subservient to their parent transaction.
+They may abort, undoing their operations regardless of the eventual fate
+of the parent. However, even if a child transaction commits, if its
+parent transaction is eventually aborted, the child's changes are undone
+and the child's transaction is effectively aborted. Any child
+transactions that are not yet resolved when the parent commits or aborts
+are resolved based on the parent's resolution -- committing if the
+parent commits and aborting if the parent aborts. Any child
+transactions that are not yet resolved when the parent prepares are also
+prepared.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/transapp/cursor.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/transapp/admin.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/transapp/transapp.cs b/db/docs/ref/transapp/transapp.cs
new file mode 100644
index 000000000..82e4fb42f
--- /dev/null
+++ b/db/docs/ref/transapp/transapp.cs
@@ -0,0 +1,492 @@
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <errno.h>
+#include <pthread.h>
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include <db.h>
+
+#define ENV_DIRECTORY "TXNAPP"
+
+void add_cat(DB_ENV *, DB *, char *, ...);
+void add_color(DB_ENV *, DB *, char *, int);
+void add_fruit(DB_ENV *, DB *, char *, char *);
+void *checkpoint_thread(void *);
+void log_archlist(DB_ENV *);
+void *logfile_thread(void *);
+void db_open(DB_ENV *, DB **, char *, int);
+void env_dir_create(void);
+void env_open(DB_ENV **);
+void usage(void);
+
+int
+main(int argc, char *argv[])
+{
+ extern char *optarg;
+ extern int optind;
+ DB *db_cats, *db_color, *db_fruit;
+ DB_ENV *dbenv;
+ pthread_t ptid;
+ int ch, ret;
+
+ while ((ch = getopt(argc, argv, "")) != EOF)
+ switch (ch) {
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+
+ env_dir_create();
+ env_open(&dbenv);
+
+ /* Start a checkpoint thread. */
+ if ((ret = pthread_create(
+ &ptid, NULL, checkpoint_thread, (void *)dbenv)) != 0) {
+ fprintf(stderr,
+ "txnapp: failed spawning checkpoint thread: %s\n",
+ strerror(ret));
+ exit (1);
+ }
+
+ /* Start a logfile removal thread. */
+ if ((ret = pthread_create(
+ &ptid, NULL, logfile_thread, (void *)dbenv)) != 0) {
+ fprintf(stderr,
+ "txnapp: failed spawning log file removal thread: %s\n",
+ strerror(ret));
+ exit (1);
+ }
+
+ /* Open database: Key is fruit class; Data is specific type. */
+ db_open(dbenv, &db_fruit, "fruit", 0);
+
+ /* Open database: Key is a color; Data is an integer. */
+ db_open(dbenv, &db_color, "color", 0);
+
+ /*
+ * Open database:
+ * Key is a name; Data is: company name, address, cat breeds.
+ */
+ db_open(dbenv, &db_cats, "cats", 1);
+
+ add_fruit(dbenv, db_fruit, "apple", "yellow delicious");
+
+ add_color(dbenv, db_color, "blue", 0);
+ add_color(dbenv, db_color, "blue", 3);
+
+ add_cat(dbenv, db_cats,
+ "Amy Adams",
+ "Sleepycat Software",
+ "394 E. Riding Dr., Carlisle, MA 01741, USA",
+ "abyssinian",
+ "bengal",
+ "chartreaux",
+ NULL);
+
+ return (0);
+}
+
+void
+env_dir_create()
+{
+ struct stat sb;
+
+ /*
+ * If the directory exists, we're done. We do not further check
+ * the type of the file, DB will fail appropriately if it's the
+ * wrong type.
+ */
+ if (stat(ENV_DIRECTORY, &sb) == 0)
+ return;
+
+ /* Create the directory, read/write/access owner only. */
+ if (mkdir(ENV_DIRECTORY, S_IRWXU) != 0) {
+ fprintf(stderr,
+ "txnapp: mkdir: %s: %s\n", ENV_DIRECTORY, strerror(errno));
+ exit (1);
+ }
+}
+
+void
+env_open(DB_ENV **dbenvp)
+{
+ DB_ENV *dbenv;
+ int ret;
+
+ /* Create the environment handle. */
+ if ((ret = db_env_create(&dbenv, 0)) != 0) {
+ fprintf(stderr,
+ "txnapp: db_env_create: %s\n", db_strerror(ret));
+ exit (1);
+ }
+
+ /* Set up error handling. */
+ dbenv->set_errpfx(dbenv, "txnapp");
+
+ /* Do deadlock detection internally. */
+ if ((ret = dbenv->set_lk_detect(dbenv, DB_LOCK_DEFAULT)) != 0) {
+ dbenv->err(dbenv, ret, "set_lk_detect: DB_LOCK_DEFAULT");
+ exit (1);
+ }
+
+ /*
+ * Open a transactional environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * run recovery
+ * read/write owner only
+ */
+ if ((ret = dbenv->open(dbenv, ENV_DIRECTORY,
+ DB_CREATE | DB_INIT_LOCK | DB_INIT_LOG |
+ DB_INIT_MPOOL | DB_INIT_TXN | DB_RECOVER | DB_THREAD,
+ S_IRUSR | S_IWUSR)) != 0) {
+ dbenv->err(dbenv, ret, "dbenv->open: %s", ENV_DIRECTORY);
+ exit (1);
+ }
+
+ *dbenvp = dbenv;
+}
+
+void *
+checkpoint_thread(void *arg)
+{
+ DB_ENV *dbenv;
+ int ret;
+
+ dbenv = arg;
+ dbenv->errx(dbenv, "Checkpoint thread: %lu", (u_long)pthread_self());
+
+ /* Checkpoint once a minute. */
+ for (;; sleep(60))
+ switch (ret = txn_checkpoint(dbenv, 0, 0, 0)) {
+ case 0:
+ case DB_INCOMPLETE:
+ break;
+ default:
+ dbenv->err(dbenv, ret, "checkpoint thread");
+ exit (1);
+ }
+
+ /* NOTREACHED */
+}
+
+void *
+logfile_thread(void *arg)
+{
+ DB_ENV *dbenv;
+ int ret;
+ char **begin, **list;
+
+ dbenv = arg;
+ dbenv->errx(dbenv,
+ "Log file removal thread: %lu", (u_long)pthread_self());
+
+ /* Check once every 5 minutes. */
+ for (;; sleep(300)) {
+ /* Get the list of log files. */
+ if ((ret = log_archive(dbenv, &list, DB_ARCH_ABS)) != 0) {
+ dbenv->err(dbenv, ret, "log_archive");
+ exit (1);
+ }
+
+ /* Remove the log files. */
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ if ((ret = remove(*list)) != 0) {
+ dbenv->err(dbenv,
+ ret, "remove %s", *list);
+ exit (1);
+ }
+ free (begin);
+ }
+ }
+ /* NOTREACHED */
+}
+
+void
+log_archlist(DB_ENV *dbenv)
+{
+ int ret;
+ char **begin, **list;
+
+ /* Get the list of database files. */
+ if ((ret = log_archive(dbenv,
+ &list, DB_ARCH_ABS | DB_ARCH_DATA)) != 0) {
+ dbenv->err(dbenv, ret, "log_archive: DB_ARCH_DATA");
+ exit (1);
+ }
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ printf("database file: %s\n", *list);
+ free (begin);
+ }
+
+ /* Get the list of log files. */
+ if ((ret = log_archive(dbenv,
+ &list, DB_ARCH_ABS | DB_ARCH_LOG)) != 0) {
+ dbenv->err(dbenv, ret, "log_archive: DB_ARCH_LOG");
+ exit (1);
+ }
+ if (list != NULL) {
+ for (begin = list; *list != NULL; ++list)
+ printf("log file: %s\n", *list);
+ free (begin);
+ }
+}
+
+void
+db_open(DB_ENV *dbenv, DB **dbp, char *name, int dups)
+{
+ DB *db;
+ int ret;
+
+ /* Create the database handle. */
+ if ((ret = db_create(&db, dbenv, 0)) != 0) {
+ dbenv->err(dbenv, ret, "db_create");
+ exit (1);
+ }
+
+ /* Optionally, turn on duplicate data items. */
+ if (dups && (ret = db->set_flags(db, DB_DUP)) != 0) {
+ dbenv->err(dbenv, ret, "db->set_flags: DB_DUP");
+ exit (1);
+ }
+
+ /*
+ * Open a database in the environment:
+ * create if it doesn't exist
+ * free-threaded handle
+ * read/write owner only
+ */
+ if ((ret = db->open(db, name, NULL,
+ DB_BTREE, DB_CREATE | DB_THREAD, S_IRUSR | S_IWUSR)) != 0) {
+ dbenv->err(dbenv, ret, "db->open: %s", name);
+ exit (1);
+ }
+
+ *dbp = db;
+}
+
+void
+add_fruit(DB_ENV *dbenv, DB *db, char *fruit, char *name)
+{
+ DBT key, data;
+ DB_TXN *tid;
+ int ret;
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = fruit;
+ key.size = strlen(fruit);
+ data.data = name;
+ data.size = strlen(name);
+
+ for (;;) {
+ /* Begin the transaction. */
+ if ((ret = txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "txn_begin");
+ exit (1);
+ }
+
+ /* Store the value. */
+ switch (ret = db->put(db, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ if ((ret = txn_commit(tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "txn_commit");
+ exit (1);
+ }
+ return;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = txn_abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "txn_abort");
+ exit (1);
+ }
+ break;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(dbenv, ret, "dbc->put: %s/%s", fruit, name);
+ exit (1);
+ }
+ }
+}
+
+void
+add_color(DB_ENV *dbenv, DB *dbp, char *color, int increment)
+{
+ DBT key, data;
+ DB_TXN *tid;
+ int original, ret;
+ char buf[64];
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ key.data = color;
+ key.size = strlen(color);
+ memset(&data, 0, sizeof(data));
+ data.flags = DB_DBT_MALLOC;
+
+ for (;;) {
+ /* Begin the transaction. */
+ if ((ret = txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "txn_begin");
+ exit (1);
+ }
+
+ /*
+ * Get the key. If it exists, we increment the value. If it
+ * doesn't exist, we create it.
+ */
+ switch (ret = dbp->get(dbp, tid, &key, &data, 0)) {
+ case 0:
+ original = atoi(data.data);
+ break;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = txn_abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "txn_abort");
+ exit (1);
+ }
+ continue;
+ case DB_NOTFOUND:
+ original = 0;
+ break;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(
+ dbenv, ret, "dbc->get: %s/%d", color, increment);
+ exit (1);
+ }
+ if (data.data != NULL)
+ free(data.data);
+
+ /* Create the new data item. */
+ (void)snprintf(buf, sizeof(buf), "%d", original + increment);
+ data.data = buf;
+ data.size = strlen(buf) + 1;
+
+ /* Store the new value. */
+ switch (ret = dbp->put(dbp, tid, &key, &data, 0)) {
+ case 0:
+ /* Success: commit the change. */
+ if ((ret = txn_commit(tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "txn_commit");
+ exit (1);
+ }
+ return;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = txn_abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "txn_abort");
+ exit (1);
+ }
+ break;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(
+ dbenv, ret, "dbc->put: %s/%d", color, increment);
+ exit (1);
+ }
+ }
+}
+
+void
+add_cat(DB_ENV *dbenv, DB *db, char *name, ...)
+{
+ va_list ap;
+ DBC *dbc;
+ DBT key, data;
+ DB_TXN *tid;
+ int ret;
+ char *s;
+
+ /* Initialization. */
+ memset(&key, 0, sizeof(key));
+ memset(&data, 0, sizeof(data));
+ key.data = name;
+ key.size = strlen(name);
+
+retry: /* Begin the transaction. */
+ if ((ret = txn_begin(dbenv, NULL, &tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "txn_begin");
+ exit (1);
+ }
+
+ /* Delete any previously existing item. */
+ switch (ret = db->del(db, tid, &key, 0)) {
+ case 0:
+ case DB_NOTFOUND:
+ break;
+ case DB_LOCK_DEADLOCK:
+ /* Deadlock: retry the operation. */
+ if ((ret = txn_abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "txn_abort");
+ exit (1);
+ }
+ goto retry;
+ default:
+ dbenv->err(dbenv, ret, "db->del: %s", name);
+ exit (1);
+ }
+
+ /* Create a cursor. */
+ if ((ret = db->cursor(db, tid, &dbc, 0)) != 0) {
+ dbenv->err(dbenv, ret, "db->cursor");
+ exit (1);
+ }
+
+ /* Append the items, in order. */
+ va_start(ap, name);
+ while ((s = va_arg(ap, char *)) != NULL) {
+ data.data = s;
+ data.size = strlen(s);
+ switch (ret = dbc->c_put(dbc, &key, &data, DB_KEYLAST)) {
+ case 0:
+ break;
+ case DB_LOCK_DEADLOCK:
+ va_end(ap);
+
+ /* Deadlock: retry the operation. */
+ if ((ret = dbc->c_close(dbc)) != 0) {
+ dbenv->err(
+ dbenv, ret, "dbc->c_close");
+ exit (1);
+ }
+ if ((ret = txn_abort(tid)) != 0) {
+ dbenv->err(dbenv, ret, "txn_abort");
+ exit (1);
+ }
+ goto retry;
+ default:
+ /* Error: run recovery. */
+ dbenv->err(dbenv, ret, "dbc->put: %s/%s", name, s);
+ exit (1);
+ }
+ }
+ va_end(ap);
+
+ /* Success: commit the change. */
+ if ((ret = dbc->c_close(dbc)) != 0) {
+ dbenv->err(dbenv, ret, "dbc->c_close");
+ exit (1);
+ }
+ if ((ret = txn_commit(tid, 0)) != 0) {
+ dbenv->err(dbenv, ret, "txn_commit");
+ exit (1);
+ }
+}
+
+void
+usage()
+{
+ (void)fprintf(stderr, "usage: txnapp\n");
+ exit(1);
+}
diff --git a/db/docs/ref/transapp/tune.html b/db/docs/ref/transapp/tune.html
new file mode 100644
index 000000000..a8bf1b66c
--- /dev/null
+++ b/db/docs/ref/transapp/tune.html
@@ -0,0 +1,92 @@
+<!--Id: tune.so,v 11.8 2001/04/04 22:32:29 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Transaction tuning</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Berkeley DB Transactional Data Store Applications</dl></h3></td>
+<td align=right><a href="../../ref/transapp/reclimit.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/transapp/throughput.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Transaction tuning</h1>
+<p>There are a few different issues to consider when tuning the performance
+of Berkeley DB transactional applications. First, you should review
+<a href="../../ref/am_misc/tune.html">Access method tuning</a>, as the
+tuning issues for access method applications are applicable to
+transactional applications as well. The following are additional tuning
+issues for Berkeley DB transactional applications:
+<p><dl compact>
+<p><dt>access method<dd>Highly concurrent applications should use the Queue access method, where
+possible, as it provides finer-granularity of locking than the other
+access methods. Otherwise, applications usually see better concurrency
+when using the Btree access method than when using either the Hash or
+Recno access methods.
+<p><dt>record numbers<dd>Using record numbers outside of the Queue access method will often slow
+down concurrent applications as they limit the degree of concurrency
+available in the database.
+Using the Recno access method, or the Btree access
+method with retrieval by record number configured can slow applications
+down.
+<p><dt>Btree database size<dd>When using the Btree access method, applications supporting concurrent
+access may see excessive numbers of deadlocks in small databases. There
+are two different approaches to resolving this problem. First, as the
+Btree access method uses page-level locking, decreasing the database
+page size can result in fewer lock conflicts. Second, in the case of
+databases that are cyclically growing and shrinking, turning off reverse
+splits can leave the database with enough pages that there will be fewer
+lock conflicts.
+<p><dt>transactionally protected read operations<dd>Most applications do not need repeatable reads. Performing all read
+operations outside of transactions can often significantly increase
+application throughput. In addition, limiting the lifetime of
+non-transactional cursors will reduce the length of times locks are
+held, thereby improving concurrency.
+<p><dt><a href="../../api_c/db_open.html#DB_DIRTY_READ">DB_DIRTY_READ</a><dd>Consider using the <a href="../../api_c/db_open.html#DB_DIRTY_READ">DB_DIRTY_READ</a> flag for transactions, cursors
+or individual read operations. This flag allows read operations to
+potentially return data which has been modified but not yet committed,
+and can significantly increase application throughput in applications
+that do not require data be guaranteed to be permanent in the database.
+<p><dt><a href="../../api_c/dbc_get.html#DB_RMW">DB_RMW</a><dd>Consider using the <a href="../../api_c/dbc_get.html#DB_RMW">DB_RMW</a> flag to immediate acquire write locks
+when reading data items that will subsequently be modified. Although
+this flag may increase contention (because write locks are held longer
+than they would otherwise be), it may decrease the number of deadlocks
+that occur.
+<p><dt><a href="../../api_c/env_open.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a><dd>By default, transactional commit in Berkeley DB implies durability, that is,
+all committed operations will be present in the database after
+recovery from any application or system failure. For applications not
+requiring that level of certainty, specifying the <a href="../../api_c/env_open.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a>
+flag will often provide a significant performance improvement. In this
+case, the database will still be fully recoverable, but some number of
+committed transactions might be lost after system failure.
+<p><dt>large key/data items<dd>Transactional protections in Berkeley DB are guaranteed by before and after
+physical image logging. This means applications modifying large
+key/data items also write large log records, and, in the case of the
+default transaction commit, threads of control must wait until those
+log records have been flushed to disk. Applications supporting
+concurrent access should try and keep key/data items small wherever
+possible.
+<p><dt>log buffer size<dd>Berkeley DB internally maintains a buffer of log writes. The buffer is
+written to disk at transaction commit, by default, or, whenever it
+is filled. If it is consistently being filled before transaction
+commit, it will be written multiple times per transaction, costing
+application performance. In these cases, increasing the size of the
+log buffer can increase application throughput.
+<p><dt>trickle write<dd>In some applications, the cache is sufficiently active and dirty that
+readers frequently need to write a dirty page in order to have space in
+which to read a new page from the backing database file. You can use
+the <a href="../../utility/db_stat.html">db_stat</a> utility (or the statistics returned by the
+<a href="../../api_c/memp_stat.html">memp_stat</a> function) to see how often this is happening in your
+application's cache. In this case, using a separate thread of control
+and the <a href="../../api_c/memp_trickle.html">memp_trickle</a> interface to trickle-write pages can often
+increase the overall throughput of the application.
+</dl>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/transapp/reclimit.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/transapp/throughput.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/transapp/writetest.cs b/db/docs/ref/transapp/writetest.cs
new file mode 100644
index 000000000..bde092cb6
--- /dev/null
+++ b/db/docs/ref/transapp/writetest.cs
@@ -0,0 +1,100 @@
+/*
+ * writetest --
+ *
+ * Id: writetest.cs,v 10.3 1999/11/19 17:21:06 bostic Exp
+ */
+#include <sys/types.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <unistd.h>
+
+void usage __P((void));
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ struct timeval start_time, end_time;
+ long usecs;
+ int bytes, ch, cnt, fd, ops;
+ char *fname, buf[100 * 1024];
+
+ bytes = 256;
+ fname = "testfile";
+ ops = 1000;
+ while ((ch = getopt(argc, argv, "b:f:o:")) != EOF)
+ switch (ch) {
+ case 'b':
+ if ((bytes = atoi(optarg)) > sizeof(buf)) {
+ fprintf(stderr,
+ "max -b option %d\n", sizeof(buf));
+ exit (1);
+ }
+ break;
+ case 'f':
+ fname = optarg;
+ break;
+ case 'o':
+ if ((ops = atoi(optarg)) <= 0) {
+ fprintf(stderr, "illegal -o option value\n");
+ exit (1);
+ }
+ break;
+ case '?':
+ default:
+ usage();
+ }
+ argc -= optind;
+ argv += optind;
+
+ (void)unlink(fname);
+ if ((fd = open(fname, O_RDWR | O_CREAT, 0666)) == -1) {
+ perror(fname);
+ exit (1);
+ }
+
+ memset(buf, 0, bytes);
+
+ printf("running: %d ops\n", ops);
+
+ (void)gettimeofday(&start_time, NULL);
+ for (cnt = 0; cnt < ops; ++cnt) {
+ if (write(fd, buf, bytes) != bytes) {
+ fprintf(stderr, "write: %s\n", strerror(errno));
+ exit (1);
+ }
+ if (lseek(fd, (off_t)0, SEEK_SET) == -1) {
+ fprintf(stderr, "lseek: %s\n", strerror(errno));
+ exit (1);
+ }
+ if (fsync(fd) != 0) {
+ fprintf(stderr, "fsync: %s\n", strerror(errno));
+ exit (1);
+ }
+ }
+ (void)gettimeofday(&end_time, NULL);
+
+ usecs = (end_time.tv_sec - start_time.tv_sec) * 1000000 +
+ end_time.tv_usec - start_time.tv_usec;
+ printf("Elapsed time: %ld.%06ld seconds\n",
+ usecs / 1000000, usecs % 1000000);
+ printf("%d ops: %7.2f ops per second\n",
+ ops, (float)1000000 * ops/usecs);
+
+ (void)unlink(fname);
+ exit (0);
+}
+
+void
+usage()
+{
+ (void)fprintf(stderr,
+ "usage: testfile [-b bytes] [-f file] [-o ops]\n");
+ exit(1);
+}
diff --git a/db/docs/ref/upgrade.3.3/alloc.html b/db/docs/ref/upgrade.3.3/alloc.html
new file mode 100644
index 000000000..c01fc4de7
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/alloc.html
@@ -0,0 +1,62 @@
+<!--Id: alloc.so,v 1.3 2001/04/19 01:35:04 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: DB-&gt;set_malloc, DB-&gt;set_realloc</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.3/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/rpc.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: DB-&gt;set_malloc, DB-&gt;set_realloc</h1>
+<p>There are two new interfaces in the Berkeley DB 3.3 release:
+<a href="../../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a> and <a href="../../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>. These functions
+allow applications to specify a set of allocation functions for the
+Berkeley DB library to use when allocating memory to be owned by the
+application and when freeing memory that was originally allocated by
+the application.
+<p>The new interfaces affect or replace the following historic
+interfaces:
+<p><dl compact>
+<p><dt>DB-&gt;set_malloc<dd>The DB-&gt;set_malloc interface has been replaced in its entirety.
+Applications using this interface should replace the call with a call
+to <a href="../../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>.
+<p><dt>DB-&gt;set_realloc<dd>The DB-&gt;set_realloc interface has been replaced in its entirety.
+Applications using this interface should replace the call with a call
+to <a href="../../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>.
+<p><dt><a href="../../api_c/db_stat.html">DB-&gt;stat</a><dd>The historic <b>db_malloc</b> argument to the <a href="../../api_c/db_stat.html">DB-&gt;stat</a> function has
+been replaced. Applications using this interface should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to <a href="../../api_c/db_set_alloc.html">DB-&gt;set_alloc</a>.
+<p><dt><a href="../../api_c/lock_stat.html">lock_stat</a><dd>The historic <b>db_malloc</b> argument to the <a href="../../api_c/lock_stat.html">lock_stat</a> function has
+been replaced. Applications using this interface should do as follows:
+if the argument is NULL, it should simply be removed. If
+non-NULL, it should be replaced with a call to <a href="../../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>.
+<p><dt><a href="../../api_c/log_archive.html">log_archive</a><dd>The historic <b>db_malloc</b> argument to the <a href="../../api_c/log_archive.html">log_archive</a> function has
+been replaced. Applications using this interface should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to <a href="../../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>.
+<p><dt><a href="../../api_c/log_stat.html">log_stat</a><dd>The historic <b>db_malloc</b> argument to the <a href="../../api_c/log_stat.html">log_stat</a> function has
+been replaced. Applications using this interface should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to <a href="../../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>.
+<p><dt><a href="../../api_c/memp_stat.html">memp_stat</a><dd>The historic <b>db_malloc</b> argument to the <a href="../../api_c/memp_stat.html">memp_stat</a> function has
+been replaced. Applications using this interface should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to <a href="../../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>.
+<p><dt><a href="../../api_c/txn_stat.html">txn_stat</a><dd>The historic <b>db_malloc</b> argument to the <a href="../../api_c/txn_stat.html">txn_stat</a> function has
+been replaced. Applications using this interface should do as follows:
+if the argument is NULL, it should simply be removed. If non-NULL,
+it should be replaced with a call to <a href="../../api_c/env_set_alloc.html">DBENV-&gt;set_alloc</a>.
+</dl>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.3/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/rpc.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/conflict.html b/db/docs/ref/upgrade.3.3/conflict.html
new file mode 100644
index 000000000..c56d90508
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/conflict.html
@@ -0,0 +1,24 @@
+<!--Id: conflict.so,v 1.3 2001/04/24 16:27:53 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: DB_LOCK_CONFLICT</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.3/rpc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/memp_fget.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: DB_LOCK_CONFLICT</h1>
+<p>The DB_LOCK_CONFLICT flag has been removed from the <a href="../../api_c/lock_detect.html">lock_detect</a> function.
+Applications specifying the DB_LOCK_CONFLICT flag should simply replace
+it with a flags argument of 0.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.3/rpc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/memp_fget.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/disk.html b/db/docs/ref/upgrade.3.3/disk.html
new file mode 100644
index 000000000..7ac191798
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/disk.html
@@ -0,0 +1,24 @@
+<!--Id: disk.so,v 1.1 2001/03/28 13:55:10 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: upgrade requirements</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.3/txn_prepare.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/test/run.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: upgrade requirements</h1>
+<p>No database formats or log file formats changed in the Berkeley DB 3.3 release.
+<p>For further information on upgrading Berkeley DB installations, see
+<a href="../../ref/upgrade/process.html">Upgrading Berkeley DB installations</a>.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.3/txn_prepare.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/test/run.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/intro.html b/db/docs/ref/upgrade.3.3/intro.html
new file mode 100644
index 000000000..a7c8272e0
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/intro.html
@@ -0,0 +1,26 @@
+<!--Id: intro.so,v 1.2 2001/04/03 16:27:59 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: introduction</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.2/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/alloc.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: introduction</h1>
+<p>The following pages describe how to upgrade applications coded against
+the Berkeley DB 3.2 release interfaces to the Berkeley DB 3.3 release interfaces.
+This information does not describe how to upgrade Berkeley DB 1.85 release
+applications.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.2/disk.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/alloc.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/memp_fget.html b/db/docs/ref/upgrade.3.3/memp_fget.html
new file mode 100644
index 000000000..9931745eb
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/memp_fget.html
@@ -0,0 +1,36 @@
+<!--Id: memp_fget.so,v 1.3 2001/04/29 15:51:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: memp_fget, EIO</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.3/conflict.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/txn_prepare.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: memp_fget, EIO</h1>
+<p>Previous releases of Berkeley DB returned the system error EIO when the
+<a href="../../api_c/memp_fget.html">memp_fget</a> interface was called to retrieve a page, the page did
+not exist, and the <a href="../../api_c/memp_fget.html#DB_MPOOL_CREATE">DB_MPOOL_CREATE</a> flag was not set. In the
+3.3 release, the error <a href="../../api_c/memp_fget.html#DB_PAGE_NOTFOUND">DB_PAGE_NOTFOUND</a> is returned instead, to
+allow applications to distinguish between recoverable and
+non-recoverable errors. Applications calling the <a href="../../api_c/memp_fget.html">memp_fget</a>
+interface and checking for a return of EIO should check for
+<a href="../../api_c/memp_fget.html#DB_PAGE_NOTFOUND">DB_PAGE_NOTFOUND</a> instead.
+<p>Previous releases of Berkeley DB treated filesystem I/O failure (the most
+common of which the filesystem running out of space), as a fatal error,
+returning <a href="../../ref/program/errorret.html#DB_RUNRECOVERY">DB_RUNRECOVERY</a>. When a filesystem failure happens in
+the 3.3 release Berkeley DB returns the underlying system error (usually EIO),
+but can continue to run. Applications should abort any enclosing
+transaction when a recoverable system error occurs in order to recover
+from the error.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.3/conflict.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/txn_prepare.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/rpc.html b/db/docs/ref/upgrade.3.3/rpc.html
new file mode 100644
index 000000000..23c2fee10
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/rpc.html
@@ -0,0 +1,28 @@
+<!--Id: rpc.so,v 1.1 2001/04/21 19:36:10 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: DBENV-&gt;set_server</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.3/alloc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/conflict.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: DBENV-&gt;set_server</h1>
+<p>The DBENV-&gt;set_server interface has been deprecated and replaced
+with the <a href="../../api_c/env_set_rpc_server.html">DBENV-&gt;set_rpc_server</a> function. The DBENV-&gt;set_server
+interface will be removed in a future release, and so applications using
+it should convert. The DBENV-&gt;set_server interface can be easily
+converted to the <a href="../../api_c/env_set_rpc_server.html">DBENV-&gt;set_rpc_server</a> function by changing the name,
+and specifying a NULL for the added argument, second in the argument
+list.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.3/alloc.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/conflict.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/toc.html b/db/docs/ref/upgrade.3.3/toc.html
new file mode 100644
index 000000000..ecb874732
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/toc.html
@@ -0,0 +1,23 @@
+<!--Id: toc.so,v 1.6 2001/04/29 15:51:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB: Upgrading Berkeley DB 3.2.X applications to Berkeley DB 3.3</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<h1 align=center>Upgrading Berkeley DB 3.2.X applications to Berkeley DB 3.3</h1>
+<ol>
+<li><a href="intro.html">Release 3.3: introduction</a>
+<li><a href="alloc.html">Release 3.3: DB-&gt;set_malloc, DB-&gt;set_realloc</a>
+<li><a href="rpc.html">Release 3.3: DBENV-&gt;set_server</a>
+<li><a href="conflict.html">Release 3.3: DB_LOCK_CONFLICT</a>
+<li><a href="memp_fget.html">Release 3.3: memp_fget, EIO</a>
+<li><a href="txn_prepare.html">Release 3.3: txn_prepare</a>
+<li><a href="disk.html">Release 3.3: upgrade requirements</a>
+</ol>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/upgrade.3.3/txn_prepare.html b/db/docs/ref/upgrade.3.3/txn_prepare.html
new file mode 100644
index 000000000..5fe3cd07e
--- /dev/null
+++ b/db/docs/ref/upgrade.3.3/txn_prepare.html
@@ -0,0 +1,26 @@
+<!--Id: txn_prepare.so,v 1.5 2001/04/24 16:27:54 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Release 3.3: txn_prepare</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Upgrading Berkeley DB Applications</dl></h3></td>
+<td align=right><a href="../../ref/upgrade.3.3/memp_fget.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/disk.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Release 3.3: txn_prepare</h1>
+<p>An additional argument has been added to the <a href="../../api_c/txn_prepare.html">txn_prepare</a> function. If
+your application calls the <a href="../../api_c/txn_prepare.html">txn_prepare</a> interface (that is, is
+performing two-phase commit using Berkeley DB as a local resource manager),
+see <a href="../../ref/xa/intro.html">Distributed Transactions</a> for more
+information.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/upgrade.3.3/memp_fget.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/upgrade.3.3/disk.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/xa/build.html b/db/docs/ref/xa/build.html
new file mode 100644
index 000000000..4ceb54385
--- /dev/null
+++ b/db/docs/ref/xa/build.html
@@ -0,0 +1,172 @@
+<!--Id: build.so,v 10.7 2001/05/03 14:22:07 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Building a Global Transaction Manager</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Distributed Transactions</dl></h3></td>
+<td align=right><a href="../../ref/xa/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/xa_intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Building a Global Transaction Manager</h1>
+<p>Managing distributed transactions and using the two-phase commit
+protocol of Berkeley DB from an application requires the application provide
+the functionality of a global transaction manager (GTM). The GTM is
+responsible for the following:
+<p><ul type=disc>
+<li>Communicating with the multiple environments (potentially on separate
+systems).
+<li>Managing the global transaction ID name space.
+<li>Maintaining state information about each distributed transaction.
+<li>Recovering from failures of individual environments.
+<li>Recovering the global transaction state after failure of the global
+transaction manager.
+</ul>
+<h3>Communicating with multiple Berkeley DB environments</h3>
+<p>Two-phase commit is required if an application wants to transaction
+protect Berkeley DB calls across multiple environments. If the environments
+reside on the same machine, the application can communicate with each
+environment through its own address space with no additional complexity.
+If the environments reside on separate machines, the application can
+either use the Berkeley DB RPC server to manage the remote environments or it
+may use its own messaging capability, translating messages on the remote
+machine into calls into the Berkeley DB library (including the recovery
+calls). For some applications, it might be sufficient to use Tcl's
+remote invocation to remote copies of the tclsh utility into which the
+Berkeley DB library has been dynamically loaded.
+<h3>Managing the Global Transaction ID (GID) name space</h3>
+<p>A global transaction is a transaction that spans multiple environments.
+Each global transaction must have a unique transaction ID. This unique
+ID is the global transaction ID (GID). In Berkeley DB, global transaction
+IDs must be represented with the confines of a <a href="../../api_c/txn_prepare.html#DB_XIDDATASIZE">DB_XIDDATASIZE</a>
+size (currently 128 bytes) array. It is the responsibility of the
+global transaction manager to assign GIDs, guarantee their uniqueness,
+and manage the mapping of local transactions to GID. That is, for each
+GID, the GTM should know which local transactions managers participated.
+The Berkeley DB logging system or a Berkeley DB table could be used to record this
+information.
+<h3>Maintaining state for each distributed transaction.</h3>
+<p>In addition to knowing which local environments participate in each
+global transaction, the GTM must also know the state of each active
+global transaction. As soon as a transaction becomes distributed (that
+is, a second environment participates), the GTM must record the
+existence of the global transaction and all participants (whether this
+must reside on stable storage or not depends on the exact configuration
+of the system). As new environments participate, the GTM must keep this
+information up to date.
+<p>When the GTM is ready to begin commit processing, it should issue
+<a href="../../api_c/txn_prepare.html">txn_prepare</a> calls to each participating environment, indicating
+the GID of the global transaction. Once all the participants have
+successfully prepared, then the GTM must record that the global
+transaction will be committed. This record should go to stable
+storage. Once written to stable storage, the GTM can send
+<a href="../../api_c/txn_commit.html">txn_commit</a> requests to each participating environment. Once
+all environments have successfully completed the commit, the GTM can
+either record the successful commit or can somehow "forget" the global
+transaction.
+<p>If nested transactions are used (that is, the <b>parent</b> parameter
+is specified to <a href="../../api_c/txn_begin.html">txn_begin</a>), no <a href="../../api_c/txn_prepare.html">txn_prepare</a> call should
+be made on behalf of any child transaction. Only the ultimate parent
+should even issue a <a href="../../api_c/txn_prepare.html">txn_prepare</a>.
+<p>Should any participant fail to prepare, then the GTM must abort the
+global transaction. The fact that the transaction is going to be
+aborted should be written to stable storage. Once written, the GTM can
+then issue <a href="../../api_c/txn_abort.html">txn_abort</a> requests to each environment. When all
+aborts have returned successfully, the GTM can either record the
+successful abort or "forget" the global transaction.
+<p>In summary, for each transaction, the GTM must maintain the following:
+<p><ul type=disc>
+<li>A list of participating environments
+<li>The current state of each transaction (pre-prepare, preparing,
+committing, aborting, done)
+</ul>
+<h3>Recovering from the failure of a single environment</h3>
+<p>If a single environment fails, there is no need to bring down or recover
+other environments (the only exception to this is if all environments
+are managed in the same application address space and there is a risk
+that the failure of the environment corrupted other environments).
+Instead, once the failing environment comes back up, it should be
+recovered (that is, conventional recovery, via <a href="../../utility/db_recover.html">db_recover</a> or by
+specifying the <a href="../../api_c/env_open.html#DB_RECOVER">DB_RECOVER</a> flag to <a href="../../api_c/env_open.html">DBENV-&gt;open</a> should be
+run).
+If the <a href="../../utility/db_recover.html">db_recover</a> utility is used, then the -e option must be
+specified. In this case, the application will almost certainly want
+to specify environmental parameters via a DB_CONFIG file in the
+environment's home directory, so that <a href="../../utility/db_recover.html">db_recover</a> can create
+an appropriately configured environment.
+The GTM should then issue a <a href="../../api_c/txn_recover.html">txn_recover</a> call to the environment.
+This call will return a list of prepared, but not yet committed or
+aborted transactions. For each transaction, the GTM should look up the
+GID in its local store to determine if the transaction should commit or
+abort.
+If the GTM is running in a system with multiple GTMs, it is possible that
+some of the transactions returned via <a href="../../api_c/txn_recover.html">txn_recover</a> do not belong
+to the current environment. The GTM should detect this and call
+<a href="../../api_c/txn_discard.html">txn_discard</a> on each such transaction handle.
+Furthermore, it is important to note that the environment does not
+retain information about which GTM has issued <a href="../../api_c/txn_recover.html">txn_recover</a>
+operations. Therefore, each GTM should issue all its <a href="../../api_c/txn_recover.html">txn_recover</a>
+calls, before another GTM issues its calls. If the calls are interleaved,
+each GTM may not get a complete and consistent set of transactions.
+The simplest way to enforce this is for each GTM to make sure it can
+receive all its outstanding transactions in a single <a href="../../api_c/txn_recover.html">txn_recover</a>
+call. The maximum number of possible outstanding transactions is bounded
+by the maximum number of active transactions in the environment. This
+number can be obtained by using the <a href="../../api_c/txn_stat.html">txn_stat</a> interface or the
+<a href="../../utility/db_stat.html">db_stat</a> utility.
+<p>The newly recovered environment will forbid any new transactions from
+being started until the prepared but not yet committed/aborted
+transactions have been resolved. In the multiple GTM case, this means
+that all GTMs must recover before any GTM can begin issuing new transactions.
+<p>Because Berkeley DB flushed both commit and abort records to disk for
+two-phase transaction, once the global transaction has either committed
+or aborted, no action will be necessary in any environment. If local
+environments are running with the <a href="../../api_c/env_open.html#DB_TXN_NOSYNC">DB_TXN_NOSYNC</a> option (that
+is, is not writing the log synchronously at commit time), then it is
+possible that a commit or abort operation may not have been written in
+the environment. In this case, the GTM must always have a record of
+completed transactions to determine if prepared transactions should be
+committed or aborted.
+<h3>Recovering from GTM failure</h3>
+<p>If the GTM fails, it must first recover its local state. Assuming the
+GTM uses Berkeley DB tables to maintain state, it should run
+<a href="../../utility/db_recover.html">db_recover</a> (or the <a href="../../api_c/env_open.html#DB_RECOVER">DB_RECOVER</a> option to
+<a href="../../api_c/env_open.html">DBENV-&gt;open</a>) upon startup. Once the GTM is back up and running,
+it needs to review all its outstanding global transactions, that is all
+transaction which are recorded, but not yet committed or aborted.
+<p>Any global transactions which have not yet reached the prepare phase
+should be aborted. If these transactions were on remote systems, the
+remote systems should eventually time them out and abort them. If these
+transactions are on the local system, we assume they crashed and were
+aborted as part of GTM startup.
+<p>The GTM must then identify all environments which need to have their
+<a href="../../api_c/txn_recover.html">txn_recover</a> interface called. This includes all environments
+that participate in any transaction that is in the preparing, aborting,
+or committing state. For each environment, the GTM should issue a
+<a href="../../api_c/txn_recover.html">txn_recover</a> call. Once each environment has responded, the GTM
+can determine the fate of each transaction. The correct behavior is
+defined depending on the state of the global transaction according to
+the table below.
+<p><dl compact>
+<p><dt>preparing<dd>if all participating environments return the transaction in the prepared
+but not yet committed/aborted state, then the GTM should commit the
+transaction. If any participating environment fails to return it, then
+the GTM should issue an abort to all environments that did return it.
+<p><dt>committing<dd>the GTM should send a commit to any environment that returned this
+transaction in its list of prepared but not yet committed/aborted
+transactions.
+<p><dt>aborting<dd>the GTM should send an abort to any environment that returned this
+transaction in its list of prepared but not yet committed/aborted
+transactions.
+</dl>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/xa/intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/xa_intro.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/xa/xa_config.html b/db/docs/ref/xa/xa_config.html
new file mode 100644
index 000000000..94b46a21c
--- /dev/null
+++ b/db/docs/ref/xa/xa_config.html
@@ -0,0 +1,80 @@
+<!--Id: xa_config.so,v 10.21 2001/03/30 20:34:54 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: Configuring Berkeley DB with the Tuxedo System</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Distributed Transactions</dl></h3></td>
+<td align=right><a href="../../ref/xa/xa_intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>Configuring Berkeley DB with the Tuxedo System</h1>
+<p>This information assumes that you have already installed the Berkeley DB
+library.
+<p>First, you must update the resource manager file in Tuxedo. For the
+purposes of this discussion, assume that the Tuxedo home directory is in
+<p><blockquote><pre>/home/tuxedo</pre></blockquote>
+In that case, the resource manager file will be located in
+<p><blockquote><pre>/home/tuxedo/udataobj/RM</pre></blockquote>
+Edit the resource manager file, adding the line
+<p><blockquote><pre>BERKELEY-DB:db_xa_switch:-L${DB_INSTALL}/lib -ldb \
+ -lsocket -ldl -lm</pre></blockquote>
+<p>where ${DB_INSTALLHOME} is the directory into which you installed the Berkeley DB
+library.
+<p><b>Note that the previous load options are for a Sun Microsystems
+Solaris 5.6 Sparc installation of Tuxedo, and may not be correct for
+your system.</b>
+<p>Next, you must build the transaction manager server. To do this, use the
+Tuxedo <b>buildtms</b>(1) utility. The buildtms utility will create
+the Berkeley-DB resource manager in the directory from which it was run.
+The parameters to buildtms should be
+<p><blockquote><pre>buildtms -v -o DBRM -r BERKELEY-DB</pre></blockquote>
+<p>This will create an executable transaction manager server, DBRM, which is
+called by Tuxedo to process begins, commits, and aborts.
+<p>Finally, you must make sure that your TUXCONFIG environment variable
+identifies an ubbconfig file that properly identifies your resource
+managers. In the GROUPS section of the ubb file, you should identify the
+group's LMID and GRPNO, as well as the transaction manager server name
+"TMSNAME=DBRM." You must also specify the OPENINFO parameter, setting it
+equal to the string
+<p><blockquote><pre>rm_name:dir</pre></blockquote>
+<p>where rm_name is the resource name specified in the RM file (that is,
+BERKELEY-DB) and dir is the directory for the Berkeley DB home environment
+(see <a href="../../api_c/env_open.html">DBENV-&gt;open</a> for a discussion of Berkeley DB environments).
+<p>Because Tuxedo resource manager startup accepts only a single string
+for configuration, any environment customization that might have been
+done via the config parameter to <a href="../../api_c/env_open.html">DBENV-&gt;open</a> must instead be done
+by placing a <a href="../../ref/env/naming.html#DB_CONFIG">DB_CONFIG</a> file in the Berkeley DB environment directory.
+See <a href="../../ref/env/naming.html">Berkeley DB File Naming</a> for further
+information.
+<p>Consider the following configuration. We have built a transaction
+manager server, as described previously. We want the Berkeley DB environment
+to be <b>/home/dbhome</b>, our database files to be maintained in
+<b>/home/datafiles</b>, our log files to be maintained in
+<b>/home/log</b>, and we want a duplexed server.
+<p>The GROUPS section of the ubb file might look like the following
+<p><blockquote><pre>group_tm LMID=myname GRPNO=1 TMSNAME=DBRM TMSCOUNT=2 \
+ OPENINFO="BERKELEY-DB:/home/dbhome"</pre></blockquote>
+<p>There would be a <a href="../../ref/env/naming.html#DB_CONFIG">DB_CONFIG</a> configuration file in the directory
+<b>/home/dbhome</b> that contained the following two lines:
+<p><blockquote><pre>DB_DATA_DIR /home/datafiles
+DB_LOG_DIR /home/log
+</pre></blockquote>
+<p>Finally, the ubb file must be translated into a binary version using
+Tuxedo's <b>tmloadcf</b>(1) utility, and then the pathname of that
+binary file must be specified as your TUXCONFIG environment variable.
+<p>At this point, your system is properly initialized to use the Berkeley DB
+resource manager.
+<p>See <a href="../../api_c/db_create.html">db_create</a> for further information on accessing data files
+using XA.
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/xa/xa_intro.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/faq.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/ref/xa/xa_intro.html b/db/docs/ref/xa/xa_intro.html
new file mode 100644
index 000000000..553a6e260
--- /dev/null
+++ b/db/docs/ref/xa/xa_intro.html
@@ -0,0 +1,61 @@
+<!--Id: xa_intro.so,v 10.22 2001/03/30 20:34:54 bostic Exp -->
+<!--Copyright 1997-2001 by Sleepycat Software, Inc.-->
+<!--All rights reserved.-->
+<html>
+<head>
+<title>Berkeley DB Reference Guide: XA Introduction</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+ <a name="2"><!--meow--></a> <a name="3"><!--meow--></a>
+<table width="100%"><tr valign=top>
+<td><h3><dl><dt>Berkeley DB Reference Guide:<dd>Distributed Transactions</dl></h3></td>
+<td align=right><a href="../../ref/xa/build.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/xa_config.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p>
+<h1 align=center>XA Introduction</h1>
+<p>Berkeley DB can be used as an XA-compliant resource manager. The XA
+implementation is known to work with the Tuxedo(tm) transaction
+manager.
+<p>The XA support is encapsulated in the resource manager switch
+db_xa_switch, which defines the following functions:
+<p><blockquote><pre>__db_xa_close Close the resource manager.
+__db_xa_commit Commit the specified transaction.
+__db_xa_complete Wait for asynchronous operations to
+ complete.
+__db_xa_end Disassociate the application from a
+ transaction.
+__db_xa_forget Forget about a transaction that was heuristically
+ completed. (Berkeley DB does not support heuristic
+ completion.)
+__db_xa_open Open the resource manager.
+__db_xa_prepare Prepare the specified transaction.
+__db_xa_recover Return a list of prepared, but not yet
+ committed transactions.
+__db_xa_rollback Abort the specified transaction.
+__db_xa_start Associate the application with a
+ transaction.
+</pre></blockquote>
+<p>The Berkeley DB resource manager does not support the following optional
+XA features:
+<p><ul type=disc>
+<li>Asynchronous operations
+<li>Transaction migration
+</ul>
+<p>The Tuxedo System is available from <a href="http://www.beasys.com">BEA Systems, Inc.</a>
+<p>For additional information on Tuxedo, see
+<p><blockquote><i>Building Client/Server Applications Using Tuxedo</i>,
+by Hall (John Wiley & Sons, Inc.).</blockquote>
+<p>For additional information on XA Resource Managers, see
+<p><blockquote>X/Open CAE Specification
+<i>Distributed Transaction Processing: The XA Specification</i>,
+X/Open Document Number: XO/CAE/91/300.</blockquote>
+<p>For additional information on The Tuxedo System, see
+<p><blockquote><i>The Tuxedo System</i>,
+by Andrade, Carges, Dwyer and Felts (Addison Wesley Longman).</blockquote>
+<table width="100%"><tr><td><br></td><td align=right><a href="../../ref/xa/build.html"><img src="../../images/prev.gif" alt="Prev"></a><a href="../../reftoc.html"><img src="../../images/ref.gif" alt="Ref"></a><a href="../../ref/xa/xa_config.html"><img src="../../images/next.gif" alt="Next"></a>
+</td></tr></table>
+<p><font size=1><a href="http://www.sleepycat.com">Copyright Sleepycat Software</a></font>
+</body>
+</html>
diff --git a/db/docs/reftoc.html b/db/docs/reftoc.html
new file mode 100644
index 000000000..e56bba80b
--- /dev/null
+++ b/db/docs/reftoc.html
@@ -0,0 +1,335 @@
+<!--Id: reftoc.html,v 10.186 2001/04/26 20:59:15 bostic Exp -->
+<html>
+<head>
+<title>Berkeley DB Tutorial and Reference Guide (Version: 3.3.4)</title>
+<meta name="description" content="Berkeley DB: An embedded database programmatic toolkit.">
+<meta name="keywords" content="embedded,database,programmatic,toolkit,b+tree,btree,hash,hashing,transaction,transactions,locking,logging,access method,access methods,java,C,C++">
+</head>
+<body bgcolor=white>
+
+<center>
+<h1>Berkeley DB Tutorial and Reference Guide (Version: 3.3.4)</h1>
+</center>
+
+<ol>
+<font size="+1"><li><a name="intro">Introduction</a></font>
+ <ol>
+ <li><a href="ref/intro/data.html">An introduction to data management</a>
+ <li><a href="ref/intro/terrain.html">Mapping the terrain: theory and practice</a>
+ <li><a href="ref/intro/dbis.html">What is Berkeley DB?</a>
+ <li><a href="ref/intro/dbisnot.html">What is Berkeley DB not?</a>
+ <li><a href="ref/intro/need.html">Do you need Berkeley DB?</a>
+ <li><a href="ref/intro/what.html">What other services does Berkeley DB provide?</a>
+ <li><a href="ref/intro/distrib.html">What does the Berkeley DB distribution include?</a>
+ <li><a href="ref/intro/where.html">Where does Berkeley DB run?</a>
+ <li><a href="ref/intro/products.html">Sleepycat Software's Berkeley DB products</a>
+ </ol>
+<font size="+1"><li><a name="simple_tut">A Simple Access Method Tutorial</a></font>
+ <ol>
+ <li><a href="ref/simple_tut/intro.html">Introduction</a>
+ <li><a href="ref/simple_tut/keydata.html">Key/data pairs</a>
+ <li><a href="ref/simple_tut/handles.html">Object handles</a>
+ <li><a href="ref/simple_tut/errors.html">Error returns</a>
+ <li><a href="ref/simple_tut/open.html">Opening a database</a>
+ <li><a href="ref/simple_tut/put.html">Adding elements to a database</a>
+ <li><a href="ref/simple_tut/get.html">Retrieving elements from a database</a>
+ <li><a href="ref/simple_tut/del.html">Removing elements from a database</a>
+ <li><a href="ref/simple_tut/close.html">Closing a database</a>
+ </ol>
+<font size="+1"><li><a name="am_conf">Access Method Configuration</a></font>
+ <ol>
+ <li><a href="ref/am_conf/intro.html">What are the available access methods?</a>
+ <li><a href="ref/am_conf/select.html">Selecting an access method</a>
+ <li><a href="ref/am_conf/logrec.html">Logical record numbers</a>
+ <li>General access method configuration
+ <ol>
+ <li><a href="ref/am_conf/pagesize.html">Selecting a page size</a>
+ <li><a href="ref/am_conf/cachesize.html">Selecting a cache size</a>
+ <li><a href="ref/am_conf/byteorder.html">Selecting a byte order</a>
+ <li><a href="ref/am_conf/dup.html">Duplicate data items</a>
+ <li><a href="ref/am_conf/malloc.html">Non-local memory allocation</a>
+ </ol>
+ <li>Btree access method specific configuration
+ <ol>
+ <li><a href="ref/am_conf/bt_compare.html">Btree comparison</a>
+ <li><a href="ref/am_conf/bt_prefix.html">Btree prefix comparison</a>
+ <li><a href="ref/am_conf/bt_minkey.html">Minimum keys per page</a>
+ <li><a href="ref/am_conf/bt_recnum.html">
+ Retrieving Btree records by logical record number</a>
+ </ol>
+ <li>Hash access method specific configuration
+ <ol>
+ <li><a href="ref/am_conf/h_ffactor.html">Page fill factor</a>
+ <li><a href="ref/am_conf/h_hash.html">Specifying a database hash</a>
+ <li><a href="ref/am_conf/h_nelem.html">Hash table size</a>
+ </ol>
+ <li>Queue and Recno access method specific configuration
+ <ol>
+ <li><a href="ref/am_conf/recno.html">Managing record-based databases</a>
+ <li><a href="ref/am_conf/extentsize.html">Selecting a Queue extent size</a>
+ <li><a href="ref/am_conf/re_source.html">Flat-text backing files</a>
+ <li><a href="ref/am_conf/renumber.html">Logically renumbering records</a>
+ </ol>
+ </ol>
+<font size="+1"><li><a name="am">Access Method Operations</a></font>
+ <ol>
+ <li><a href="ref/am/ops.html">Access method operations</a>
+ <li><a href="ref/am/open.html">Database open</a>
+ <li><a href="ref/am/opensub.html">Opening multiple databases in a single file</a>
+ <li><a href="ref/am/get.html">Retrieving records</a>
+ <li><a href="ref/am/put.html">Storing records</a>
+ <li><a href="ref/am/delete.html">Deleting records</a>
+ <li><a href="ref/am/stat.html">Database statistics</a>
+ <li><a href="ref/am/truncate.html">Database truncation</a>
+ <li><a href="ref/am/upgrade.html">Database upgrade</a>
+ <li><a href="ref/am/verify.html">Database verification and salvage</a>
+ <li><a href="ref/am/sync.html">Flushing the database cache</a>
+ <li><a href="ref/am/close.html">Database close</a>
+ <li><a href="ref/am/second.html">Secondary indices</a>
+ <li><a href="ref/am/cursor.html">Cursor operations</a>
+ <ol>
+ <li><a href="ref/am/curget.html">Retrieving records with a cursor</a>
+ <li><a href="ref/am/curput.html">Storing records with a cursor</a>
+ <li><a href="ref/am/curdel.html">Deleting records with a cursor</a>
+ <li><a href="ref/am/curdup.html">Duplicating a cursor</a>
+ <li><a href="ref/am/join.html">Logical join</a>
+ <li><a href="ref/am/count.html">Data item count</a>
+ <li><a href="ref/am/curclose.html">Cursor close</a>
+ </ol>
+ </ol>
+<font size="+1"><li><a name="am_misc">Access Method Wrapup</a></font>
+ <ol>
+ <li><a href="ref/am_misc/align.html">Data alignment</a>
+ <li><a href="ref/am_misc/partial.html">Partial record storage and retrieval</a>
+ <li><a href="ref/am_misc/perm.html">Retrieved key/data permanence for C/C++</a>
+ <li><a href="ref/am_misc/error.html">Error support</a>
+ <li><a href="ref/am_misc/stability.html">Cursor stability</a>
+ <li><a href="ref/am_misc/dbsizes.html">Database limits</a>
+ <li><a href="ref/am_misc/diskspace.html">Disk space requirements</a>
+ <li><a href="ref/am_misc/tune.html">Access method tuning</a>
+ <li><a href="ref/am_misc/faq.html">Access method FAQ</a>
+ </ol>
+<font size="+1"><li><a name="arch">Berkeley DB Architecture</a></font>
+ <ol>
+ <li><a href="ref/arch/bigpic.html">The big picture</a>
+ <li><a href="ref/arch/progmodel.html">Programming model</a>
+ <li><a href="ref/arch/apis.html">Programmatic APIs</a>
+ <li><a href="ref/arch/script.html">Scripting languages</a>
+ <li><a href="ref/arch/utilities.html">Supporting utilities</a>
+ </ol>
+<font size="+1"><li><a name="env">The Berkeley DB Environment</a></font>
+ <ol>
+ <li><a href="ref/env/intro.html">Introduction</a>
+ <li><a href="ref/env/create.html">Creating a database environment</a>
+ <li><a href="ref/env/naming.html">File naming</a>
+ <li><a href="ref/env/security.html">Security</a>
+ <li><a href="ref/env/region.html">Shared memory regions</a>
+ <li><a href="ref/env/remote.html">Remote filesystems</a>
+ <li><a href="ref/env/open.html">Opening databases within the environment</a>
+ <li><a href="ref/env/error.html">Error support</a>
+ <li><a href="ref/env/faq.html">Environment FAQ</a>
+ </ol>
+<font size="+1"><li><a name="cam">Berkeley DB Concurrent Data Store Applications</a></font>
+ <ol>
+ <li><a href="ref/cam/intro.html">Berkeley DB Concurrent Data Store applications</a>
+ </ol>
+<font size="+1"><li><a name="transapp">Berkeley DB Transactional Data Store Applications</a></font>
+ <ol>
+ <li><a href="ref/transapp/intro.html">Berkeley DB Transactional Data Store applications</a>
+ <li><a href="ref/transapp/why.html">Why transactions?</a>
+ <li><a href="ref/transapp/term.html">Terminology</a>
+ <li><a href="ref/transapp/app.html">Application structure</a>
+ <li><a href="ref/transapp/env_open.html">Opening the environment</a>
+ <li><a href="ref/transapp/data_open.html">Opening the databases</a>
+ <li><a href="ref/transapp/put.html">Recoverability and deadlock avoidance</a>
+ <li><a href="ref/transapp/inc.html">Atomicity</a>
+ <li><a href="ref/transapp/read.html">Repeatable reads</a>
+ <li><a href="ref/transapp/cursor.html">Transactional cursors</a>
+ <li><a href="ref/transapp/nested.html">Nested transactions</a>
+ <li><a href="ref/transapp/admin.html">Environment infrastructure</a>
+ <li><a href="ref/transapp/deadlock.html">Deadlock detection</a>
+ <li><a href="ref/transapp/checkpoint.html">Checkpoints</a>
+ <li><a href="ref/transapp/archival.html">Database and log file archival</a>
+ <li><a href="ref/transapp/logfile.html">Log file removal</a>
+ <li><a href="ref/transapp/recovery.html">Recovery procedures</a>
+ <li><a href="ref/transapp/filesys.html">Recovery and filesystem operations</a>
+ <li><a href="ref/transapp/reclimit.html">Berkeley DB recoverability</a>
+ <li><a href="ref/transapp/tune.html">Transaction tuning</a>
+ <li><a href="ref/transapp/throughput.html">Transaction throughput</a>
+ </ol>
+<font size="+1"><li><a name="xa">Distributed Transactions</a></font>
+ <ol>
+ <li><a href="ref/xa/intro.html">Introduction</a>
+ <li><a href="ref/xa/build.html">Building a Global Transaction Manager</a>
+ <li><a href="ref/xa/xa_intro.html">XA Introduction</a>
+ <li><a href="ref/xa/xa_config.html">Configuring Berkeley DB with the Tuxedo System</a>
+ <li><a href="ref/xa/faq.html">Frequently Asked Questions</a>
+ </ol>
+<font size="+1"><li><a name="program">Programmer Notes</a></font>
+ <ol>
+ <li><a href="ref/program/appsignals.html">Application signal handling</a>
+ <li><a href="ref/program/errorret.html">Error returns to applications</a>
+ <li><a href="ref/program/environ.html">Environmental variables</a>
+ <li><a href="ref/program/mt.html">Multithreaded applications</a>
+ <li><a href="ref/program/scope.html">Berkeley DB handles</a>
+ <li><a href="ref/program/namespace.html">Name spaces</a>
+ <li><a href="ref/program/copy.html">Copying databases</a>
+ <li><a href="ref/program/version.html">Library version information</a>
+ <li><a href="ref/program/compatible.html">Compatibility with historic UNIX interfaces</a>
+ <li><a href="ref/program/recimp.html">Recovery implementation</a>
+ <li><a href="ref/program/extending.html">Application-specific logging and recovery</a>
+ <li><a href="ref/program/runtime.html">Run-time configuration</a>
+ </ol>
+<font size="+1"><li><a name="lock">The Locking Subsystem</a></font>
+ <ol>
+ <li><a href="ref/lock/intro.html">Berkeley DB and locking</a>
+ <li><a href="ref/lock/page.html">Page locks</a>
+ <ol>
+ <li><a href="ref/lock/stdmode.html">Standard lock modes</a>
+ <li><a href="ref/lock/notxn.html">Locking without transactions</a>
+ <li><a href="ref/lock/twopl.html">Locking with transactions: two-phase locking</a>
+ </ol>
+ <li><a href="ref/lock/am_conv.html">Access method locking conventions</a>
+ <li><a href="ref/lock/cam_conv.html">Berkeley DB Concurrent Data Store locking conventions</a>
+ <li><a href="ref/lock/dead.html">Deadlocks and deadlock avoidance</a>
+ <li><a href="ref/lock/config.html">Configuring locking</a>
+ <li><a href="ref/lock/max.html">Configuring locking: sizing the system</a>
+ <li><a href="ref/lock/nondb.html">Locking and non-Berkeley DB applications</a>
+ </ol>
+<font size="+1"><li><a name="log">The Logging Subsystem</a></font>
+ <ol>
+ <li><a href="ref/log/intro.html">Berkeley DB and logging</a>
+ <li><a href="ref/log/config.html">Configuring logging</a>
+ <li><a href="ref/log/limits.html">Log file limits</a>
+ </ol>
+<font size="+1"><li><a name="mp">The Memory Pool Subsystem</a></font>
+ <ol>
+ <li><a href="ref/mp/intro.html">Berkeley DB and the memory pool</a>
+ <li><a href="ref/mp/config.html">Configuring the memory pool</a>
+ </ol>
+<font size="+1"><li><a name="txn">The Transaction Subsystem</a></font>
+ <ol>
+ <li><a href="ref/txn/intro.html">Berkeley DB and transactions</a>
+ <li><a href="ref/txn/limits.html">Transaction limits</a>
+ <li><a href="ref/txn/config.html">Configuring transactions</a>
+ <li><a href="ref/txn/other.html">Transactions and non-Berkeley DB applications</a>
+ </ol>
+<font size="+1"><li><a name="rpc">RPC Client/Server</a></font>
+ <ol>
+ <li><a href="ref/rpc/intro.html">Introduction</a>
+ <li><a href="ref/rpc/client.html">Client program</a>
+ <li><a href="ref/rpc/server.html">Server program</a>
+ </ol>
+<font size="+1"><li><a name="java">Java API</a></font>
+ <ol>
+ <li><a href="ref/java/conf.html">Configuration</a>
+ <li><a href="ref/java/compat.html">Compatibility</a>
+ <li><a href="ref/java/program.html">Java programming notes</a>
+ <li><a href="ref/java/faq.html">Java FAQ</a>
+ </ol>
+<font size="+1"><li><a name="perl">Perl API</a></font>
+ <ol>
+ <li><a href="ref/perl/intro.html">Using Berkeley DB with Perl</a>
+ </ol>
+<font size="+1"><li><a name="tcl">Tcl API</a></font>
+ <ol>
+ <li><a href="ref/tcl/intro.html">Loading Berkeley DB with Tcl</a>
+ <li><a href="ref/tcl/using.html">Using Berkeley DB with Tcl</a>
+ <li><a href="ref/tcl/program.html">Tcl API programming notes</a>
+ <li><a href="ref/tcl/error.html">Tcl error handling</a>
+ <li><a href="ref/tcl/faq.html">Tcl FAQ</a>
+ </ol>
+<font size="+1"><li><a name="sendmail">Sendmail</a></font>
+ <ol>
+ <li><a href="ref/sendmail/intro.html">Using Berkeley DB with Sendmail</a>
+ </ol>
+<font size="+1"><li><a name="dumpload">Dumping and Reloading Databases</a></font>
+ <ol>
+ <li><a href="ref/dumpload/utility.html">The db_dump and db_load utilities</a>
+ <li><a href="ref/dumpload/format.html">Dump output formats</a>
+ <li><a href="ref/dumpload/text.html">Loading text into databases</a>
+ </ol>
+<font size="+1"><li><a name="install">System Installation Notes</a></font>
+ <ol>
+ <li><a href="ref/install/file.html">File utility /etc/magic information</a>
+ <li><a href="ref/install/multiple.html">Building with multiple versions of Berkeley DB</a>
+ <li><a href="ref/install/rpm.html">Building RPM distribution packages</a>
+ </ol>
+<font size="+1"><li><a name="debug">Debugging Applications</a></font>
+ <ol>
+ <li><a href="ref/debug/intro.html">Introduction</a>
+ <li><a href="ref/debug/compile.html">Compile-time configuration</a>
+ <li><a href="ref/debug/runtime.html">Run-time error information</a>
+ <li><a href="ref/debug/printlog.html">Reviewing Berkeley DB log files</a>
+ <li><a href="ref/debug/common.html">Common errors</a>
+ </ol>
+<font size="+1"><li><a name="build_unix">Berkeley DB for UNIX and QNX systems</a></font>
+ <ol>
+ <li><a href="ref/build_unix/intro.html">Building for UNIX</a>
+ <li><a href="ref/build_unix/conf.html">Configuring Berkeley DB</a>
+ <li><a href="ref/build_unix/flags.html">Changing compile or load options</a>
+ <li><a href="ref/build_unix/install.html">Installing Berkeley DB</a>
+ <li><a href="ref/build_unix/shlib.html">Dynamic shared libraries</a>
+ <li><a href="ref/build_unix/test.html">Running the test suite under UNIX</a>
+ <li><a href="ref/build_unix/notes.html">Architecture independent FAQ</a>
+ <li>Architecture specific FAQs
+ <ol>
+ <li><a href="ref/build_unix/aix.html">AIX</a>
+ <li><a href="ref/build_unix/embedix.html">Embedix</a>
+ <li><a href="ref/build_unix/freebsd.html">FreeBSD</a>
+ <li><a href="ref/build_unix/hpux.html">HP-UX</a>
+ <li><a href="ref/build_unix/irix.html">IRIX</a>
+ <li><a href="ref/build_unix/linux.html">Linux</a>
+ <li><a href="ref/build_unix/osf1.html">OSF/1</a>
+ <li><a href="ref/build_unix/qnx.html">QNX</a>
+ <li><a href="ref/build_unix/sco.html">SCO</a>
+ <li><a href="ref/build_unix/solaris.html">Solaris</a>
+ <li><a href="ref/build_unix/sunos.html">SunOS</a>
+ <li><a href="ref/build_unix/ultrix.html">Ultrix</a>
+ </ol>
+ </ol>
+<font size="+1"><li><a name="build_win">Berkeley DB for Win32 platforms</a></font>
+ <ol>
+ <li><a href="ref/build_win/intro.html">Building for Win32</a>
+ <li><a href="ref/build_win/test.html">Running the test suite under Windows</a>
+ <li><a href="ref/build_win/notes.html">Windows notes</a>
+ <li><a href="ref/build_win/faq.html">Windows FAQ</a>
+ </ol>
+<font size="+1"><li><a name="build_vxworks">Berkeley DB for VxWorks systems</a></font>
+ <ol>
+ <li><a href="ref/build_vxworks/intro.html">Building for VxWorks</a>
+ <li><a href="ref/build_vxworks/notes.html">VxWorks notes</a>
+ <li><a href="ref/build_vxworks/faq.html">VxWorks FAQ</a>
+ </ol>
+<font size="+1"><li><a name="upgrade">Upgrading Berkeley DB Applications</a></font>
+ <ol>
+ <li><a href="ref/upgrade/process.html">
+ Upgrading Berkeley DB installations</a>
+ <li><a href="ref/upgrade.2.0/toc.html">
+ Upgrading Berkeley DB 1.XX applications to Berkeley DB 2.0</a>
+ <li><a href="ref/upgrade.3.0/toc.html">
+ Upgrading Berkeley DB 2.X.X applications to Berkeley DB 3.0</a>
+ <li><a href="ref/upgrade.3.1/toc.html">
+ Upgrading Berkeley DB 3.0.X applications to Berkeley DB 3.1</a>
+ <li><a href="ref/upgrade.3.2/toc.html">
+ Upgrading Berkeley DB 3.1.X applications to Berkeley DB 3.2</a>
+ <li><a href="ref/upgrade.3.3/toc.html">
+ Upgrading Berkeley DB 3.2.X applications to Berkeley DB 3.3</a>
+ </ol>
+<font size="+1"><li><a name="test">Test Suite</a></font>
+ <ol>
+ <li><a href="ref/test/run.html">Running the test suite</a>
+ <li><a href="ref/test/faq.html">Test suite FAQ</a>
+ </ol>
+<font size="+1"><li><a name="distrib">Distribution</a></font>
+ <ol>
+ <li><a href="ref/distrib/layout.html">Source code layout</a>
+ </ol>
+<font size="+1"><li><a name="refs">Additional References</a></font>
+ <ol>
+ <li><a href="ref/refs/refs.html">Additional references</a>
+ </ol>
+</ol>
+
+</body>
+</html>
diff --git a/db/include/cxx_common.h b/db/include/cxx_common.h
new file mode 100644
index 000000000..45b21c6cb
--- /dev/null
+++ b/db/include/cxx_common.h
@@ -0,0 +1,45 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: cxx_common.h,v 11.1 2001/04/29 06:44:05 dda Exp
+ */
+
+#ifndef _CXX_COMMON_H_
+#define _CXX_COMMON_H_
+
+//
+// Common definitions used by all of Berkeley DB's C++ include files.
+//
+
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+//
+// Mechanisms for declaring classes
+//
+
+//
+// Every class defined in this file has an _exported next to the class name.
+// This is needed for WinTel machines so that the class methods can
+// be exported or imported in a DLL as appropriate. Users of the DLL
+// use the define DB_USE_DLL. When the DLL is built, DB_CREATE_DLL
+// must be defined.
+//
+#if defined(_MSC_VER)
+
+# if defined(DB_CREATE_DLL)
+# define _exported __declspec(dllexport) // creator of dll
+# elif defined(DB_USE_DLL)
+# define _exported __declspec(dllimport) // user of dll
+# else
+# define _exported // static lib creator or user
+# endif
+
+#else /* _MSC_VER */
+
+# define _exported
+
+#endif /* _MSC_VER */
+#endif /* !_CXX_COMMON_H_ */
diff --git a/db/include/cxx_except.h b/db/include/cxx_except.h
new file mode 100644
index 000000000..d19d9715b
--- /dev/null
+++ b/db/include/cxx_except.h
@@ -0,0 +1,78 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: cxx_except.h,v 11.2 2001/05/08 18:58:45 bostic Exp
+ */
+
+#ifndef _CXX_EXCEPT_H_
+#define _CXX_EXCEPT_H_
+
+#include "cxx_common.h"
+
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+//
+// Forward declarations
+//
+
+class DbException; // forward
+class DbMemoryException; // forward
+class Dbt; // forward
+
+////////////////////////////////////////////////////////////////
+////////////////////////////////////////////////////////////////
+//
+// Exception classes
+//
+
+// Almost any error in the DB library throws a DbException.
+// Every exception should be considered an abnormality
+// (e.g. bug, misuse of DB, file system error).
+//
+// NOTE: We would like to inherit from class exception and
+// let it handle what(), but there are
+// MSVC++ problems when <exception> is included.
+//
+class _exported DbException
+{
+public:
+ virtual ~DbException();
+ DbException(int err);
+ DbException(const char *description);
+ DbException(const char *prefix, int err);
+ DbException(const char *prefix1, const char *prefix2, int err);
+ int get_errno() const;
+ virtual const char *what() const;
+
+ DbException(const DbException &);
+ DbException &operator = (const DbException &);
+
+private:
+ char *what_;
+ int err_; // errno
+};
+
+//
+// A specific sort of exception that occurs when
+// user declared memory is insufficient in a Dbt.
+//
+class _exported DbMemoryException : public DbException
+{
+public:
+ virtual ~DbMemoryException();
+ DbMemoryException(Dbt *dbt);
+ DbMemoryException(const char *description);
+ DbMemoryException(const char *prefix, Dbt *dbt);
+ DbMemoryException(const char *prefix1, const char *prefix2, Dbt *dbt);
+ Dbt *get_dbt() const;
+
+ DbMemoryException(const DbMemoryException &);
+ DbMemoryException &operator = (const DbMemoryException &);
+
+private:
+ Dbt *dbt_;
+};
+#endif /* !_CXX_EXCEPT_H_ */
diff --git a/db/include/db.in b/db/include/db.in
new file mode 100644
index 000000000..26455cd79
--- /dev/null
+++ b/db/include/db.in
@@ -0,0 +1,1388 @@
+/*
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: db.in,v 11.158 2001/05/08 18:54:39 bostic Exp
+ */
+
+#ifndef _DB_H_
+#define _DB_H_
+
+#ifndef __NO_SYSTEM_INCLUDES
+#include <sys/types.h>
+
+#include <stdio.h>
+#endif
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*
+ * XXX
+ * Handle function prototypes and the keyword "const". This steps on name
+ * space that DB doesn't control, but all of the other solutions are worse.
+ *
+ * XXX
+ * While Microsoft's compiler is ANSI C compliant, it doesn't have _STDC_
+ * defined by default, you specify a command line flag or #pragma to turn
+ * it on. Don't do that, however, because some of Microsoft's own header
+ * files won't compile.
+ */
+#undef __P
+#if defined(__STDC__) || defined(__cplusplus) || defined(_MSC_VER)
+#define __P(protos) protos /* ANSI C prototypes */
+#else
+#define const
+#define __P(protos) () /* K&R C preprocessor */
+#endif
+
+/*
+ * !!!
+ * DB needs basic information about specifically sized types. If they're
+ * not provided by the system, typedef them here.
+ *
+ * We protect them against multiple inclusion using __BIT_TYPES_DEFINED__,
+ * as does BIND and Kerberos, since we don't know for sure what #include
+ * files the user is using.
+ *
+ * !!!
+ * We also provide the standard u_int, u_long etc., if they're not provided
+ * by the system.
+ */
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+@u_int8_decl@
+@int16_decl@
+@u_int16_decl@
+@int32_decl@
+@u_int32_decl@
+#endif
+
+@u_char_decl@
+@u_short_decl@
+@u_int_decl@
+@u_long_decl@
+@ssize_t_decl@
+
+#define DB_VERSION_MAJOR @DB_VERSION_MAJOR@
+#define DB_VERSION_MINOR @DB_VERSION_MINOR@
+#define DB_VERSION_PATCH @DB_VERSION_PATCH@
+#define DB_VERSION_STRING @DB_VERSION_STRING@
+
+typedef u_int32_t db_pgno_t; /* Page number type. */
+typedef u_int16_t db_indx_t; /* Page offset type. */
+#define DB_MAX_PAGES 0xffffffff /* >= # of pages in a file */
+
+typedef u_int32_t db_recno_t; /* Record number type. */
+#define DB_MAX_RECORDS 0xffffffff /* >= # of records in a tree */
+
+/* Forward structure declarations, so applications get type checking. */
+struct __db; typedef struct __db DB;
+struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT;
+struct __db_dbt; typedef struct __db_dbt DBT;
+struct __db_env; typedef struct __db_env DB_ENV;
+struct __db_h_stat; typedef struct __db_h_stat DB_HASH_STAT;
+struct __db_ilock; typedef struct __db_ilock DB_LOCK_ILOCK;
+struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT;
+struct __db_lock_u; typedef struct __db_lock_u DB_LOCK;
+struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ;
+struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT;
+struct __db_lsn; typedef struct __db_lsn DB_LSN;
+struct __db_mpool_finfo;typedef struct __db_mpool_finfo DB_MPOOL_FINFO;
+struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT;
+struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT;
+struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE;
+struct __db_qam_stat; typedef struct __db_qam_stat DB_QUEUE_STAT;
+struct __db_txn; typedef struct __db_txn DB_TXN;
+struct __db_txn_active; typedef struct __db_txn_active DB_TXN_ACTIVE;
+struct __db_txn_stat; typedef struct __db_txn_stat DB_TXN_STAT;
+struct __dbc; typedef struct __dbc DBC;
+struct __dbc_internal; typedef struct __dbc_internal DBC_INTERNAL;
+struct __fh_t; typedef struct __fh_t DB_FH;
+struct __key_range; typedef struct __key_range DB_KEY_RANGE;
+
+/* Key/data structure -- a Data-Base Thang. */
+struct __db_dbt {
+ /*
+ * data/size must be fields 1 and 2 for DB 1.85 compatibility.
+ */
+ void *data; /* Key/data */
+ u_int32_t size; /* key/data length */
+
+ u_int32_t ulen; /* RO: length of user buffer. */
+ u_int32_t dlen; /* RO: get/put record length. */
+ u_int32_t doff; /* RO: get/put record offset. */
+
+#define DB_DBT_APPMALLOC 0x001 /* Callback allocated memory. */
+#define DB_DBT_ISSET 0x002 /* Lower level calls set value. */
+#define DB_DBT_MALLOC 0x004 /* Return in malloc'd memory. */
+#define DB_DBT_PARTIAL 0x008 /* Partial put/get. */
+#define DB_DBT_REALLOC 0x010 /* Return in realloc'd memory. */
+#define DB_DBT_USERMEM 0x020 /* Return in user's memory. */
+#define DB_DBT_DUPOK 0x040 /* Insert if duplicate. */
+ u_int32_t flags;
+};
+
+/*
+ * Macros for bulk get. Note that wherever we use a DBT *, we explicitly
+ * cast it; this allows the same macros to work with C++ Dbt *'s, as
+ * Dbt is a subclass of struct DBT in C++.
+ */
+#define DB_MULTIPLE_INIT(pointer, dbt) \
+ (pointer = (u_int8_t *)((DBT *)(dbt))->data + \
+ ((DBT *)(dbt))->ulen - sizeof(u_int32_t))
+#define DB_MULTIPLE_NEXT(pointer, dbt, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retdata = (u_int8_t *) \
+ ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ if (retdata == (u_int8_t *)((DBT *)(dbt))->data) \
+ retdata = NULL; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+#define DB_MULTIPLE_KEY_NEXT(pointer, dbt, retkey, retklen, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ retdata = NULL; \
+ retkey = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ retkey = (u_int8_t *) \
+ ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retklen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+#define DB_MULTIPLE_RECNO_NEXT(pointer, dbt, recno, retdata, retdlen) \
+ do { \
+ if (*((u_int32_t *)(pointer)) == (u_int32_t)-1) { \
+ recno = 0; \
+ retdata = NULL; \
+ pointer = NULL; \
+ break; \
+ } \
+ recno = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdata = (u_int8_t *) \
+ ((DBT *)(dbt))->data + *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ retdlen = *(u_int32_t *)(pointer); \
+ (pointer) = (u_int32_t *)(pointer) - 1; \
+ } while (0)
+
+/*
+ * Common flags --
+ * Interfaces which use any of these common flags should never have
+ * interface specific flags in this range.
+ */
+#define DB_CREATE 0x000001 /* Create file as necessary. */
+#define DB_CXX_NO_EXCEPTIONS 0x000002 /* C++: return error values. */
+#define DB_FORCE 0x000004 /* Force (anything). */
+#define DB_NOMMAP 0x000008 /* Don't mmap underlying file. */
+#define DB_RDONLY 0x000010 /* Read-only (O_RDONLY). */
+#define DB_RECOVER 0x000020 /* Run normal recovery. */
+#define DB_THREAD 0x000040 /* Applications are threaded. */
+#define DB_TXN_NOSYNC 0x000080 /* Do not sync log on commit. */
+#define DB_USE_ENVIRON 0x000100 /* Use the environment. */
+#define DB_USE_ENVIRON_ROOT 0x000200 /* Use the environment if root. */
+
+/* This flag is common between the open call and the command calls */
+/* define DB_DIRTY_READ 0x10000000 Support Dirty Read. */
+
+/*
+ * Flags private to db_env_create.
+ */
+#define DB_CLIENT 0x000400 /* Open for a client environment. */
+
+/*
+ * Flags private to db_create.
+ */
+#define DB_XA_CREATE 0x000400 /* Open in an XA environment. */
+
+/*
+ * Flags private to DBENV->open.
+ */
+#define DB_INIT_CDB 0x000400 /* Concurrent Access Methods. */
+#define DB_INIT_LOCK 0x000800 /* Initialize locking. */
+#define DB_INIT_LOG 0x001000 /* Initialize logging. */
+#define DB_INIT_MPOOL 0x002000 /* Initialize mpool. */
+#define DB_INIT_TXN 0x004000 /* Initialize transactions. */
+#define DB_JOINENV 0x008000 /* Initialize all subsystems present. */
+#define DB_LOCKDOWN 0x010000 /* Lock memory into physical core. */
+#define DB_PRIVATE 0x020000 /* DB_ENV is process local. */
+#define DB_RECOVER_FATAL 0x040000 /* Run catastrophic recovery. */
+#define DB_SYSTEM_MEM 0x080000 /* Use system-backed memory. */
+
+/*
+ * Flags private to DB->open.
+ */
+#define DB_EXCL 0x000400 /* Exclusive open (O_EXCL). */
+#define DB_FCNTL_LOCKING 0x000800 /* UNDOC: fcntl(2) locking. */
+#define DB_ODDFILESIZE 0x001000 /* UNDOC: truncate to N * pgsize. */
+#define DB_RDWRMASTER 0x002000 /* UNDOC: allow subdb master open R/W */
+#define DB_TRUNCATE 0x004000 /* Discard existing DB (O_TRUNC). */
+#define DB_EXTENT 0x008000 /* UNDOC: dealing with an extent. */
+
+/*
+ * Flags private to DBENV->txn_begin.
+ */
+#define DB_TXN_NOWAIT 0x000400 /* Do not wait for locks in this TXN. */
+#define DB_TXN_SYNC 0x000800 /* Always sync log on commit. */
+
+/*
+ * Flags private to DBENV->set_flags.
+ */
+#define DB_CDB_ALLDB 0x000400 /* In CDB, lock across environment. */
+
+/*
+ * Flags private to DB->set_feedback's callback.
+ */
+#define DB_UPGRADE 0x000400 /* Upgrading. */
+#define DB_VERIFY 0x000800 /* Verifying. */
+
+/*
+ * Flags private to DB->set_flags.
+ *
+ * DB->set_flags does not share common flags and so values start at 0x01.
+ */
+#define DB_DUP 0x0001 /* Btree, Hash: duplicate keys. */
+#define DB_DUPSORT 0x0002 /* Btree, Hash: duplicate keys. */
+#define DB_RECNUM 0x0004 /* Btree: record numbers. */
+#define DB_RENUMBER 0x0008 /* Recno: renumber on insert/delete. */
+#define DB_REVSPLITOFF 0x0010 /* Btree: turn off reverse splits. */
+#define DB_SNAPSHOT 0x0020 /* Recno: snapshot the input. */
+
+/*
+ * Flags private to DB->join.
+ *
+ * DB->join does not share common flags and so values start at 0x01.
+ */
+#define DB_JOIN_NOSORT 0x0001 /* Don't try to optimize join. */
+
+/*
+ * Flags private to DB->verify.
+ *
+ * DB->verify does not share common flags and so values start at 0x01.
+ */
+#define DB_AGGRESSIVE 0x0001 /* Salvage anything which might be data.*/
+#define DB_NOORDERCHK 0x0002 /* Skip order check; subdb w/ user func */
+#define DB_ORDERCHKONLY 0x0004 /* Only perform an order check on subdb */
+#define DB_PR_PAGE 0x0008 /* Show page contents (-da). */
+#define DB_PR_RECOVERYTEST 0x0010 /* Recovery test (-dr). */
+#define DB_SALVAGE 0x0020 /* Salvage what looks like data. */
+/*
+ * !!!
+ * These must not go over 0x8000, or they will collide with the flags
+ * used by __bam_vrfy_subtree.
+ */
+
+/*
+ * Deadlock detector modes; used in the DBENV structure to configure the
+ * locking subsystem.
+ */
+#define DB_LOCK_NORUN 0
+#define DB_LOCK_DEFAULT 1 /* Default policy. */
+#define DB_LOCK_MAXLOCKS 2 /* Abort txn with maximum # of locks. */
+#define DB_LOCK_MINLOCKS 3 /* Abort txn with minimum # of locks. */
+#define DB_LOCK_MINWRITE 4 /* Abort txn with minimum writelocks. */
+#define DB_LOCK_OLDEST 5 /* Abort oldest transaction. */
+#define DB_LOCK_RANDOM 6 /* Abort random transaction. */
+#define DB_LOCK_YOUNGEST 7 /* Abort youngest transaction. */
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+#define DB_REGION_MAGIC 0x120897 /* Environment magic number. */
+
+/*
+ * !!!
+ * The values of these enums are used explicitly by the Java code, since
+ * the DbConstant-building facility does not handle enums. Make sure
+ * that java/src/com/sleepycat/db/Db.java is kept up-to-date with this.
+ */
+typedef enum {
+ DB_TXN_ABORT = 0,
+ DB_TXN_BACKWARD_ROLL = 1,
+ DB_TXN_FORWARD_ROLL = 2,
+ DB_TXN_OPENFILES = 3,
+ DB_TXN_POPENFILES = 4
+} db_recops;
+
+#define DB_UNDO(op) ((op) == DB_TXN_ABORT || (op) == DB_TXN_BACKWARD_ROLL)
+#define DB_REDO(op) ((op) == DB_TXN_FORWARD_ROLL)
+
+struct __db_env {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ FILE *db_errfile; /* Error message file stream. */
+ const char *db_errpfx; /* Error message prefix. */
+ /* Callbacks. */
+ void (*db_errcall) __P((const char *, char *));
+ void (*db_feedback) __P((DB_ENV *, int, int));
+ void (*db_paniccall) __P((DB_ENV *, int));
+ int (*db_recovery_init) __P((DB_ENV *));
+
+ /* App-specified alloc functions. */
+ void *(*db_malloc) __P((size_t));
+ void *(*db_realloc) __P((void *, size_t));
+ void (*db_free) __P((void *));
+
+ /*
+ * Currently, the verbose list is a bit field with room for 32
+ * entries. There's no reason that it needs to be limited, if
+ * there are ever more than 32 entries, convert to a bit array.
+ */
+#define DB_VERB_CHKPOINT 0x0001 /* List checkpoints. */
+#define DB_VERB_DEADLOCK 0x0002 /* Deadlock detection information. */
+#define DB_VERB_RECOVERY 0x0004 /* Recovery information. */
+#define DB_VERB_WAITSFOR 0x0008 /* Dump waits-for table. */
+ u_int32_t verbose; /* Verbose output. */
+
+ void *app_private; /* Application-private handle. */
+
+ /* Locking. */
+ u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */
+ u_int32_t lk_modes; /* Number of lock modes in table. */
+ u_int32_t lk_max; /* Maximum number of locks. */
+ u_int32_t lk_max_lockers;/* Maximum number of lockers. */
+ u_int32_t lk_max_objects;/* Maximum number of locked objects. */
+ u_int32_t lk_detect; /* Deadlock detect on all conflicts. */
+
+ /* Logging. */
+ u_int32_t lg_bsize; /* Buffer size. */
+ u_int32_t lg_max; /* Maximum file size. */
+ u_int32_t lg_regionmax; /* Region size. */
+
+ /* Memory pool. */
+ u_int32_t mp_gbytes; /* Cachesize: GB. */
+ u_int32_t mp_bytes; /* Cachesize: Bytes. */
+ size_t mp_size; /* DEPRECATED: Cachesize: bytes. */
+ int mp_ncache; /* Number of cache regions. */
+ size_t mp_mmapsize; /* Maximum file size for mmap. */
+
+ /* Transactions. */
+ u_int32_t tx_max; /* Maximum number of transactions. */
+ time_t tx_timestamp; /* Recover to specific timestamp. */
+ int (*tx_recover) /* Dispatch function for recovery. */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops));
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ int panic_errval; /* Panic causing errno. */
+
+ /* User files, paths. */
+ char *db_home; /* Database home. */
+ char *db_log_dir; /* Database log file directory. */
+ char *db_tmp_dir; /* Database tmp file directory. */
+
+ char **db_data_dir; /* Database data file directories. */
+ int data_cnt; /* Database data file slots. */
+ int data_next; /* Next Database data file slot. */
+
+ int db_mode; /* Default open permissions. */
+
+ void *reginfo; /* REGINFO structure reference. */
+ DB_FH *lockfhp; /* fcntl(2) locking file handle. */
+ long shm_key; /* shmget(2) key. */
+
+ void *lg_handle; /* Log handle. */
+
+ void *lk_handle; /* Lock handle. */
+
+ void *mp_handle; /* Mpool handle. */
+
+ void *tx_handle; /* Txn handle. */
+
+ int (**dtab) /* Dispatch table */
+ __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+ size_t dtab_size; /* Slots in the dispatch table. */
+
+ void *cl_handle; /* RPC: remote client handle. */
+ long cl_id; /* RPC: remote client env id. */
+
+ int db_ref; /* db reference count. */
+ u_int32_t db_mutexlocks; /* db_set_mutexlocks */
+
+ /*
+ * List of open DB handles for this DB_ENV, used for cursor
+ * adjustment. Must be protected for multi-threaded support.
+ *
+ * !!!
+ * As this structure is allocated in per-process memory, the
+ * mutex may need to be stored elsewhere on architectures unable
+ * to support mutexes in heap memory, e.g. HP/UX 9.
+ */
+ void *dblist_mutexp; /* Mutex. */
+ /*
+ * !!!
+ * Explicit representation of structure in queue.h.
+ * LIST_HEAD(dblist, __db);
+ */
+ struct {
+ struct __db *lh_first;
+ } dblist;
+
+ /*
+ * XA support.
+ *
+ * !!!
+ * Explicit representations of structures in queue.h.
+ *
+ * TAILQ_ENTRY(__db_env);
+ */
+ struct {
+ struct __db_env *tqe_next;
+ struct __db_env **tqe_prev;
+ } links;
+ int xa_rmid; /* XA Resource Manager ID. */
+ DB_TXN *xa_txn; /* XA Current transaction. */
+
+ void *cj_internal; /* C++/Java private. */
+
+ /* Methods. */
+ int (*close) __P((DB_ENV *, u_int32_t));
+ void (*err) __P((const DB_ENV *, int, const char *, ...));
+ void (*errx) __P((const DB_ENV *, const char *, ...));
+ int (*open) __P((DB_ENV *, const char *, u_int32_t, int));
+ int (*remove) __P((DB_ENV *, const char *, u_int32_t));
+ int (*set_data_dir) __P((DB_ENV *, const char *));
+ int (*set_alloc) __P((DB_ENV *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ void (*set_errcall) __P((DB_ENV *, void (*)(const char *, char *)));
+ void (*set_errfile) __P((DB_ENV *, FILE *));
+ void (*set_errpfx) __P((DB_ENV *, const char *));
+ int (*set_feedback) __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
+ int (*set_flags) __P((DB_ENV *, u_int32_t, int));
+ int (*set_mutexlocks) __P((DB_ENV *, int));
+ int (*set_paniccall) __P((DB_ENV *, void (*)(DB_ENV *, int)));
+ int (*set_recovery_init) __P((DB_ENV *, int (*)(DB_ENV *)));
+ int (*set_rpc_server) __P((DB_ENV *,
+ void *, const char *, long, long, u_int32_t));
+ int (*set_server) __P((DB_ENV *, const char *, long, long, u_int32_t));
+ int (*set_shm_key) __P((DB_ENV *, long));
+ int (*set_tmp_dir) __P((DB_ENV *, const char *));
+ int (*set_verbose) __P((DB_ENV *, u_int32_t, int));
+
+ int (*set_lg_bsize) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_dir) __P((DB_ENV *, const char *));
+ int (*set_lg_max) __P((DB_ENV *, u_int32_t));
+ int (*set_lg_regionmax) __P((DB_ENV *, u_int32_t));
+
+ int (*set_lk_conflicts) __P((DB_ENV *, u_int8_t *, int));
+ int (*set_lk_detect) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_locks) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_lockers) __P((DB_ENV *, u_int32_t));
+ int (*set_lk_max_objects) __P((DB_ENV *, u_int32_t));
+
+ int (*set_mp_mmapsize) __P((DB_ENV *, size_t));
+ int (*set_cachesize) __P((DB_ENV *, u_int32_t, u_int32_t, int));
+
+ int (*set_tx_max) __P((DB_ENV *, u_int32_t));
+ int (*set_tx_recover) __P((DB_ENV *,
+ int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
+ int (*set_tx_timestamp) __P((DB_ENV *, time_t *));
+
+#ifdef CONFIG_TEST
+#define DB_TEST_PREOPEN 1 /* before __os_open */
+#define DB_TEST_POSTOPEN 2 /* after __os_open */
+#define DB_TEST_POSTLOGMETA 3 /* after logging meta in btree */
+#define DB_TEST_POSTLOG 4 /* after logging all pages */
+#define DB_TEST_POSTSYNC 5 /* after syncing the log */
+#define DB_TEST_PRERENAME 6 /* before __os_rename */
+#define DB_TEST_POSTRENAME 7 /* after __os_rename */
+ int test_abort; /* Abort value for testing. */
+ int test_copy; /* Copy value for testing. */
+#endif
+
+#define DB_ENV_CDB 0x00001 /* DB_INIT_CDB. */
+#define DB_ENV_CDB_ALLDB 0x00002 /* CDB environment wide locking. */
+#define DB_ENV_CREATE 0x00004 /* DB_CREATE set. */
+#define DB_ENV_DBLOCAL 0x00008 /* DB_ENV allocated for private DB. */
+#define DB_ENV_LOCKDOWN 0x00010 /* DB_LOCKDOWN set. */
+#define DB_ENV_NOMMAP 0x00020 /* DB_NOMMAP set. */
+#define DB_ENV_OPEN_CALLED 0x00040 /* DBENV->open called (paths valid). */
+#define DB_ENV_PANIC_OK 0x00080 /* Removing env, okay if panic set */
+#define DB_ENV_PRIVATE 0x00100 /* DB_PRIVATE set. */
+#define DB_ENV_RPCCLIENT 0x00200 /* DB_CLIENT set. */
+#define DB_ENV_RPCCLIENT_GIVEN 0x00400 /* User-supplied RPC client struct */
+#define DB_ENV_STANDALONE 0x00800 /* Test: freestanding environment. */
+#define DB_ENV_SYSTEM_MEM 0x01000 /* DB_SYSTEM_MEM set. */
+#define DB_ENV_THREAD 0x02000 /* DB_THREAD set. */
+#define DB_ENV_TXN_NOSYNC 0x04000 /* DB_TXN_NOSYNC set. */
+#define DB_ENV_USER_ALLOC 0x08000 /* User allocated the structure. */
+ u_int32_t flags; /* Flags. */
+};
+
+/*******************************************************
+ * Access methods.
+ *******************************************************/
+/*
+ * !!!
+ * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
+ */
+typedef enum {
+ DB_BTREE=1,
+ DB_HASH,
+ DB_RECNO,
+ DB_QUEUE,
+ DB_UNKNOWN /* Figure it out on open. */
+} DBTYPE;
+
+#define DB_BTREEVERSION 8 /* Current btree version. */
+#define DB_BTREEOLDVER 6 /* Oldest btree version supported. */
+#define DB_BTREEMAGIC 0x053162
+
+#define DB_HASHVERSION 7 /* Current hash version. */
+#define DB_HASHOLDVER 4 /* Oldest hash version supported. */
+#define DB_HASHMAGIC 0x061561
+
+#define DB_QAMVERSION 3 /* Current queue version. */
+#define DB_QAMOLDVER 1 /* Oldest queue version supported. */
+#define DB_QAMMAGIC 0x042253
+
+#define DB_LOGVERSION 3 /* Current log version. */
+#define DB_LOGOLDVER 3 /* Oldest log version supported. */
+#define DB_LOGMAGIC 0x040988
+
+/*
+ * DB access method and cursor operation values. Each value is an operation
+ * code to which additional bit flags are added.
+ */
+#define DB_AFTER 1 /* c_put() */
+#define DB_APPEND 2 /* put() */
+#define DB_BEFORE 3 /* c_put() */
+#define DB_CACHED_COUNTS 4 /* stat() */
+#define DB_CHECKPOINT 5 /* log_put(), log_get() */
+#define DB_COMMIT 6 /* log_put() (internal) */
+#define DB_CONSUME 7 /* get() */
+#define DB_CONSUME_WAIT 8 /* get() */
+#define DB_CURLSN 9 /* log_put() */
+#define DB_CURRENT 10 /* c_get(), c_put(), log_get() */
+#define DB_FAST_STAT 11 /* stat() */
+#define DB_FIRST 12 /* c_get(), log_get() */
+#define DB_FLUSH 13 /* log_put() */
+#define DB_GET_BOTH 14 /* get(), c_get() */
+#define DB_GET_BOTHC 15 /* c_get() (internal) */
+#define DB_GET_RECNO 16 /* c_get() */
+#define DB_JOIN_ITEM 17 /* c_get(); do not do primary lookup */
+#define DB_KEYFIRST 18 /* c_put() */
+#define DB_KEYLAST 19 /* c_put() */
+#define DB_LAST 20 /* c_get(), log_get() */
+#define DB_NEXT 21 /* c_get(), log_get() */
+#define DB_NEXT_DUP 22 /* c_get() */
+#define DB_NEXT_NODUP 23 /* c_get() */
+#define DB_NODUPDATA 24 /* put(), c_put() */
+#define DB_NOOVERWRITE 25 /* put() */
+#define DB_NOSYNC 26 /* close() */
+#define DB_POSITION 27 /* c_dup() */
+#define DB_POSITIONI 28 /* c_dup() (internal) */
+#define DB_PREV 29 /* c_get(), log_get() */
+#define DB_PREV_NODUP 30 /* c_get(), log_get() */
+#define DB_RECORDCOUNT 31 /* stat() */
+#define DB_SET 32 /* c_get(), log_get() */
+#define DB_SET_RANGE 33 /* c_get() */
+#define DB_SET_RECNO 34 /* get(), c_get() */
+#define DB_UPDATE_SECONDARY 35 /* c_get(), c_del() (internal) */
+#define DB_WRITECURSOR 36 /* cursor() */
+#define DB_WRITELOCK 37 /* cursor() (internal) */
+
+/* This has to change when the max opcode hits 255. */
+#define DB_OPFLAGS_MASK 0x000000ff /* Mask for operations flags. */
+#define DB_DIRTY_READ 0x10000000 /* Support Dirty Read. */
+#define DB_MULTIPLE 0x20000000 /* Return multiple data values. */
+#define DB_MULTIPLE_KEY 0x40000000 /* Return multiple data/key pairs. */
+#define DB_RMW 0x80000000 /* Acquire write flag immediately. */
+
+/*
+ * DB (user visible) error return codes.
+ *
+ * !!!
+ * Changes to any of the user visible error return codes must be reflected
+ * in java/src/com/sleepycat/db/Db.java.
+ *
+ * !!!
+ * For source compatibility with DB 2.X deadlock return (EAGAIN), use the
+ * following:
+ * #include <errno.h>
+ * #define DB_LOCK_DEADLOCK EAGAIN
+ *
+ * !!!
+ * We don't want our error returns to conflict with other packages where
+ * possible, so pick a base error value that's hopefully not common. We
+ * document that we own the error name space from -30,800 to -30,999.
+ */
+/* Public error return codes. */
+#define DB_DONOTINDEX (-30999)/* "Null" return from 2ndary callbk. */
+#define DB_INCOMPLETE (-30998)/* Sync didn't finish. */
+#define DB_KEYEMPTY (-30997)/* Key/data deleted or never created. */
+#define DB_KEYEXIST (-30996)/* The key/data pair already exists. */
+#define DB_LOCK_DEADLOCK (-30995)/* Deadlock. */
+#define DB_LOCK_NOTGRANTED (-30994)/* Lock unavailable. */
+#define DB_NOSERVER (-30993)/* Server panic return. */
+#define DB_NOSERVER_HOME (-30992)/* Bad home sent to server. */
+#define DB_NOSERVER_ID (-30991)/* Bad ID sent to server. */
+#define DB_NOTFOUND (-30990)/* Key/data pair not found (EOF). */
+#define DB_OLD_VERSION (-30989)/* Out-of-date version. */
+#define DB_PAGE_NOTFOUND (-30988)/* Verify failed; bad format. */
+#define DB_RUNRECOVERY (-30987)/* Panic return. */
+#define DB_VERIFY_BAD (-30986)/* Verify failed; bad format. */
+
+/* DB (private) error return codes. */
+#define DB_ALREADY_ABORTED (-30899)
+#define DB_DELETED (-30898)/* Recovery file marked deleted. */
+#define DB_JAVA_CALLBACK (-30897)/* Exception during a java callback. */
+#define DB_NEEDSPLIT (-30896)/* Page needs to be split. */
+#define DB_SWAPBYTES (-30895)/* Database needs byte swapping. */
+#define DB_TXN_CKP (-30894)/* Encountered ckp record in log. */
+#define DB_VERIFY_FATAL (-30893)/* Fatal: DB->verify cannot proceed. */
+
+#define DB_FILE_ID_LEN 20 /* DB file ID length. */
+
+/* DB access method description structure. */
+struct __db {
+ /*******************************************************
+ * Public: owned by the application.
+ *******************************************************/
+ u_int32_t pgsize; /* Database logical page size. */
+
+ /* Callbacks. */
+ int (*db_append_recno) __P((DB *, DBT *, db_recno_t));
+ void (*db_feedback) __P((DB *, int, int));
+ int (*dup_compare) __P((DB *, const DBT *, const DBT *));
+
+ void *app_private; /* Application-private handle. */
+
+ /*******************************************************
+ * Private: owned by DB.
+ *******************************************************/
+ DB_ENV *dbenv; /* Backing environment. */
+
+ DBTYPE type; /* DB access method type. */
+
+ DB_MPOOLFILE *mpf; /* Backing buffer pool. */
+
+ void *mutexp; /* Synchronization for free threading */
+
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File's unique ID for locking. */
+
+ u_int32_t adj_fileid; /* File's unique ID for curs. adj. */
+
+#define DB_LOGFILEID_INVALID -1
+ int32_t log_fileid; /* File's unique ID for logging. */
+ db_pgno_t meta_pgno; /* Meta page number */
+ DB_TXN *open_txn; /* Transaction to protect creates. */
+
+ long cl_id; /* RPC: remote client id. */
+
+ /*
+ * Returned data memory for DB->get() and friends.
+ */
+ DBT my_rskey; /* Secondary key. */
+ DBT my_rkey; /* [Primary] key. */
+ DBT my_rdata; /* Data. */
+
+ /*
+ * !!!
+ * Some applications use DB but implement their own locking outside of
+ * DB. If they're using fcntl(2) locking on the underlying database
+ * file, and we open and close a file descriptor for that file, we will
+ * discard their locks. The DB_FCNTL_LOCKING flag to DB->open is an
+ * undocumented interface to support this usage which leaves any file
+ * descriptors we open until DB->close. This will only work with the
+ * DB->open interface and simple caches, e.g., creating a transaction
+ * thread may open/close file descriptors this flag doesn't protect.
+ * Locking with fcntl(2) on a file that you don't own is a very, very
+ * unsafe thing to do. 'Nuff said.
+ */
+ DB_FH *saved_open_fhp; /* Saved file handle. */
+
+ /*
+ * Linked list of DBP's, used in the log's dbentry table
+ * to keep track of all open db handles for a given log id.
+ * !!!
+ * Explicit representations of structures in queue.h.
+ *
+ * TAILQ_ENTRY(__db) links;
+ */
+ struct {
+ struct __db *tqe_next;
+ struct __db **tqe_prev;
+ } links;
+
+ /*
+ * Linked list of DBP's, linked from the DB_ENV, used to
+ * keep track of all open db handles for cursor adjustment.
+ *
+ * XXX
+ * Eventually, this should be merged with "links" above.
+ *
+ * !!!
+ * Explicit representations of structures in queue.h.
+ *
+ * LIST_ENTRY(__db) dblistlinks;
+ */
+ struct {
+ struct __db *le_next;
+ struct __db **le_prev;
+ } dblistlinks;
+
+ /*
+ * Cursor queues.
+ *
+ * !!!
+ * Explicit representations of structures in queue.h.
+ *
+ * TAILQ_HEAD(free_queue, __dbc);
+ * TAILQ_HEAD(active_queue, __dbc);
+ * TAILQ_HEAD(join_queue, __dbc);
+ */
+ struct {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } free_queue;
+ struct {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } active_queue;
+ struct {
+ struct __dbc *tqh_first;
+ struct __dbc **tqh_last;
+ } join_queue;
+
+ /*
+ * Secondary index support.
+ *
+ * !!!
+ * Explicit representations of structures in queue.h.
+ */
+ /* Linked list of secondary indices -- set in the primary. */
+ struct {
+ struct __db *lh_first;
+ } s_secondaries;
+
+ /*
+ * List entries for secondaries, and reference count of how
+ * many threads are updating this secondary (see __db_c_put).
+ *
+ * !!!
+ * Note that these are synchronized by the primary's mutex, but
+ * filled in in the secondaries.
+ */
+ struct {
+ struct __db *le_next;
+ struct __db **le_prev;
+ } s_links;
+ u_int32_t s_refcnt;
+
+ /* Secondary callback and free functions -- set in the secondary. */
+ int (*s_callback)(DB *, const DBT *, const DBT *, DBT *);
+
+ /* Reference to primary -- set in the secondary. */
+ DB *s_primary;
+
+ /*
+ * Subsystem-private structures.
+ */
+
+ void *bt_internal; /* Btree/Recno access method private. */
+ void *cj_internal; /* C++/Java private. */
+ void *h_internal; /* Hash access method private. */
+ void *q_internal; /* Queue access method private. */
+ void *xa_internal; /* XA private. */
+
+ /* Methods. */
+ int (*associate) __P((DB *, DB *, int (*)(DB *, const DBT *,
+ const DBT *, DBT *), u_int32_t));
+ int (*close) __P((DB *, u_int32_t));
+ int (*cursor) __P((DB *, DB_TXN *, DBC **, u_int32_t));
+ int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t));
+ void (*err) __P((DB *, int, const char *, ...));
+ void (*errx) __P((DB *, const char *, ...));
+ int (*fd) __P((DB *, int *));
+ int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*pget) __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*get_byteswapped) __P((DB *));
+ DBTYPE
+ (*get_type) __P((DB *));
+ int (*join) __P((DB *, DBC **, DBC **, u_int32_t));
+ int (*key_range) __P((DB *,
+ DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+ int (*open) __P((DB *,
+ const char *, const char *, DBTYPE, u_int32_t, int));
+ int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+ int (*remove) __P((DB *, const char *, const char *, u_int32_t));
+ int (*rename) __P((DB *,
+ const char *, const char *, const char *, u_int32_t));
+ int (*truncate) __P((DB *,
+ const char *, const char *, u_int32_t *, u_int32_t));
+ int (*set_append_recno) __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
+ int (*set_alloc) __P((DB *, void *(*)(size_t),
+ void *(*)(void *, size_t), void (*)(void *)));
+ int (*set_cachesize) __P((DB *, u_int32_t, u_int32_t, int));
+ int (*set_dup_compare) __P((DB *,
+ int (*)(DB *, const DBT *, const DBT *)));
+ void (*set_errcall) __P((DB *, void (*)(const char *, char *)));
+ void (*set_errfile) __P((DB *, FILE *));
+ void (*set_errpfx) __P((DB *, const char *));
+ int (*set_feedback) __P((DB *, void (*)(DB *, int, int)));
+ int (*set_flags) __P((DB *, u_int32_t));
+ int (*set_lorder) __P((DB *, int));
+ int (*set_pagesize) __P((DB *, u_int32_t));
+ int (*set_paniccall) __P((DB *, void (*)(DB_ENV *, int)));
+ int (*stat) __P((DB *, void *, u_int32_t));
+ int (*sync) __P((DB *, u_int32_t));
+ int (*upgrade) __P((DB *, const char *, u_int32_t));
+ int (*verify) __P((DB *,
+ const char *, const char *, FILE *, u_int32_t));
+
+ int (*set_bt_compare) __P((DB *,
+ int (*)(DB *, const DBT *, const DBT *)));
+ int (*set_bt_maxkey) __P((DB *, u_int32_t));
+ int (*set_bt_minkey) __P((DB *, u_int32_t));
+ int (*set_bt_prefix) __P((DB *,
+ size_t (*)(DB *, const DBT *, const DBT *)));
+
+ int (*set_h_ffactor) __P((DB *, u_int32_t));
+ int (*set_h_hash) __P((DB *,
+ u_int32_t (*)(DB *, const void *, u_int32_t)));
+ int (*set_h_nelem) __P((DB *, u_int32_t));
+
+ int (*set_re_delim) __P((DB *, int));
+ int (*set_re_len) __P((DB *, u_int32_t));
+ int (*set_re_pad) __P((DB *, int));
+ int (*set_re_source) __P((DB *, const char *));
+ int (*set_q_extentsize) __P((DB *, u_int32_t));
+
+ int (*db_am_remove) __P((DB *, const char *,
+ const char *, DB_LSN *, int (**)(DB *, void *), void **));
+ int (*db_am_rename) __P((DB *,
+ const char *, const char *, const char *));
+
+#define DB_OK_BTREE 0x01
+#define DB_OK_HASH 0x02
+#define DB_OK_QUEUE 0x04
+#define DB_OK_RECNO 0x08
+ u_int32_t am_ok; /* Legal AM choices. */
+
+#define DB_AM_DIRTY 0x000001 /* Support Dirty Reads. */
+#define DB_AM_DISCARD 0x000002 /* Discard any cached pages. */
+#define DB_AM_DUP 0x000004 /* DB_DUP. */
+#define DB_AM_DUPSORT 0x000008 /* DB_DUPSORT. */
+#define DB_AM_INMEM 0x000010 /* In-memory; no sync on close. */
+#define DB_AM_PGDEF 0x000020 /* Page size was defaulted. */
+#define DB_AM_RDONLY 0x000040 /* Database is readonly. */
+#define DB_AM_RECOVER 0x000080 /* DBP opened by recovery routine. */
+#define DB_AM_SECONDARY 0x000100 /* Database is a secondary index. */
+#define DB_AM_SUBDB 0x000200 /* Subdatabases supported. */
+#define DB_AM_SWAP 0x000400 /* Pages need to be byte-swapped. */
+#define DB_AM_TXN 0x000800 /* DBP was in a transaction. */
+#define DB_AM_VERIFYING 0x001000 /* DB handle is in the verifier. */
+#define DB_BT_RECNUM 0x002000 /* DB_RECNUM. */
+#define DB_BT_REVSPLIT 0x004000 /* DB_REVSPLITOFF. */
+#define DB_DBM_ERROR 0x008000 /* Error in DBM/NDBM database. */
+#define DB_OPEN_CALLED 0x010000 /* DB->open called. */
+#define DB_RE_DELIMITER 0x020000 /* Variablen length delimiter set. */
+#define DB_RE_FIXEDLEN 0x040000 /* Fixed-length records. */
+#define DB_RE_PAD 0x080000 /* Fixed-length record pad. */
+#define DB_RE_RENUMBER 0x100000 /* DB_RENUMBER. */
+#define DB_RE_SNAPSHOT 0x200000 /* DB_SNAPSHOT. */
+ u_int32_t flags;
+};
+/*******************************************************
+ * Locking
+ *******************************************************/
+#define DB_LOCKVERSION 1
+
+/* Flag values for lock_vec(), lock_get(). */
+#define DB_LOCK_NOWAIT 0x01 /* Don't wait on unavailable lock. */
+#define DB_LOCK_RECORD 0x02 /* Internal: record lock. */
+#define DB_LOCK_UPGRADE 0x04 /* Internal: upgrade existing lock. */
+#define DB_LOCK_SWITCH 0x08 /* Internal: switch existing lock. */
+
+/*
+ * Request types.
+ *
+ * !!!
+ * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
+ */
+typedef enum {
+ DB_LOCK_DUMP=0, /* Display held locks. */
+ DB_LOCK_GET, /* Get the lock. */
+ DB_LOCK_INHERIT, /* Pass locks to parent. */
+ DB_LOCK_PUT, /* Release the lock. */
+ DB_LOCK_PUT_ALL, /* Release locker's locks. */
+ DB_LOCK_PUT_OBJ, /* Release locker's locks on obj. */
+ DB_LOCK_UPGRADE_WRITE /* Upgrade writes for dirty reads. */
+} db_lockop_t;
+
+/*
+ * Simple R/W lock modes and for multi-granularity intention locking.
+ *
+ * !!!
+ * These values are NOT random, as they are used as an index into the lock
+ * conflicts arrays, i.e., DB_LOCK_IWRITE must be == 3, and DB_LOCK_IREAD
+ * must be == 4.
+ *
+ * !!!
+ * Changes here must be reflected in java/src/com/sleepycat/db/Db.java.
+ */
+typedef enum {
+ DB_LOCK_NG=0, /* Not granted. */
+ DB_LOCK_READ, /* Shared/read. */
+ DB_LOCK_WRITE, /* Exclusive/write. */
+ DB_LOCK_WAIT, /* Wait for event */
+ DB_LOCK_IWRITE, /* Intent exclusive/write. */
+ DB_LOCK_IREAD, /* Intent to share/read. */
+ DB_LOCK_IWR, /* Intent to read and write. */
+ DB_LOCK_DIRTY, /* Dirty Read. */
+ DB_LOCK_WWRITE /* Was Written. */
+} db_lockmode_t;
+
+/*
+ * Status of a lock.
+ */
+typedef enum {
+ DB_LSTAT_ABORTED, /* Lock belongs to an aborted txn. */
+ DB_LSTAT_ERR, /* Lock is bad. */
+ DB_LSTAT_FREE, /* Lock is unallocated. */
+ DB_LSTAT_HELD, /* Lock is currently held. */
+ DB_LSTAT_NOGRANT, /* Lock was not granted. */
+ DB_LSTAT_PENDING, /* Lock was waiting and has been
+ * promoted; waiting for the owner
+ * to run and upgrade it to held. */
+ DB_LSTAT_WAITING /* Lock is on the wait queue. */
+} db_status_t;
+
+/* Lock statistics structure. */
+struct __db_lock_stat {
+ u_int32_t st_lastid; /* Last allocated locker ID. */
+ u_int32_t st_maxlocks; /* Maximum number of locks in table. */
+ u_int32_t st_maxlockers; /* Maximum num of lockers in table. */
+ u_int32_t st_maxobjects; /* Maximum num of objects in table. */
+ u_int32_t st_nmodes; /* Number of lock modes. */
+ u_int32_t st_nlocks; /* Current number of locks. */
+ u_int32_t st_maxnlocks; /* Maximum number of locks so far. */
+ u_int32_t st_nlockers; /* Current number of lockers. */
+ u_int32_t st_maxnlockers; /* Maximum number of lockers so far. */
+ u_int32_t st_nobjects; /* Current number of objects. */
+ u_int32_t st_maxnobjects; /* Maximum number of objects so far. */
+ u_int32_t st_nconflicts; /* Number of lock conflicts. */
+ u_int32_t st_nrequests; /* Number of lock gets. */
+ u_int32_t st_nreleases; /* Number of lock puts. */
+ u_int32_t st_nnowaits; /* Number of requests that would have
+ waited, but NOWAIT was set. */
+ u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_regsize; /* Region size. */
+};
+
+/*
+ * DB_LOCK_ILOCK --
+ * Internal DB access method lock.
+ */
+struct __db_ilock {
+ db_pgno_t pgno; /* Page being locked. */
+ u_int8_t fileid[DB_FILE_ID_LEN];/* File id. */
+#define DB_RECORD_LOCK 1
+#define DB_PAGE_LOCK 2
+ u_int8_t type; /* Record or Page lock */
+};
+
+/*
+ * DB_LOCK --
+ * The structure is allocated by the caller and filled in during a
+ * lock_get request (or a lock_vec/DB_LOCK_GET).
+ */
+struct __db_lock_u {
+ size_t off; /* Offset of the lock in the region */
+ u_int32_t ndx; /* Index of the object referenced by
+ * this lock; used for locking. */
+ u_int32_t gen; /* Generation number of this lock. */
+ db_lockmode_t mode; /* mode of this lock. */
+};
+
+/* Lock request structure. */
+struct __db_lockreq {
+ db_lockop_t op; /* Operation. */
+ db_lockmode_t mode; /* Requested mode. */
+ DBT *obj; /* Object being locked. */
+ DB_LOCK lock; /* Lock returned. */
+};
+
+/* Cursor description structure. */
+struct __dbc {
+ DB *dbp; /* Related DB access method. */
+ DB_TXN *txn; /* Associated transaction. */
+
+ /*
+ * !!!
+ * Explicit representations of structures in queue.h.
+ *
+ * TAILQ_ENTRY(__dbc) links; Active/free cursor queues.
+ */
+ struct {
+ DBC *tqe_next;
+ DBC **tqe_prev;
+ } links;
+
+ /*
+ * The DBT *'s below are used by the cursor routines to return
+ * data to the user when DBT flags indicate that DB should manage
+ * the returned memory. They point at a DBT containing the buffer
+ * and length that will be used, and "belonging" to the handle that
+ * should "own" this memory. This may be a "my_*" field of this
+ * cursor--the default--or it may be the corresponding field of
+ * another cursor, a DB handle, a join cursor, etc. In general, it
+ * will be whatever handle the user originally used for the current
+ * DB interface call.
+ */
+ DBT *rskey; /* Returned secondary key. */
+ DBT *rkey; /* Returned [primary] key. */
+ DBT *rdata; /* Returned data. */
+
+ DBT my_rskey; /* Space for returned secondary key. */
+ DBT my_rkey; /* Space for returned [primary] key. */
+ DBT my_rdata; /* Space for returned data. */
+
+ u_int32_t lid; /* Default process' locker id. */
+ u_int32_t locker; /* Locker for this operation. */
+ DBT lock_dbt; /* DBT referencing lock. */
+ DB_LOCK_ILOCK lock; /* Object to be locked. */
+ DB_LOCK mylock; /* Lock held on this cursor. */
+
+ long cl_id; /* Remote client id. */
+
+ DBTYPE dbtype; /* Cursor type. */
+
+ DBC_INTERNAL *internal; /* Access method private. */
+
+ int (*c_close) __P((DBC *)); /* Methods: public. */
+ int (*c_count) __P((DBC *, db_recno_t *, u_int32_t));
+ int (*c_del) __P((DBC *, u_int32_t));
+ int (*c_dup) __P((DBC *, DBC **, u_int32_t));
+ int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t));
+ int (*c_pget) __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+ int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t));
+
+ /* Methods: private. */
+ int (*c_am_bulk) __P((DBC *, DBT *, u_int32_t));
+ int (*c_am_close) __P((DBC *, db_pgno_t, int *));
+ int (*c_am_del) __P((DBC *));
+ int (*c_am_destroy) __P((DBC *));
+ int (*c_am_get) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*c_am_put) __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+ int (*c_am_writelock) __P((DBC *));
+
+ /* Private: for secondary indices. */
+ int (*c_real_get) __P((DBC *, DBT *, DBT *, u_int32_t));
+
+#define DBC_ACTIVE 0x001 /* Cursor is being used. */
+#define DBC_COMPENSATE 0x002 /* Cursor is doing compensation
+ * do not lock.
+ */
+#define DBC_DIRTY_READ 0x004 /* Cursor is supporting dirty reads. */
+#define DBC_OPD 0x008 /* Cursor references off-page dups. */
+#define DBC_RECOVER 0x010 /* Cursor created by recovery routine
+ * (do not log or lock).
+ */
+#define DBC_RMW 0x020 /* Acquire write flag in read op. */
+#define DBC_TRANSIENT 0x040 /* Cursor is transient. */
+#define DBC_WRITECURSOR 0x080 /* Cursor may be used to write (CDB). */
+#define DBC_WRITEDUP 0x100 /* idup'ed DBC_WRITECURSOR (CDB). */
+#define DBC_WRITER 0x200 /* Cursor immediately writing (CDB). */
+#define DBC_MULTIPLE 0x400 /* Return Multiple data. */
+#define DBC_MULTIPLE_KEY 0x800 /* Return Multiple keys and data. */
+ u_int32_t flags;
+};
+
+/* Key range statistics structure */
+struct __key_range {
+ double less;
+ double equal;
+ double greater;
+};
+
+/* Btree/Recno statistics structure. */
+struct __db_bt_stat {
+ u_int32_t bt_magic; /* Magic number. */
+ u_int32_t bt_version; /* Version number. */
+ u_int32_t bt_metaflags; /* Metadata flags. */
+ u_int32_t bt_nkeys; /* Number of unique keys. */
+ u_int32_t bt_ndata; /* Number of data items. */
+ u_int32_t bt_pagesize; /* Page size. */
+ u_int32_t bt_maxkey; /* Maxkey value. */
+ u_int32_t bt_minkey; /* Minkey value. */
+ u_int32_t bt_re_len; /* Fixed-length record length. */
+ u_int32_t bt_re_pad; /* Fixed-length record pad. */
+ u_int32_t bt_levels; /* Tree levels. */
+ u_int32_t bt_int_pg; /* Internal pages. */
+ u_int32_t bt_leaf_pg; /* Leaf pages. */
+ u_int32_t bt_dup_pg; /* Duplicate pages. */
+ u_int32_t bt_over_pg; /* Overflow pages. */
+ u_int32_t bt_free; /* Pages on the free list. */
+ u_int32_t bt_int_pgfree; /* Bytes free in internal pages. */
+ u_int32_t bt_leaf_pgfree; /* Bytes free in leaf pages. */
+ u_int32_t bt_dup_pgfree; /* Bytes free in duplicate pages. */
+ u_int32_t bt_over_pgfree; /* Bytes free in overflow pages. */
+};
+
+/* Queue statistics structure. */
+struct __db_qam_stat {
+ u_int32_t qs_magic; /* Magic number. */
+ u_int32_t qs_version; /* Version number. */
+ u_int32_t qs_metaflags; /* Metadata flags. */
+ u_int32_t qs_nkeys; /* Number of unique keys. */
+ u_int32_t qs_ndata; /* Number of data items. */
+ u_int32_t qs_pagesize; /* Page size. */
+ u_int32_t qs_extentsize; /* Pages per extent. */
+ u_int32_t qs_pages; /* Data pages. */
+ u_int32_t qs_re_len; /* Fixed-length record length. */
+ u_int32_t qs_re_pad; /* Fixed-length record pad. */
+ u_int32_t qs_pgfree; /* Bytes free in data pages. */
+ u_int32_t qs_first_recno; /* First not deleted record. */
+ u_int32_t qs_cur_recno; /* Last allocated record number. */
+};
+
+/* Hash statistics structure. */
+struct __db_h_stat {
+ u_int32_t hash_magic; /* Magic number. */
+ u_int32_t hash_version; /* Version number. */
+ u_int32_t hash_metaflags; /* Metadata flags. */
+ u_int32_t hash_nkeys; /* Number of unique keys. */
+ u_int32_t hash_ndata; /* Number of data items. */
+ u_int32_t hash_pagesize; /* Page size. */
+ u_int32_t hash_nelem; /* Original nelem specified. */
+ u_int32_t hash_ffactor; /* Fill factor specified at create. */
+ u_int32_t hash_buckets; /* Number of hash buckets. */
+ u_int32_t hash_free; /* Pages on the free list. */
+ u_int32_t hash_bfree; /* Bytes free on bucket pages. */
+ u_int32_t hash_bigpages; /* Number of big key/data pages. */
+ u_int32_t hash_big_bfree; /* Bytes free on big item pages. */
+ u_int32_t hash_overflows; /* Number of overflow pages. */
+ u_int32_t hash_ovfl_free; /* Bytes free on ovfl pages. */
+ u_int32_t hash_dup; /* Number of dup pages. */
+ u_int32_t hash_dup_free; /* Bytes free on duplicate pages. */
+};
+
+/*******************************************************
+* Logging.
+ *******************************************************/
+/* Flag values for log_archive(). */
+#define DB_ARCH_ABS 0x001 /* Absolute pathnames. */
+#define DB_ARCH_DATA 0x002 /* Data files. */
+#define DB_ARCH_LOG 0x004 /* Log files. */
+
+/*
+ * A DB_LSN has two parts, a fileid which identifies a specific file, and an
+ * offset within that file. The fileid is an unsigned 4-byte quantity that
+ * uniquely identifies a file within the log directory -- currently a simple
+ * counter inside the log. The offset is also an unsigned 4-byte value. The
+ * log manager guarantees the offset is never more than 4 bytes by switching
+ * to a new log file before the maximum length imposed by an unsigned 4-byte
+ * offset is reached.
+ */
+struct __db_lsn {
+ u_int32_t file; /* File ID. */
+ u_int32_t offset; /* File offset. */
+};
+
+/* Log statistics structure. */
+struct __db_log_stat {
+ u_int32_t st_magic; /* Log file magic number. */
+ u_int32_t st_version; /* Log file version number. */
+ int st_mode; /* Log file mode. */
+ u_int32_t st_lg_bsize; /* Log buffer size. */
+ u_int32_t st_lg_max; /* Maximum log file size. */
+ u_int32_t st_w_bytes; /* Bytes to log. */
+ u_int32_t st_w_mbytes; /* Megabytes to log. */
+ u_int32_t st_wc_bytes; /* Bytes to log since checkpoint. */
+ u_int32_t st_wc_mbytes; /* Megabytes to log since checkpoint. */
+ u_int32_t st_wcount; /* Total writes to the log. */
+ u_int32_t st_wcount_fill; /* Overflow writes to the log. */
+ u_int32_t st_scount; /* Total syncs to the log. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_cur_file; /* Current log file number. */
+ u_int32_t st_cur_offset; /* Current log file offset. */
+ u_int32_t st_regsize; /* Region size. */
+};
+
+/*******************************************************
+ * Mpool
+ *******************************************************/
+/* Flag values for memp_fget(). */
+#define DB_MPOOL_CREATE 0x001 /* Create a page. */
+#define DB_MPOOL_LAST 0x002 /* Return the last page. */
+#define DB_MPOOL_NEW 0x004 /* Create a new page. */
+#define DB_MPOOL_NEW_GROUP 0x008 /* Create a group of pages. */
+
+/* Flag values for memp_fput(), memp_fset(). */
+#define DB_MPOOL_CLEAN 0x001 /* Page is not modified. */
+#define DB_MPOOL_DIRTY 0x002 /* Page is modified. */
+#define DB_MPOOL_DISCARD 0x004 /* Don't cache the page. */
+
+/* Mpool statistics structure. */
+struct __db_mpool_stat {
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+ u_int32_t st_ro_evict; /* Clean pages forced from the cache. */
+ u_int32_t st_rw_evict; /* Dirty pages forced from the cache. */
+ u_int32_t st_hash_buckets; /* Number of hash buckets. */
+ u_int32_t st_hash_searches; /* Total hash chain searches. */
+ u_int32_t st_hash_longest; /* Longest hash chain searched. */
+ u_int32_t st_hash_examined; /* Total hash entries searched. */
+ u_int32_t st_page_clean; /* Clean pages. */
+ u_int32_t st_page_dirty; /* Dirty pages. */
+ u_int32_t st_page_trickle; /* Pages written by memp_trickle. */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_gbytes; /* Total cache size: GB. */
+ u_int32_t st_bytes; /* Total cache size: B. */
+ u_int32_t st_ncache; /* Number of caches. */
+ u_int32_t st_regsize; /* Cache size. */
+};
+
+/* Mpool file open information structure. */
+struct __db_mpool_finfo {
+ int ftype; /* File type. */
+ DBT *pgcookie; /* Byte-string passed to pgin/pgout. */
+ u_int8_t *fileid; /* Unique file ID. */
+ int32_t lsn_offset; /* LSN offset in page. */
+ u_int32_t clear_len; /* Cleared length on created pages. */
+};
+
+/* Mpool file statistics structure. */
+struct __db_mpool_fstat {
+ char *file_name; /* File name. */
+ size_t st_pagesize; /* Page size. */
+ u_int32_t st_cache_hit; /* Pages found in the cache. */
+ u_int32_t st_cache_miss; /* Pages not found in the cache. */
+ u_int32_t st_map; /* Pages from mapped files. */
+ u_int32_t st_page_create; /* Pages created in the cache. */
+ u_int32_t st_page_in; /* Pages read in. */
+ u_int32_t st_page_out; /* Pages written out. */
+};
+
+/*******************************************************
+ * Transactions.
+ *******************************************************/
+#define DB_TXNVERSION 1
+
+/* Transaction statistics structure. */
+struct __db_txn_active {
+ u_int32_t txnid; /* Transaction ID */
+ u_int32_t parentid; /* Transaction ID of parent */
+ DB_LSN lsn; /* Lsn of the begin record */
+};
+
+struct __db_txn_stat {
+ DB_LSN st_last_ckp; /* lsn of the last checkpoint */
+ DB_LSN st_pending_ckp; /* last checkpoint did not finish */
+ time_t st_time_ckp; /* time of last checkpoint */
+ u_int32_t st_last_txnid; /* last transaction id given out */
+ u_int32_t st_maxtxns; /* maximum txns possible */
+ u_int32_t st_naborts; /* number of aborted transactions */
+ u_int32_t st_nbegins; /* number of begun transactions */
+ u_int32_t st_ncommits; /* number of committed transactions */
+ u_int32_t st_nactive; /* number of active transactions */
+ u_int32_t st_nrestores; /* number of restored transactions
+ after recovery. */
+ u_int32_t st_maxnactive; /* maximum active transactions */
+ DB_TXN_ACTIVE
+ *st_txnarray; /* array of active transactions */
+ u_int32_t st_region_wait; /* Region lock granted after wait. */
+ u_int32_t st_region_nowait; /* Region lock granted without wait. */
+ u_int32_t st_regsize; /* Region size. */
+};
+
+/*
+ * Structure used for two phase commit interface. Berkeley DB support for two
+ * phase commit is compatible with the X/open XA interface. The xa #define
+ * XIDDATASIZE defines the size of a global transaction ID. We have our own
+ * version here which must have the same value.
+ */
+#define DB_XIDDATASIZE 128
+typedef struct db_preplist {
+ DB_TXN *txn;
+ u_int8_t gid[DB_XIDDATASIZE];
+} DB_PREPLIST;
+
+#ifndef DB_DBM_HSEARCH
+#define DB_DBM_HSEARCH 0 /* No historic interfaces by default. */
+#endif
+#if DB_DBM_HSEARCH != 0
+/*******************************************************
+ * Dbm/Ndbm historic interfaces.
+ *******************************************************/
+typedef struct __db DBM;
+
+#define DBM_INSERT 0 /* Flags to dbm_store(). */
+#define DBM_REPLACE 1
+
+/*
+ * The DB support for ndbm(3) always appends this suffix to the
+ * file name to avoid overwriting the user's original database.
+ */
+#define DBM_SUFFIX ".db"
+
+#if defined(_XPG4_2)
+typedef struct {
+ char *dptr;
+ size_t dsize;
+} datum;
+#else
+typedef struct {
+ char *dptr;
+ int dsize;
+} datum;
+#endif
+
+/*******************************************************
+ * Hsearch historic interface.
+ *******************************************************/
+typedef enum {
+ FIND, ENTER
+} ACTION;
+
+typedef struct entry {
+ char *key;
+ char *data;
+} ENTRY;
+
+#endif /* DB_DBM_HSEARCH */
+
+/*
+ * XXX
+ * MacOS: Reset Metrowerks C enum sizes.
+ */
+#ifdef __MWERKS__
+#pragma enumsalwaysint reset
+#endif
+
+#if defined(__cplusplus)
+}
+#endif
diff --git a/db/include/db_185.in b/db/include/db_185.in
new file mode 100644
index 000000000..2aabce823
--- /dev/null
+++ b/db/include/db_185.in
@@ -0,0 +1,165 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996-2001
+ * Sleepycat Software. All rights reserved.
+ */
+/*
+ * Copyright (c) 1990, 1993, 1994
+ * The Regents of the University of California. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of the University nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * Id: db_185.in,v 11.6 2001/04/10 20:44:10 bostic Exp
+ */
+
+#ifndef _DB_185_H_
+#define _DB_185_H_
+
+#include <sys/types.h>
+
+#include <limits.h>
+
+/*
+ * XXX
+ * Handle function prototypes and the keyword "const". This steps on name
+ * space that DB doesn't control, but all of the other solutions are worse.
+ */
+#undef __P
+#if defined(__STDC__) || defined(__cplusplus)
+#define __P(protos) protos /* ANSI C prototypes */
+#else
+#define const
+#define __P(protos) () /* K&R C preprocessor */
+#endif
+
+#define RET_ERROR -1 /* Return values. */
+#define RET_SUCCESS 0
+#define RET_SPECIAL 1
+
+#ifndef __BIT_TYPES_DEFINED__
+#define __BIT_TYPES_DEFINED__
+@u_int8_decl@
+@int16_decl@
+@u_int16_decl@
+@int32_decl@
+@u_int32_decl@
+#endif
+
+/*
+ * XXX
+ * SGI/IRIX already has a pgno_t.
+ */
+#ifdef sgi
+#define pgno_t db_pgno_t
+#endif
+
+#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
+typedef u_int32_t pgno_t;
+#define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */
+typedef u_int16_t indx_t;
+#define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */
+typedef u_int32_t recno_t;
+
+/* Key/data structure -- a Data-Base Thang. */
+typedef struct {
+ void *data; /* data */
+ size_t size; /* data length */
+} DBT;
+
+/* Routine flags. */
+#define R_CURSOR 1 /* del, put, seq */
+#define __R_UNUSED 2 /* UNUSED */
+#define R_FIRST 3 /* seq */
+#define R_IAFTER 4 /* put (RECNO) */
+#define R_IBEFORE 5 /* put (RECNO) */
+#define R_LAST 6 /* seq (BTREE, RECNO) */
+#define R_NEXT 7 /* seq */
+#define R_NOOVERWRITE 8 /* put */
+#define R_PREV 9 /* seq (BTREE, RECNO) */
+#define R_SETCURSOR 10 /* put (RECNO) */
+#define R_RECNOSYNC 11 /* sync (RECNO) */
+
+typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
+
+/* Access method description structure. */
+typedef struct __db {
+ DBTYPE type; /* Underlying db type. */
+ int (*close) __P((struct __db *));
+ int (*del) __P((const struct __db *, const DBT *, u_int));
+ int (*get) __P((const struct __db *, const DBT *, DBT *, u_int));
+ int (*put) __P((const struct __db *, DBT *, const DBT *, u_int));
+ int (*seq) __P((const struct __db *, DBT *, DBT *, u_int));
+ int (*sync) __P((const struct __db *, u_int));
+ void *internal; /* Access method private. */
+ int (*fd) __P((const struct __db *));
+} DB;
+
+#define BTREEMAGIC 0x053162
+#define BTREEVERSION 3
+
+/* Structure used to pass parameters to the btree routines. */
+typedef struct {
+#define R_DUP 0x01 /* duplicate keys */
+ u_int32_t flags;
+ u_int32_t cachesize; /* bytes to cache */
+ u_int32_t maxkeypage; /* maximum keys per page */
+ u_int32_t minkeypage; /* minimum keys per page */
+ u_int32_t psize; /* page size */
+ int (*compare) /* comparison function */
+ __P((const DBT *, const DBT *));
+ size_t (*prefix) /* prefix function */
+ __P((const DBT *, const DBT *));
+ int lorder; /* byte order */
+} BTREEINFO;
+
+#define HASHMAGIC 0x061561
+#define HASHVERSION 2
+
+/* Structure used to pass parameters to the hashing routines. */
+typedef struct {
+ u_int32_t bsize; /* bucket size */
+ u_int32_t ffactor; /* fill factor */
+ u_int32_t nelem; /* number of elements */
+ u_int32_t cachesize; /* bytes to cache */
+ u_int32_t /* hash function */
+ (*hash) __P((const void *, size_t));
+ int lorder; /* byte order */
+} HASHINFO;
+
+/* Structure used to pass parameters to the record routines. */
+typedef struct {
+#define R_FIXEDLEN 0x01 /* fixed-length records */
+#define R_NOKEY 0x02 /* key not required */
+#define R_SNAPSHOT 0x04 /* snapshot the input */
+ u_int32_t flags;
+ u_int32_t cachesize; /* bytes to cache */
+ u_int32_t psize; /* page size */
+ int lorder; /* byte order */
+ size_t reclen; /* record length (fixed-length records) */
+ u_char bval; /* delimiting byte (variable-length records */
+ char *bfname; /* btree file name */
+} RECNOINFO;
+
diff --git a/db/include/db_int.in b/db/include/db_int.in
new file mode 100644
index 000000000..b556d6a0e
--- /dev/null
+++ b/db/include/db_int.in
@@ -0,0 +1,442 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: db_int.in,v 11.54 2001/04/27 15:49:47 bostic Exp
+ */
+
+#ifndef _DB_INTERNAL_H_
+#define _DB_INTERNAL_H_
+
+/*******************************************************
+ * General includes.
+ *******************************************************/
+#include "db.h"
+
+#ifndef NO_SYSTEM_INCLUDES
+#if defined(__STDC__) || defined(__cplusplus)
+#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif
+#include <errno.h>
+#endif
+
+#include "queue.h"
+#include "shqueue.h"
+
+#if defined(__cplusplus)
+extern "C" {
+#endif
+
+/*******************************************************
+ * General purpose constants and macros.
+ *******************************************************/
+#define UINT16_T_MAX 0xffff /* Maximum 16 bit unsigned. */
+#define UINT32_T_MAX 0xffffffff /* Maximum 32 bit unsigned. */
+
+#define MEGABYTE 1048576
+#define GIGABYTE 1073741824
+
+#define MS_PER_SEC 1000 /* Milliseconds in a second. */
+#define USEC_PER_MS 1000 /* Microseconds in a millisecond. */
+
+#define DB_MIN_PGSIZE 0x000200 /* Minimum page size (512). */
+#define DB_MAX_PGSIZE 0x010000 /* Maximum page size (65536). */
+
+#define RECNO_OOB 0 /* Illegal record number. */
+
+/*
+ * If we are unable to determine the underlying filesystem block size, use
+ * 8K on the grounds that most OS's use less than 8K for a VM page size.
+ */
+#define DB_DEF_IOSIZE (8 * 1024)
+
+/*
+ * Aligning items to particular sizes or in pages or memory.
+ *
+ * db_align_t --
+ * Largest integral type, used to align structures in memory. We don't store
+ * floating point types in structures, so integral types should be sufficient
+ * (and we don't have to worry about systems that store floats in other than
+ * power-of-2 numbers of bytes). Additionally this fixes compiler that rewrite
+ * structure assignments and ANSI C memcpy calls to be in-line instructions
+ * that happen to require alignment. Note: this alignment isn't sufficient for
+ * mutexes, which depend on things like cache line alignment. Mutex alignment
+ * is handled separately, in mutex.h.
+ *
+ * db_alignp_t --
+ * Integral type that's the same size as a pointer. There are places where
+ * DB modifies pointers by discarding the bottom bits to guarantee alignment.
+ * We can't use db_align_t, it may be larger than the pointer, and compilers
+ * get upset about that. So far we haven't run on any machine where there
+ * isn't an integral type the same size as a pointer -- here's hoping.
+ */
+@db_align_t_decl@
+@db_alignp_t_decl@
+
+/* Align an integer to a specific boundary. */
+#undef ALIGN
+#define ALIGN(value, bound) \
+ (((value) + (bound) - 1) & ~(((u_int)bound) - 1))
+
+/* Align a pointer to a specific boundary. */
+#undef ALIGNP
+#define ALIGNP(value, bound) ALIGN((db_alignp_t)value, bound)
+
+/*
+ * There are several on-page structures that are declared to have a number of
+ * fields followed by a variable length array of items. The structure size
+ * without including the variable length array or the address of the first of
+ * those elements can be found using SSZ.
+ *
+ * This macro can also be used to find the offset of a structure element in a
+ * structure. This is used in various places to copy structure elements from
+ * unaligned memory references, e.g., pointers into a packed page.
+ *
+ * There are two versions because compilers object if you take the address of
+ * an array.
+ */
+#undef SSZ
+#define SSZ(name, field) ((int)&(((name *)0)->field))
+
+#undef SSZA
+#define SSZA(name, field) ((int)&(((name *)0)->field[0]))
+
+/*
+ * Print an address as a u_long (a u_long is the largest type we can print
+ * portably). Most 64-bit systems have made longs 64-bits, so this should
+ * work.
+ */
+#define P_TO_ULONG(p) ((u_long)(db_alignp_t)(p))
+
+/* Structure used to print flag values. */
+typedef struct __fn {
+ u_int32_t mask; /* Flag value. */
+ const char *name; /* Flag name. */
+} FN;
+
+/* Set, clear and test flags. */
+#define FLD_CLR(fld, f) (fld) &= ~(f)
+#define FLD_ISSET(fld, f) ((fld) & (f))
+#define FLD_SET(fld, f) (fld) |= (f)
+#define F_CLR(p, f) (p)->flags &= ~(f)
+#define F_ISSET(p, f) ((p)->flags & (f))
+#define F_SET(p, f) (p)->flags |= (f)
+#define LF_CLR(f) (flags &= ~(f))
+#define LF_ISSET(f) (flags & (f))
+#define LF_SET(f) (flags |= (f))
+
+/* Display separator string. */
+#undef DB_LINE
+#define DB_LINE "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-="
+
+/* Unused, or not-used-yet variable. "Shut that bloody compiler up!" */
+#define COMPQUIET(n, v) (n) = (v)
+
+/*******************************************************
+ * Files.
+ *******************************************************/
+ /*
+ * We use 1024 as the maximum path length. It's too hard to figure out what
+ * the real path length is, as it was traditionally stored in <sys/param.h>,
+ * and that file isn't always available.
+ */
+#undef MAXPATHLEN
+#define MAXPATHLEN 1024
+
+#define PATH_DOT "." /* Current working directory. */
+#define PATH_SEPARATOR "/" /* Path separator character. */
+
+/*
+ * Flags understood by __os_open.
+ */
+#define DB_OSO_CREATE 0x001 /* POSIX: O_CREAT */
+#define DB_OSO_EXCL 0x002 /* POSIX: O_EXCL */
+#define DB_OSO_LOG 0x004 /* Opening a log file. */
+#define DB_OSO_RDONLY 0x008 /* POSIX: O_RDONLY */
+#define DB_OSO_REGION 0x010 /* Opening a region file. */
+#define DB_OSO_SEQ 0x020 /* Expected sequential access. */
+#define DB_OSO_TEMP 0x040 /* Remove after last close. */
+#define DB_OSO_TRUNC 0x080 /* POSIX: O_TRUNC */
+
+/*
+ * Seek options understood by __os_seek.
+ */
+typedef enum {
+ DB_OS_SEEK_CUR, /* POSIX: SEEK_CUR */
+ DB_OS_SEEK_END, /* POSIX: SEEK_END */
+ DB_OS_SEEK_SET /* POSIX: SEEK_SET */
+} DB_OS_SEEK;
+
+/*******************************************************
+ * Environment.
+ *******************************************************/
+/* Type passed to __db_appname(). */
+typedef enum {
+ DB_APP_NONE=0, /* No type (region). */
+ DB_APP_DATA, /* Data file. */
+ DB_APP_LOG, /* Log file. */
+ DB_APP_TMP /* Temporary file. */
+} APPNAME;
+
+/*
+ * CDB_LOCKING CDB product locking.
+ * LOCKING_ON Locking has been configured.
+ * LOGGING_ON Logging has been configured.
+ * MPOOL_ON Memory pool has been configured.
+ * TXN_ON Transactions have been configured.
+ */
+#define CDB_LOCKING(dbenv) F_ISSET(dbenv, DB_ENV_CDB)
+#define LOCKING_ON(dbenv) ((dbenv)->lk_handle != NULL)
+#define LOGGING_ON(dbenv) ((dbenv)->lg_handle != NULL)
+#define MPOOL_ON(dbenv) ((dbenv)->mp_handle != NULL)
+#define TXN_ON(dbenv) ((dbenv)->tx_handle != NULL)
+
+/*
+ * STD_LOCKING Standard locking, that is, locking was configured and CDB
+ * was not. We do not do locking in off-page duplicate trees,
+ * so we check for that in the cursor first.
+ */
+#define STD_LOCKING(dbc) \
+ (!F_ISSET(dbc, DBC_OPD) && \
+ !CDB_LOCKING((dbc)->dbp->dbenv) && LOCKING_ON((dbc)->dbp->dbenv))
+
+/*
+ * IS_RECOVERING The system is running recovery.
+ */
+#define IS_RECOVERING(dbenv) \
+ (LOGGING_ON(dbenv) && \
+ F_ISSET((DB_LOG *)(dbenv)->lg_handle, DBLOG_RECOVER))
+
+/* Most initialization methods cannot be called after open is called. */
+#define ENV_ILLEGAL_AFTER_OPEN(dbenv, name) \
+ if (F_ISSET((dbenv), DB_ENV_OPEN_CALLED)) \
+ return (__db_mi_open(dbenv, name, 1));
+
+/* We're not actually user hostile, honest. */
+#define ENV_REQUIRES_CONFIG(dbenv, handle, i, flags) \
+ if (handle == NULL) \
+ return (__db_env_config(dbenv, i, flags));
+
+/*******************************************************
+ * Database Access Methods.
+ *******************************************************/
+/*
+ * DB_IS_THREADED --
+ * The database handle is free-threaded (was opened with DB_THREAD).
+ */
+#define DB_IS_THREADED(dbp) \
+ ((dbp)->mutexp != NULL)
+
+/* Initialization methods are often illegal before/after open is called. */
+#define DB_ILLEGAL_AFTER_OPEN(dbp, name) \
+ if (F_ISSET((dbp), DB_OPEN_CALLED)) \
+ return (__db_mi_open(dbp->dbenv, name, 1));
+#define DB_ILLEGAL_BEFORE_OPEN(dbp, name) \
+ if (!F_ISSET((dbp), DB_OPEN_CALLED)) \
+ return (__db_mi_open(dbp->dbenv, name, 0));
+/* Some initialization methods are illegal if environment isn't local. */
+#define DB_ILLEGAL_IN_ENV(dbp, name) \
+ if (!F_ISSET(dbp->dbenv, DB_ENV_DBLOCAL)) \
+ return (__db_mi_env(dbp->dbenv, name));
+#define DB_ILLEGAL_METHOD(dbp, flags) { \
+ int __ret; \
+ if ((__ret = __dbh_am_chk(dbp, flags)) != 0) \
+ return (__ret); \
+}
+
+/*
+ * Common DBC->internal fields. Each access method adds additional fields
+ * to this list, but the initial fields are common.
+ */
+#define __DBC_INTERNAL \
+ DBC *opd; /* Off-page duplicate cursor. */\
+ \
+ void *page; /* Referenced page. */ \
+ db_pgno_t root; /* Tree root. */ \
+ db_pgno_t pgno; /* Referenced page number. */ \
+ db_indx_t indx; /* Referenced key item index. */\
+ \
+ DB_LOCK lock; /* Cursor lock. */ \
+ db_lockmode_t lock_mode; /* Lock mode. */
+
+struct __dbc_internal {
+ __DBC_INTERNAL
+};
+
+/*
+ * Access-method-common macro for determining whether a cursor
+ * has been initialized.
+ */
+#define IS_INITIALIZED(dbc) ((dbc)->internal->pgno != PGNO_INVALID)
+
+/* Free the callback-allocated buffer, if necessary, hanging off of a DBT. */
+#define FREE_IF_NEEDED(sdbp, dbt) \
+ if (F_ISSET((dbt), DB_DBT_APPMALLOC)) { \
+ __os_ufree((sdbp)->dbenv, (dbt)->data, 0); \
+ F_CLR((dbt), DB_DBT_APPMALLOC); \
+ }
+
+/*
+ * Use memory belonging to object "owner" to return the results of
+ * any no-DBT-flag get ops on cursor "dbc".
+ */
+#define SET_RET_MEM(dbc, owner) \
+ do { \
+ (dbc)->rskey = &(owner)->my_rskey; \
+ (dbc)->rkey = &(owner)->my_rkey; \
+ (dbc)->rdata = &(owner)->my_rdata; \
+ } while (0)
+
+/* Use the return-data memory src is currently set to use in dest as well. */
+#define COPY_RET_MEM(src, dest) \
+ do { \
+ (dest)->rskey = (src)->rskey; \
+ (dest)->rkey = (src)->rkey; \
+ (dest)->rdata = (src)->rdata; \
+ } while (0)
+
+/* Reset the returned-memory pointers to their defaults. */
+#define RESET_RET_MEM(dbc) \
+ do { \
+ (dbc)->rskey = &(dbc)->my_rskey; \
+ (dbc)->rkey = &(dbc)->my_rkey; \
+ (dbc)->rdata = &(dbc)->my_rdata; \
+ } while (0)
+
+/*******************************************************
+ * Mpool.
+ *******************************************************/
+/*
+ * File types for DB access methods. Negative numbers are reserved to DB.
+ */
+#define DB_FTYPE_SET -1 /* Call pgin/pgout functions. */
+#define DB_FTYPE_NOTSET 0 /* Don't call... */
+
+/* Structure used as the DB pgin/pgout pgcookie. */
+typedef struct __dbpginfo {
+ size_t db_pagesize; /* Underlying page size. */
+ int needswap; /* If swapping required. */
+} DB_PGINFO;
+
+/*******************************************************
+ * Log.
+ *******************************************************/
+/* Initialize an LSN to 'zero'. */
+#define ZERO_LSN(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 0; \
+} while (0)
+
+#define MAX_LSN(LSN) do { \
+ (LSN).file = UINT32_T_MAX; \
+ (LSN).offset = UINT32_T_MAX; \
+} while (0)
+
+/* If logging is turned off, smash the lsn. */
+#define LSN_NOT_LOGGED(LSN) do { \
+ (LSN).file = 0; \
+ (LSN).offset = 1; \
+} while (0)
+
+/* Return 1 if LSN is a 'zero' lsn, otherwise return 0. */
+#define IS_ZERO_LSN(LSN) ((LSN).file == 0)
+#define IS_MAX_LSN(LSN) \
+ ((LSN).file == UINT32_T_MAX && (LSN).file == UINT32_T_MAX)
+
+/* Test if we need to log a change. */
+#define DB_LOGGING(dbc) \
+ (LOGGING_ON((dbc)->dbp->dbenv) && !F_ISSET(dbc, DBC_RECOVER))
+
+/*******************************************************
+ * Txn.
+ *******************************************************/
+#define DB_NONBLOCK(C) ((C)->txn != NULL && F_ISSET((C)->txn, TXN_NOWAIT))
+#define IS_SUBTRANSACTION(txn) \
+ ((txn) != NULL && (txn)->parent != NULL)
+
+/*******************************************************
+ * Global variables.
+ *******************************************************/
+#ifdef HAVE_VXWORKS
+#include "semLib.h"
+#endif
+
+/*
+ * DB global variables. Done in a single structure to minimize the name-space
+ * pollution.
+ */
+typedef struct __db_globals {
+ u_int32_t db_pageyield; /* db_set_pageyield */
+ u_int32_t db_panic; /* db_set_panic */
+ u_int32_t db_region_init; /* db_set_region_init */
+ u_int32_t db_tas_spins; /* db_set_tas_spins */
+#ifdef HAVE_VXWORKS
+ u_int32_t db_global_init; /* VxWorks: inited */
+ SEM_ID db_global_lock; /* VxWorks: global semaphore */
+#endif
+ /* XA: list of opened environments. */
+ TAILQ_HEAD(__db_envq, __db_env) db_envq;
+} DB_GLOBALS;
+
+#ifdef DB_INITIALIZE_DB_GLOBALS
+DB_GLOBALS __db_global_values = {
+ 0, /* db_set_pageyield */
+ 1, /* db_set_panic */
+ 0, /* db_set_region_init */
+ 0, /* db_set_tas_spins */
+#ifdef HAVE_VXWORKS
+ 0, /* db_global_init */
+ NULL, /* db_global_lock */
+#endif
+ /* XA environment queue */
+ {NULL, &__db_global_values.db_envq.tqh_first}
+};
+#else
+extern DB_GLOBALS __db_global_values;
+#endif
+#define DB_GLOBAL(v) __db_global_values.v
+
+/* Forward structure declarations. */
+struct __db_reginfo_t; typedef struct __db_reginfo_t REGINFO;
+struct __mutex_t; typedef struct __mutex_t MUTEX;
+struct __vrfy_childinfo; typedef struct __vrfy_childinfo VRFY_CHILDINFO;
+struct __vrfy_dbinfo; typedef struct __vrfy_dbinfo VRFY_DBINFO;
+struct __vrfy_pageinfo; typedef struct __vrfy_pageinfo VRFY_PAGEINFO;
+struct __db_txnlist; typedef struct __db_txnlist DB_TXNLIST;
+struct __db_txnhead; typedef struct __db_txnhead DB_TXNHEAD;
+typedef enum {
+ TXNLIST_DELETE,
+ TXNLIST_LSN,
+ TXNLIST_TXNID,
+ TXNLIST_PGNO
+} db_txnlist_type;
+
+/*
+ * Currently, region offsets are limited to 32-bits. I expect that's going
+ * to have to be fixed in the not-too-distant future, since we won't want to
+ * split 100Gb memory pools into that many different regions. It's typedef'd
+ * so it won't be too painful to upgrade.
+ */
+typedef u_int32_t roff_t;
+
+#if defined(__cplusplus)
+}
+#endif
+
+/*******************************************************
+ * More general includes.
+ *******************************************************/
+#include "debug.h"
+#include "mutex.h"
+#include "region.h"
+#include "mutex_ext.h"
+#include "env_ext.h"
+#include "os.h"
+#include "os_ext.h"
+#include "common_ext.h"
+
+#endif /* !_DB_INTERNAL_H_ */
diff --git a/db/include_auto/btree_auto.h b/db/include_auto/btree_auto.h
new file mode 100644
index 000000000..6816cc03f
--- /dev/null
+++ b/db/include_auto/btree_auto.h
@@ -0,0 +1,209 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef bam_AUTO_H
+#define bam_AUTO_H
+#define DB_bam_pg_alloc 51
+typedef struct _bam_pg_alloc_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN meta_lsn;
+ DB_LSN page_lsn;
+ db_pgno_t pgno;
+ u_int32_t ptype;
+ db_pgno_t next;
+} __bam_pg_alloc_args;
+
+#define DB_bam_pg_alloc1 60
+typedef struct _bam_pg_alloc1_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN meta_lsn;
+ DB_LSN alloc_lsn;
+ DB_LSN page_lsn;
+ db_pgno_t pgno;
+ u_int32_t ptype;
+ db_pgno_t next;
+} __bam_pg_alloc1_args;
+
+#define DB_bam_pg_free 52
+typedef struct _bam_pg_free_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN meta_lsn;
+ DBT header;
+ db_pgno_t next;
+} __bam_pg_free_args;
+
+#define DB_bam_pg_free1 61
+typedef struct _bam_pg_free1_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN meta_lsn;
+ DB_LSN alloc_lsn;
+ DBT header;
+ db_pgno_t next;
+} __bam_pg_free1_args;
+
+#define DB_bam_split1 53
+typedef struct _bam_split1_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t left;
+ DB_LSN llsn;
+ db_pgno_t right;
+ DB_LSN rlsn;
+ u_int32_t indx;
+ db_pgno_t npgno;
+ DB_LSN nlsn;
+ DBT pg;
+} __bam_split1_args;
+
+#define DB_bam_split 62
+typedef struct _bam_split_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t left;
+ DB_LSN llsn;
+ db_pgno_t right;
+ DB_LSN rlsn;
+ u_int32_t indx;
+ db_pgno_t npgno;
+ DB_LSN nlsn;
+ db_pgno_t root_pgno;
+ DBT pg;
+ u_int32_t opflags;
+} __bam_split_args;
+
+#define DB_bam_rsplit1 54
+typedef struct _bam_rsplit1_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DBT pgdbt;
+ db_pgno_t nrec;
+ DBT rootent;
+ DB_LSN rootlsn;
+} __bam_rsplit1_args;
+
+#define DB_bam_rsplit 63
+typedef struct _bam_rsplit_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DBT pgdbt;
+ db_pgno_t root_pgno;
+ db_pgno_t nrec;
+ DBT rootent;
+ DB_LSN rootlsn;
+} __bam_rsplit_args;
+
+#define DB_bam_adj 55
+typedef struct _bam_adj_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN lsn;
+ u_int32_t indx;
+ u_int32_t indx_copy;
+ u_int32_t is_insert;
+} __bam_adj_args;
+
+#define DB_bam_cadjust 56
+typedef struct _bam_cadjust_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN lsn;
+ u_int32_t indx;
+ int32_t adjust;
+ u_int32_t opflags;
+} __bam_cadjust_args;
+
+#define DB_bam_cdel 57
+typedef struct _bam_cdel_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN lsn;
+ u_int32_t indx;
+} __bam_cdel_args;
+
+#define DB_bam_repl 58
+typedef struct _bam_repl_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN lsn;
+ u_int32_t indx;
+ u_int32_t isdeleted;
+ DBT orig;
+ DBT repl;
+ u_int32_t prefix;
+ u_int32_t suffix;
+} __bam_repl_args;
+
+#define DB_bam_root 59
+typedef struct _bam_root_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t meta_pgno;
+ db_pgno_t root_pgno;
+ DB_LSN meta_lsn;
+} __bam_root_args;
+
+#define DB_bam_curadj 64
+typedef struct _bam_curadj_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_ca_mode mode;
+ db_pgno_t from_pgno;
+ db_pgno_t to_pgno;
+ db_pgno_t left_pgno;
+ u_int32_t first_indx;
+ u_int32_t from_indx;
+ u_int32_t to_indx;
+} __bam_curadj_args;
+
+#define DB_bam_rcuradj 65
+typedef struct _bam_rcuradj_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ ca_recno_arg mode;
+ db_pgno_t root;
+ db_recno_t recno;
+ u_int32_t order;
+} __bam_rcuradj_args;
+
+#endif
diff --git a/db/include_auto/btree_ext.h b/db/include_auto/btree_ext.h
new file mode 100644
index 000000000..4be50d495
--- /dev/null
+++ b/db/include_auto/btree_ext.h
@@ -0,0 +1,133 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _btree_ext_h_
+#define _btree_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __bam_cmp __P((DB *, const DBT *, PAGE *, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
+int __bam_defcmp __P((DB *, const DBT *, const DBT *));
+size_t __bam_defpfx __P((DB *, const DBT *, const DBT *));
+int __bam_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __bam_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __bam_mswap __P((PAGE *));
+void __bam_cprint __P((DBC *));
+int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, int));
+int __ram_ca_delete __P((DB *, db_pgno_t));
+int __bam_ca_di __P((DBC *, db_pgno_t, u_int32_t, int));
+int __bam_ca_dup __P((DBC *, u_int32_t, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
+int __bam_ca_undodup __P((DB *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t));
+int __bam_ca_rsplit __P((DBC *, db_pgno_t, db_pgno_t));
+int __bam_ca_split __P((DBC *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, int));
+void __bam_ca_undosplit __P((DB *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t));
+int __bam_c_init __P((DBC *, DBTYPE));
+int __bam_c_refresh __P((DBC *));
+int __bam_c_count __P((DBC *, db_recno_t *));
+int __bam_c_dup __P((DBC *, DBC *));
+int __bam_bulk_overflow __P((DBC *, u_int32_t, db_pgno_t, u_int8_t *));
+int __bam_bulk_duplicates __P((DBC *, db_pgno_t, u_int8_t *, int32_t *, int32_t **, u_int8_t **, u_int32_t *, int));
+int __bam_c_rget __P((DBC *, DBT *));
+int __bam_ditem __P((DBC *, PAGE *, u_int32_t));
+int __bam_adjindx __P((DBC *, PAGE *, u_int32_t, u_int32_t, int));
+int __bam_dpages __P((DBC *, EPG *));
+int __bam_db_create __P((DB *));
+int __bam_db_close __P((DB *));
+int __bam_set_flags __P((DB *, u_int32_t *flagsp));
+int __ram_set_flags __P((DB *, u_int32_t *flagsp));
+int __bam_open __P((DB *, const char *, db_pgno_t, u_int32_t));
+int __bam_metachk __P((DB *, const char *, BTMETA *));
+int __bam_read_root __P((DB *, const char *, db_pgno_t, u_int32_t));
+int __bam_iitem __P((DBC *, DBT *, DBT *, u_int32_t, u_int32_t));
+int __bam_ritem __P((DBC *, PAGE *, u_int32_t, DBT *));
+int __bam_pg_alloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_pg_free_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_split_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_rsplit_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_adj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_cadjust_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_cdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_repl_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_root_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_rcuradj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_reclaim __P((DB *, DB_TXN *));
+int __bam_truncate __P((DB *, DB_TXN *, u_int32_t *));
+int __ram_open __P((DB *, const char *, db_pgno_t, u_int32_t));
+int __ram_append __P((DBC *, DBT *, DBT *));
+int __ram_c_del __P((DBC *));
+int __ram_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+int __ram_ca __P((DBC *, ca_recno_arg));
+int __ram_getno __P((DBC *, const DBT *, db_recno_t *, int));
+int __ram_writeback __P((DB *));
+int __bam_rsearch __P((DBC *, db_recno_t *, u_int32_t, int, int *));
+int __bam_adjust __P((DBC *, int32_t));
+int __bam_nrecs __P((DBC *, db_recno_t *));
+db_recno_t __bam_total __P((PAGE *));
+int __bam_search __P((DBC *, db_pgno_t, const DBT *, u_int32_t, int, db_recno_t *, int *));
+int __bam_stkrel __P((DBC *, u_int32_t));
+int __bam_stkgrow __P((DB_ENV *, BTREE_CURSOR *));
+int __bam_split __P((DBC *, void *, db_pgno_t *));
+int __bam_copy __P((DB *, PAGE *, PAGE *, u_int32_t, u_int32_t));
+int __bam_stat __P((DB *, void *, u_int32_t));
+int __bam_traverse __P((DBC *, db_lockmode_t, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
+int __bam_stat_callback __P((DB *, PAGE *, void *, int *));
+int __bam_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+int __bam_30_btreemeta __P((DB *, char *, u_int8_t *));
+int __bam_31_btreemeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+int __bam_31_lbtree __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+int __bam_vrfy_meta __P((DB *, VRFY_DBINFO *, BTMETA *, db_pgno_t, u_int32_t));
+int __ram_vrfy_leaf __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+int __bam_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+int __bam_vrfy_itemorder __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t, int, int, u_int32_t));
+int __bam_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
+int __bam_vrfy_subtree __P((DB *, VRFY_DBINFO *, db_pgno_t, void *, void *, u_int32_t, u_int32_t *, u_int32_t *, u_int32_t *));
+int __bam_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, PAGE *, void *, int (*)(void *, const void *), DBT *, u_int32_t));
+int __bam_salvage_walkdupint __P((DB *, VRFY_DBINFO *, PAGE *, DBT *, void *, int (*)(void *, const void *), u_int32_t));
+int __bam_meta2pgset __P((DB *, VRFY_DBINFO *, BTMETA *, u_int32_t, DB *));
+int __bam_pg_alloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
+int __bam_pg_alloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_pg_alloc_read __P((DB_ENV *, void *, __bam_pg_alloc_args **));
+int __bam_pg_alloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_pg_alloc1_read __P((DB_ENV *, void *, __bam_pg_alloc1_args **));
+int __bam_pg_free_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, const DBT *, db_pgno_t));
+int __bam_pg_free_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_pg_free_read __P((DB_ENV *, void *, __bam_pg_free_args **));
+int __bam_pg_free1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_pg_free1_read __P((DB_ENV *, void *, __bam_pg_free1_args **));
+int __bam_split1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_split1_read __P((DB_ENV *, void *, __bam_split1_args **));
+int __bam_split_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t, DB_LSN *, db_pgno_t, const DBT *, u_int32_t));
+int __bam_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_split_read __P((DB_ENV *, void *, __bam_split_args **));
+int __bam_rsplit1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_rsplit1_read __P((DB_ENV *, void *, __bam_rsplit1_args **));
+int __bam_rsplit_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *));
+int __bam_rsplit_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_rsplit_read __P((DB_ENV *, void *, __bam_rsplit_args **));
+int __bam_adj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, u_int32_t));
+int __bam_adj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_adj_read __P((DB_ENV *, void *, __bam_adj_args **));
+int __bam_cadjust_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, int32_t, u_int32_t));
+int __bam_cadjust_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_cadjust_read __P((DB_ENV *, void *, __bam_cadjust_args **));
+int __bam_cdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t));
+int __bam_cdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_cdel_read __P((DB_ENV *, void *, __bam_cdel_args **));
+int __bam_repl_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, u_int32_t, u_int32_t));
+int __bam_repl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_repl_read __P((DB_ENV *, void *, __bam_repl_args **));
+int __bam_root_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, db_pgno_t, DB_LSN *));
+int __bam_root_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_root_read __P((DB_ENV *, void *, __bam_root_args **));
+int __bam_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ca_mode, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t));
+int __bam_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_curadj_read __P((DB_ENV *, void *, __bam_curadj_args **));
+int __bam_rcuradj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, ca_recno_arg, db_pgno_t, db_recno_t, u_int32_t));
+int __bam_rcuradj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __bam_rcuradj_read __P((DB_ENV *, void *, __bam_rcuradj_args **));
+int __bam_init_print __P((DB_ENV *));
+int __bam_init_recover __P((DB_ENV *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _btree_ext_h_ */
diff --git a/db/include_auto/btree_ext.in b/db/include_auto/btree_ext.in
new file mode 100644
index 000000000..ba19afa03
--- /dev/null
+++ b/db/include_auto/btree_ext.in
@@ -0,0 +1,256 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _btree_ext_h_
+#define _btree_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __bam_cmp __bam_cmp@DB_VERSION_UNIQUE_NAME@
+int __bam_cmp __P((DB *, const DBT *, PAGE *, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
+#define __bam_defcmp __bam_defcmp@DB_VERSION_UNIQUE_NAME@
+int __bam_defcmp __P((DB *, const DBT *, const DBT *));
+#define __bam_defpfx __bam_defpfx@DB_VERSION_UNIQUE_NAME@
+size_t __bam_defpfx __P((DB *, const DBT *, const DBT *));
+#define __bam_pgin __bam_pgin@DB_VERSION_UNIQUE_NAME@
+int __bam_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __bam_pgout __bam_pgout@DB_VERSION_UNIQUE_NAME@
+int __bam_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __bam_mswap __bam_mswap@DB_VERSION_UNIQUE_NAME@
+int __bam_mswap __P((PAGE *));
+#define __bam_cprint __bam_cprint@DB_VERSION_UNIQUE_NAME@
+void __bam_cprint __P((DBC *));
+#define __bam_ca_delete __bam_ca_delete@DB_VERSION_UNIQUE_NAME@
+int __bam_ca_delete __P((DB *, db_pgno_t, u_int32_t, int));
+#define __ram_ca_delete __ram_ca_delete@DB_VERSION_UNIQUE_NAME@
+int __ram_ca_delete __P((DB *, db_pgno_t));
+#define __bam_ca_di __bam_ca_di@DB_VERSION_UNIQUE_NAME@
+int __bam_ca_di __P((DBC *, db_pgno_t, u_int32_t, int));
+#define __bam_ca_dup __bam_ca_dup@DB_VERSION_UNIQUE_NAME@
+int __bam_ca_dup __P((DBC *, u_int32_t, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
+#define __bam_ca_undodup __bam_ca_undodup@DB_VERSION_UNIQUE_NAME@
+int __bam_ca_undodup __P((DB *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t));
+#define __bam_ca_rsplit __bam_ca_rsplit@DB_VERSION_UNIQUE_NAME@
+int __bam_ca_rsplit __P((DBC *, db_pgno_t, db_pgno_t));
+#define __bam_ca_split __bam_ca_split@DB_VERSION_UNIQUE_NAME@
+int __bam_ca_split __P((DBC *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, int));
+#define __bam_ca_undosplit __bam_ca_undosplit@DB_VERSION_UNIQUE_NAME@
+void __bam_ca_undosplit __P((DB *, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t));
+#define __bam_c_init __bam_c_init@DB_VERSION_UNIQUE_NAME@
+int __bam_c_init __P((DBC *, DBTYPE));
+#define __bam_c_refresh __bam_c_refresh@DB_VERSION_UNIQUE_NAME@
+int __bam_c_refresh __P((DBC *));
+#define __bam_c_count __bam_c_count@DB_VERSION_UNIQUE_NAME@
+int __bam_c_count __P((DBC *, db_recno_t *));
+#define __bam_c_dup __bam_c_dup@DB_VERSION_UNIQUE_NAME@
+int __bam_c_dup __P((DBC *, DBC *));
+#define __bam_bulk_overflow __bam_bulk_overflow@DB_VERSION_UNIQUE_NAME@
+int __bam_bulk_overflow __P((DBC *, u_int32_t, db_pgno_t, u_int8_t *));
+#define __bam_bulk_duplicates __bam_bulk_duplicates@DB_VERSION_UNIQUE_NAME@
+int __bam_bulk_duplicates __P((DBC *, db_pgno_t, u_int8_t *, int32_t *, int32_t **, u_int8_t **, u_int32_t *, int));
+#define __bam_c_rget __bam_c_rget@DB_VERSION_UNIQUE_NAME@
+int __bam_c_rget __P((DBC *, DBT *));
+#define __bam_ditem __bam_ditem@DB_VERSION_UNIQUE_NAME@
+int __bam_ditem __P((DBC *, PAGE *, u_int32_t));
+#define __bam_adjindx __bam_adjindx@DB_VERSION_UNIQUE_NAME@
+int __bam_adjindx __P((DBC *, PAGE *, u_int32_t, u_int32_t, int));
+#define __bam_dpages __bam_dpages@DB_VERSION_UNIQUE_NAME@
+int __bam_dpages __P((DBC *, EPG *));
+#define __bam_db_create __bam_db_create@DB_VERSION_UNIQUE_NAME@
+int __bam_db_create __P((DB *));
+#define __bam_db_close __bam_db_close@DB_VERSION_UNIQUE_NAME@
+int __bam_db_close __P((DB *));
+#define __bam_set_flags __bam_set_flags@DB_VERSION_UNIQUE_NAME@
+int __bam_set_flags __P((DB *, u_int32_t *flagsp));
+#define __ram_set_flags __ram_set_flags@DB_VERSION_UNIQUE_NAME@
+int __ram_set_flags __P((DB *, u_int32_t *flagsp));
+#define __bam_open __bam_open@DB_VERSION_UNIQUE_NAME@
+int __bam_open __P((DB *, const char *, db_pgno_t, u_int32_t));
+#define __bam_metachk __bam_metachk@DB_VERSION_UNIQUE_NAME@
+int __bam_metachk __P((DB *, const char *, BTMETA *));
+#define __bam_read_root __bam_read_root@DB_VERSION_UNIQUE_NAME@
+int __bam_read_root __P((DB *, const char *, db_pgno_t, u_int32_t));
+#define __bam_iitem __bam_iitem@DB_VERSION_UNIQUE_NAME@
+int __bam_iitem __P((DBC *, DBT *, DBT *, u_int32_t, u_int32_t));
+#define __bam_ritem __bam_ritem@DB_VERSION_UNIQUE_NAME@
+int __bam_ritem __P((DBC *, PAGE *, u_int32_t, DBT *));
+#define __bam_pg_alloc_recover __bam_pg_alloc_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_alloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_pg_free_recover __bam_pg_free_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_free_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_split_recover __bam_split_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_split_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_rsplit_recover __bam_rsplit_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_rsplit_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_adj_recover __bam_adj_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_adj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_cadjust_recover __bam_cadjust_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_cadjust_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_cdel_recover __bam_cdel_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_cdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_repl_recover __bam_repl_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_repl_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_root_recover __bam_root_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_root_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_curadj_recover __bam_curadj_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_rcuradj_recover __bam_rcuradj_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_rcuradj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_reclaim __bam_reclaim@DB_VERSION_UNIQUE_NAME@
+int __bam_reclaim __P((DB *, DB_TXN *));
+#define __bam_truncate __bam_truncate@DB_VERSION_UNIQUE_NAME@
+int __bam_truncate __P((DB *, DB_TXN *, u_int32_t *));
+#define __ram_open __ram_open@DB_VERSION_UNIQUE_NAME@
+int __ram_open __P((DB *, const char *, db_pgno_t, u_int32_t));
+#define __ram_append __ram_append@DB_VERSION_UNIQUE_NAME@
+int __ram_append __P((DBC *, DBT *, DBT *));
+#define __ram_c_del __ram_c_del@DB_VERSION_UNIQUE_NAME@
+int __ram_c_del __P((DBC *));
+#define __ram_c_get __ram_c_get@DB_VERSION_UNIQUE_NAME@
+int __ram_c_get __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+#define __ram_c_put __ram_c_put@DB_VERSION_UNIQUE_NAME@
+int __ram_c_put __P((DBC *, DBT *, DBT *, u_int32_t, db_pgno_t *));
+#define __ram_ca __ram_ca@DB_VERSION_UNIQUE_NAME@
+int __ram_ca __P((DBC *, ca_recno_arg));
+#define __ram_getno __ram_getno@DB_VERSION_UNIQUE_NAME@
+int __ram_getno __P((DBC *, const DBT *, db_recno_t *, int));
+#define __ram_writeback __ram_writeback@DB_VERSION_UNIQUE_NAME@
+int __ram_writeback __P((DB *));
+#define __bam_rsearch __bam_rsearch@DB_VERSION_UNIQUE_NAME@
+int __bam_rsearch __P((DBC *, db_recno_t *, u_int32_t, int, int *));
+#define __bam_adjust __bam_adjust@DB_VERSION_UNIQUE_NAME@
+int __bam_adjust __P((DBC *, int32_t));
+#define __bam_nrecs __bam_nrecs@DB_VERSION_UNIQUE_NAME@
+int __bam_nrecs __P((DBC *, db_recno_t *));
+#define __bam_total __bam_total@DB_VERSION_UNIQUE_NAME@
+db_recno_t __bam_total __P((PAGE *));
+#define __bam_search __bam_search@DB_VERSION_UNIQUE_NAME@
+int __bam_search __P((DBC *, db_pgno_t, const DBT *, u_int32_t, int, db_recno_t *, int *));
+#define __bam_stkrel __bam_stkrel@DB_VERSION_UNIQUE_NAME@
+int __bam_stkrel __P((DBC *, u_int32_t));
+#define __bam_stkgrow __bam_stkgrow@DB_VERSION_UNIQUE_NAME@
+int __bam_stkgrow __P((DB_ENV *, BTREE_CURSOR *));
+#define __bam_split __bam_split@DB_VERSION_UNIQUE_NAME@
+int __bam_split __P((DBC *, void *, db_pgno_t *));
+#define __bam_copy __bam_copy@DB_VERSION_UNIQUE_NAME@
+int __bam_copy __P((DB *, PAGE *, PAGE *, u_int32_t, u_int32_t));
+#define __bam_stat __bam_stat@DB_VERSION_UNIQUE_NAME@
+int __bam_stat __P((DB *, void *, u_int32_t));
+#define __bam_traverse __bam_traverse@DB_VERSION_UNIQUE_NAME@
+int __bam_traverse __P((DBC *, db_lockmode_t, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
+#define __bam_stat_callback __bam_stat_callback@DB_VERSION_UNIQUE_NAME@
+int __bam_stat_callback __P((DB *, PAGE *, void *, int *));
+#define __bam_key_range __bam_key_range@DB_VERSION_UNIQUE_NAME@
+int __bam_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+#define __bam_30_btreemeta __bam_30_btreemeta@DB_VERSION_UNIQUE_NAME@
+int __bam_30_btreemeta __P((DB *, char *, u_int8_t *));
+#define __bam_31_btreemeta __bam_31_btreemeta@DB_VERSION_UNIQUE_NAME@
+int __bam_31_btreemeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+#define __bam_31_lbtree __bam_31_lbtree@DB_VERSION_UNIQUE_NAME@
+int __bam_31_lbtree __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+#define __bam_vrfy_meta __bam_vrfy_meta@DB_VERSION_UNIQUE_NAME@
+int __bam_vrfy_meta __P((DB *, VRFY_DBINFO *, BTMETA *, db_pgno_t, u_int32_t));
+#define __ram_vrfy_leaf __ram_vrfy_leaf@DB_VERSION_UNIQUE_NAME@
+int __ram_vrfy_leaf __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+#define __bam_vrfy __bam_vrfy@DB_VERSION_UNIQUE_NAME@
+int __bam_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+#define __bam_vrfy_itemorder __bam_vrfy_itemorder@DB_VERSION_UNIQUE_NAME@
+int __bam_vrfy_itemorder __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t, int, int, u_int32_t));
+#define __bam_vrfy_structure __bam_vrfy_structure@DB_VERSION_UNIQUE_NAME@
+int __bam_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
+#define __bam_vrfy_subtree __bam_vrfy_subtree@DB_VERSION_UNIQUE_NAME@
+int __bam_vrfy_subtree __P((DB *, VRFY_DBINFO *, db_pgno_t, void *, void *, u_int32_t, u_int32_t *, u_int32_t *, u_int32_t *));
+#define __bam_salvage __bam_salvage@DB_VERSION_UNIQUE_NAME@
+int __bam_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, PAGE *, void *, int (*)(void *, const void *), DBT *, u_int32_t));
+#define __bam_salvage_walkdupint __bam_salvage_walkdupint@DB_VERSION_UNIQUE_NAME@
+int __bam_salvage_walkdupint __P((DB *, VRFY_DBINFO *, PAGE *, DBT *, void *, int (*)(void *, const void *), u_int32_t));
+#define __bam_meta2pgset __bam_meta2pgset@DB_VERSION_UNIQUE_NAME@
+int __bam_meta2pgset __P((DB *, VRFY_DBINFO *, BTMETA *, u_int32_t, DB *));
+#define __bam_pg_alloc_log __bam_pg_alloc_log@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_alloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
+#define __bam_pg_alloc_print __bam_pg_alloc_print@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_alloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_pg_alloc_read __bam_pg_alloc_read@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_alloc_read __P((DB_ENV *, void *, __bam_pg_alloc_args **));
+#define __bam_pg_alloc1_print __bam_pg_alloc1_print@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_alloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_pg_alloc1_read __bam_pg_alloc1_read@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_alloc1_read __P((DB_ENV *, void *, __bam_pg_alloc1_args **));
+#define __bam_pg_free_log __bam_pg_free_log@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_free_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, const DBT *, db_pgno_t));
+#define __bam_pg_free_print __bam_pg_free_print@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_free_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_pg_free_read __bam_pg_free_read@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_free_read __P((DB_ENV *, void *, __bam_pg_free_args **));
+#define __bam_pg_free1_print __bam_pg_free1_print@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_free1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_pg_free1_read __bam_pg_free1_read@DB_VERSION_UNIQUE_NAME@
+int __bam_pg_free1_read __P((DB_ENV *, void *, __bam_pg_free1_args **));
+#define __bam_split1_print __bam_split1_print@DB_VERSION_UNIQUE_NAME@
+int __bam_split1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_split1_read __bam_split1_read@DB_VERSION_UNIQUE_NAME@
+int __bam_split1_read __P((DB_ENV *, void *, __bam_split1_args **));
+#define __bam_split_log __bam_split_log@DB_VERSION_UNIQUE_NAME@
+int __bam_split_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, u_int32_t, db_pgno_t, DB_LSN *, db_pgno_t, const DBT *, u_int32_t));
+#define __bam_split_print __bam_split_print@DB_VERSION_UNIQUE_NAME@
+int __bam_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_split_read __bam_split_read@DB_VERSION_UNIQUE_NAME@
+int __bam_split_read __P((DB_ENV *, void *, __bam_split_args **));
+#define __bam_rsplit1_print __bam_rsplit1_print@DB_VERSION_UNIQUE_NAME@
+int __bam_rsplit1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_rsplit1_read __bam_rsplit1_read@DB_VERSION_UNIQUE_NAME@
+int __bam_rsplit1_read __P((DB_ENV *, void *, __bam_rsplit1_args **));
+#define __bam_rsplit_log __bam_rsplit_log@DB_VERSION_UNIQUE_NAME@
+int __bam_rsplit_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *));
+#define __bam_rsplit_print __bam_rsplit_print@DB_VERSION_UNIQUE_NAME@
+int __bam_rsplit_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_rsplit_read __bam_rsplit_read@DB_VERSION_UNIQUE_NAME@
+int __bam_rsplit_read __P((DB_ENV *, void *, __bam_rsplit_args **));
+#define __bam_adj_log __bam_adj_log@DB_VERSION_UNIQUE_NAME@
+int __bam_adj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, u_int32_t));
+#define __bam_adj_print __bam_adj_print@DB_VERSION_UNIQUE_NAME@
+int __bam_adj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_adj_read __bam_adj_read@DB_VERSION_UNIQUE_NAME@
+int __bam_adj_read __P((DB_ENV *, void *, __bam_adj_args **));
+#define __bam_cadjust_log __bam_cadjust_log@DB_VERSION_UNIQUE_NAME@
+int __bam_cadjust_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, int32_t, u_int32_t));
+#define __bam_cadjust_print __bam_cadjust_print@DB_VERSION_UNIQUE_NAME@
+int __bam_cadjust_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_cadjust_read __bam_cadjust_read@DB_VERSION_UNIQUE_NAME@
+int __bam_cadjust_read __P((DB_ENV *, void *, __bam_cadjust_args **));
+#define __bam_cdel_log __bam_cdel_log@DB_VERSION_UNIQUE_NAME@
+int __bam_cdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t));
+#define __bam_cdel_print __bam_cdel_print@DB_VERSION_UNIQUE_NAME@
+int __bam_cdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_cdel_read __bam_cdel_read@DB_VERSION_UNIQUE_NAME@
+int __bam_cdel_read __P((DB_ENV *, void *, __bam_cdel_args **));
+#define __bam_repl_log __bam_repl_log@DB_VERSION_UNIQUE_NAME@
+int __bam_repl_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, u_int32_t, u_int32_t));
+#define __bam_repl_print __bam_repl_print@DB_VERSION_UNIQUE_NAME@
+int __bam_repl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_repl_read __bam_repl_read@DB_VERSION_UNIQUE_NAME@
+int __bam_repl_read __P((DB_ENV *, void *, __bam_repl_args **));
+#define __bam_root_log __bam_root_log@DB_VERSION_UNIQUE_NAME@
+int __bam_root_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, db_pgno_t, DB_LSN *));
+#define __bam_root_print __bam_root_print@DB_VERSION_UNIQUE_NAME@
+int __bam_root_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_root_read __bam_root_read@DB_VERSION_UNIQUE_NAME@
+int __bam_root_read __P((DB_ENV *, void *, __bam_root_args **));
+#define __bam_curadj_log __bam_curadj_log@DB_VERSION_UNIQUE_NAME@
+int __bam_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ca_mode, db_pgno_t, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t));
+#define __bam_curadj_print __bam_curadj_print@DB_VERSION_UNIQUE_NAME@
+int __bam_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_curadj_read __bam_curadj_read@DB_VERSION_UNIQUE_NAME@
+int __bam_curadj_read __P((DB_ENV *, void *, __bam_curadj_args **));
+#define __bam_rcuradj_log __bam_rcuradj_log@DB_VERSION_UNIQUE_NAME@
+int __bam_rcuradj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, ca_recno_arg, db_pgno_t, db_recno_t, u_int32_t));
+#define __bam_rcuradj_print __bam_rcuradj_print@DB_VERSION_UNIQUE_NAME@
+int __bam_rcuradj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __bam_rcuradj_read __bam_rcuradj_read@DB_VERSION_UNIQUE_NAME@
+int __bam_rcuradj_read __P((DB_ENV *, void *, __bam_rcuradj_args **));
+#define __bam_init_print __bam_init_print@DB_VERSION_UNIQUE_NAME@
+int __bam_init_print __P((DB_ENV *));
+#define __bam_init_recover __bam_init_recover@DB_VERSION_UNIQUE_NAME@
+int __bam_init_recover __P((DB_ENV *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _btree_ext_h_ */
diff --git a/db/include_auto/clib_ext.h b/db/include_auto/clib_ext.h
new file mode 100644
index 000000000..1818ae49d
--- /dev/null
+++ b/db/include_auto/clib_ext.h
@@ -0,0 +1,39 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _clib_ext_h_
+#define _clib_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#ifndef HAVE_GETCWD
+char *getcwd __P((char *, size_t));
+#endif
+#ifndef HAVE_GETOPT
+int getopt __P((int, char * const *, const char *));
+#endif
+#ifndef HAVE_MEMCMP
+int memcmp __P((const void *, const void *, size_t));
+#endif
+#ifndef HAVE_MEMCPY
+void *memcpy __P((void *, const void *, size_t));
+#endif
+#ifndef HAVE_MEMMOVE
+void *memmove __P((void *, const void *, size_t));
+#endif
+#ifndef HAVE_RAISE
+int raise __P((int));
+#endif
+#ifndef HAVE_SNPRINTF
+int snprintf __P((char *, size_t, const char *, ...));
+#endif
+#ifndef HAVE_STRCASECMP
+int strcasecmp __P((const char *, const char *));
+#endif
+#ifndef HAVE_STRERROR
+char *strerror __P((int));
+#endif
+#ifndef HAVE_VSNPRINTF
+#endif
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _clib_ext_h_ */
diff --git a/db/include_auto/clib_ext.in b/db/include_auto/clib_ext.in
new file mode 100644
index 000000000..fbce4eda7
--- /dev/null
+++ b/db/include_auto/clib_ext.in
@@ -0,0 +1,48 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _clib_ext_h_
+#define _clib_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#ifndef HAVE_GETCWD
+#define getcwd getcwd@DB_VERSION_UNIQUE_NAME@
+char *getcwd __P((char *, size_t));
+#endif
+#ifndef HAVE_GETOPT
+#define getopt getopt@DB_VERSION_UNIQUE_NAME@
+int getopt __P((int, char * const *, const char *));
+#endif
+#ifndef HAVE_MEMCMP
+#define memcmp memcmp@DB_VERSION_UNIQUE_NAME@
+int memcmp __P((const void *, const void *, size_t));
+#endif
+#ifndef HAVE_MEMCPY
+#define memcpy memcpy@DB_VERSION_UNIQUE_NAME@
+void *memcpy __P((void *, const void *, size_t));
+#endif
+#ifndef HAVE_MEMMOVE
+#define memmove memmove@DB_VERSION_UNIQUE_NAME@
+void *memmove __P((void *, const void *, size_t));
+#endif
+#ifndef HAVE_RAISE
+#define raise raise@DB_VERSION_UNIQUE_NAME@
+int raise __P((int));
+#endif
+#ifndef HAVE_SNPRINTF
+#define snprintf snprintf@DB_VERSION_UNIQUE_NAME@
+int snprintf __P((char *, size_t, const char *, ...));
+#endif
+#ifndef HAVE_STRCASECMP
+#define strcasecmp strcasecmp@DB_VERSION_UNIQUE_NAME@
+int strcasecmp __P((const char *, const char *));
+#endif
+#ifndef HAVE_STRERROR
+#define strerror strerror@DB_VERSION_UNIQUE_NAME@
+char *strerror __P((int));
+#endif
+#ifndef HAVE_VSNPRINTF
+#endif
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _clib_ext_h_ */
diff --git a/db/include_auto/common_ext.h b/db/include_auto/common_ext.h
new file mode 100644
index 000000000..cf6fe5b0b
--- /dev/null
+++ b/db/include_auto/common_ext.h
@@ -0,0 +1,40 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _common_ext_h_
+#define _common_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __db_byteorder __P((DB_ENV *, int));
+int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t));
+int __db_fcchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t));
+int __db_ferr __P((const DB_ENV *, const char *, int));
+int __db_pgerr __P((DB *, db_pgno_t));
+int __db_pgfmt __P((DB *, db_pgno_t));
+int __db_eopnotsup __P((const DB_ENV *));
+#ifdef DIAGNOSTIC
+void __db_assert __P((const char *, const char *, int));
+#endif
+int __db_panic_msg __P((DB_ENV *));
+int __db_panic __P((DB_ENV *, int));
+void __db_err __P((const DB_ENV *, const char *, ...));
+void __db_real_err __P((const DB_ENV *, int, int, int, const char *, va_list));
+void __db_logmsg __P((const DB_ENV *, DB_TXN *, const char *, u_int32_t, const char *, ...));
+int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t));
+int __db_unknown_type __P((DB_ENV *, char *, u_int32_t));
+#ifdef DIAGNOSTIC
+int __db_missing_txn_err __P((DB *));
+#endif
+#ifdef DIAGNOSTIC
+int __db_not_txn_env __P((DB *));
+#endif
+int __db_getlong __P((DB *, const char *, char *, long, long, long *));
+int __db_getulong __P((DB *, const char *, char *, u_long, u_long, u_long *));
+u_int32_t __db_log2 __P((u_int32_t));
+int __db_util_logset __P((const char *, char *));
+void __db_util_siginit __P((void));
+int __db_util_interrupted __P((void));
+void __db_util_sigresend __P((void));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _common_ext_h_ */
diff --git a/db/include_auto/common_ext.in b/db/include_auto/common_ext.in
new file mode 100644
index 000000000..54c9717e3
--- /dev/null
+++ b/db/include_auto/common_ext.in
@@ -0,0 +1,64 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _common_ext_h_
+#define _common_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __db_byteorder __db_byteorder@DB_VERSION_UNIQUE_NAME@
+int __db_byteorder __P((DB_ENV *, int));
+#define __db_fchk __db_fchk@DB_VERSION_UNIQUE_NAME@
+int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t));
+#define __db_fcchk __db_fcchk@DB_VERSION_UNIQUE_NAME@
+int __db_fcchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t));
+#define __db_ferr __db_ferr@DB_VERSION_UNIQUE_NAME@
+int __db_ferr __P((const DB_ENV *, const char *, int));
+#define __db_pgerr __db_pgerr@DB_VERSION_UNIQUE_NAME@
+int __db_pgerr __P((DB *, db_pgno_t));
+#define __db_pgfmt __db_pgfmt@DB_VERSION_UNIQUE_NAME@
+int __db_pgfmt __P((DB *, db_pgno_t));
+#define __db_eopnotsup __db_eopnotsup@DB_VERSION_UNIQUE_NAME@
+int __db_eopnotsup __P((const DB_ENV *));
+#ifdef DIAGNOSTIC
+#define __db_assert __db_assert@DB_VERSION_UNIQUE_NAME@
+void __db_assert __P((const char *, const char *, int));
+#endif
+#define __db_panic_msg __db_panic_msg@DB_VERSION_UNIQUE_NAME@
+int __db_panic_msg __P((DB_ENV *));
+#define __db_panic __db_panic@DB_VERSION_UNIQUE_NAME@
+int __db_panic __P((DB_ENV *, int));
+#define __db_err __db_err@DB_VERSION_UNIQUE_NAME@
+void __db_err __P((const DB_ENV *, const char *, ...));
+#define __db_real_err __db_real_err@DB_VERSION_UNIQUE_NAME@
+void __db_real_err __P((const DB_ENV *, int, int, int, const char *, va_list));
+#define __db_logmsg __db_logmsg@DB_VERSION_UNIQUE_NAME@
+void __db_logmsg __P((const DB_ENV *, DB_TXN *, const char *, u_int32_t, const char *, ...));
+#define __db_unknown_flag __db_unknown_flag@DB_VERSION_UNIQUE_NAME@
+int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t));
+#define __db_unknown_type __db_unknown_type@DB_VERSION_UNIQUE_NAME@
+int __db_unknown_type __P((DB_ENV *, char *, u_int32_t));
+#ifdef DIAGNOSTIC
+#define __db_missing_txn_err __db_missing_txn_err@DB_VERSION_UNIQUE_NAME@
+int __db_missing_txn_err __P((DB *));
+#endif
+#ifdef DIAGNOSTIC
+#define __db_not_txn_env __db_not_txn_env@DB_VERSION_UNIQUE_NAME@
+int __db_not_txn_env __P((DB *));
+#endif
+#define __db_getlong __db_getlong@DB_VERSION_UNIQUE_NAME@
+int __db_getlong __P((DB *, const char *, char *, long, long, long *));
+#define __db_getulong __db_getulong@DB_VERSION_UNIQUE_NAME@
+int __db_getulong __P((DB *, const char *, char *, u_long, u_long, u_long *));
+#define __db_log2 __db_log2@DB_VERSION_UNIQUE_NAME@
+u_int32_t __db_log2 __P((u_int32_t));
+#define __db_util_logset __db_util_logset@DB_VERSION_UNIQUE_NAME@
+int __db_util_logset __P((const char *, char *));
+#define __db_util_siginit __db_util_siginit@DB_VERSION_UNIQUE_NAME@
+void __db_util_siginit __P((void));
+#define __db_util_interrupted __db_util_interrupted@DB_VERSION_UNIQUE_NAME@
+int __db_util_interrupted __P((void));
+#define __db_util_sigresend __db_util_sigresend@DB_VERSION_UNIQUE_NAME@
+void __db_util_sigresend __P((void));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _common_ext_h_ */
diff --git a/db/include_auto/crdel_auto.h b/db/include_auto/crdel_auto.h
new file mode 100644
index 000000000..73175d65f
--- /dev/null
+++ b/db/include_auto/crdel_auto.h
@@ -0,0 +1,63 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef crdel_AUTO_H
+#define crdel_AUTO_H
+#define DB_crdel_fileopen 141
+typedef struct _crdel_fileopen_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DBT name;
+ u_int32_t mode;
+} __crdel_fileopen_args;
+
+#define DB_crdel_metasub 142
+typedef struct _crdel_metasub_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DBT page;
+ DB_LSN lsn;
+} __crdel_metasub_args;
+
+#define DB_crdel_metapage 143
+typedef struct _crdel_metapage_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DBT name;
+ db_pgno_t pgno;
+ DBT page;
+} __crdel_metapage_args;
+
+#define DB_crdel_old_delete 144
+typedef struct _crdel_old_delete_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DBT name;
+} __crdel_old_delete_args;
+
+#define DB_crdel_rename 145
+typedef struct _crdel_rename_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DBT name;
+ DBT newname;
+} __crdel_rename_args;
+
+#define DB_crdel_delete 146
+typedef struct _crdel_delete_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DBT name;
+} __crdel_delete_args;
+
+#endif
diff --git a/db/include_auto/db185_ext.in b/db/include_auto/db185_ext.in
new file mode 100644
index 000000000..1fe3dbb31
--- /dev/null
+++ b/db/include_auto/db185_ext.in
@@ -0,0 +1,11 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define dbopen __db185_open
+DB185 *__db185_open __P((const char *, int, int, DBTYPE, const void *));
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_DB_185_H_ */
diff --git a/db/include_auto/db185_uext.in b/db/include_auto/db185_uext.in
new file mode 100644
index 000000000..f4bf4dcfa
--- /dev/null
+++ b/db/include_auto/db185_uext.in
@@ -0,0 +1,12 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define dbopen __db185_open@DB_VERSION_UNIQUE_NAME@
+#define __db185_open __db185_open@DB_VERSION_UNIQUE_NAME@
+DB185 *__db185_open __P((const char *, int, int, DBTYPE, const void *));
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_DB_185_H_ */
diff --git a/db/include_auto/db_auto.h b/db/include_auto/db_auto.h
new file mode 100644
index 000000000..a82b750c7
--- /dev/null
+++ b/db/include_auto/db_auto.h
@@ -0,0 +1,108 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef db_AUTO_H
+#define db_AUTO_H
+#define DB_db_addrem 41
+typedef struct _db_addrem_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t pgno;
+ u_int32_t indx;
+ size_t nbytes;
+ DBT hdr;
+ DBT dbt;
+ DB_LSN pagelsn;
+} __db_addrem_args;
+
+#define DB_db_split 42
+typedef struct _db_split_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DBT pageimage;
+ DB_LSN pagelsn;
+} __db_split_args;
+
+#define DB_db_big 43
+typedef struct _db_big_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t pgno;
+ db_pgno_t prev_pgno;
+ db_pgno_t next_pgno;
+ DBT dbt;
+ DB_LSN pagelsn;
+ DB_LSN prevlsn;
+ DB_LSN nextlsn;
+} __db_big_args;
+
+#define DB_db_ovref 44
+typedef struct _db_ovref_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ int32_t adjust;
+ DB_LSN lsn;
+} __db_ovref_args;
+
+#define DB_db_relink 45
+typedef struct _db_relink_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN lsn;
+ db_pgno_t prev;
+ DB_LSN lsn_prev;
+ db_pgno_t next;
+ DB_LSN lsn_next;
+} __db_relink_args;
+
+#define DB_db_addpage 46
+typedef struct _db_addpage_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN lsn;
+ db_pgno_t nextpgno;
+ DB_LSN nextlsn;
+} __db_addpage_args;
+
+#define DB_db_debug 47
+typedef struct _db_debug_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DBT op;
+ int32_t fileid;
+ DBT key;
+ DBT data;
+ u_int32_t arg_flags;
+} __db_debug_args;
+
+#define DB_db_noop 48
+typedef struct _db_noop_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN prevlsn;
+} __db_noop_args;
+
+#endif
diff --git a/db/include_auto/db_ext.h b/db/include_auto/db_ext.h
new file mode 100644
index 000000000..46526a30a
--- /dev/null
+++ b/db/include_auto/db_ext.h
@@ -0,0 +1,205 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _db_ext_h_
+#define _db_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __crdel_fileopen_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, u_int32_t));
+int __crdel_fileopen_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_fileopen_read __P((DB_ENV *, void *, __crdel_fileopen_args **));
+int __crdel_metasub_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, DB_LSN *));
+int __crdel_metasub_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_metasub_read __P((DB_ENV *, void *, __crdel_metasub_args **));
+int __crdel_metapage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, db_pgno_t, const DBT *));
+int __crdel_metapage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_metapage_read __P((DB_ENV *, void *, __crdel_metapage_args **));
+int __crdel_old_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_old_delete_read __P((DB_ENV *, void *, __crdel_old_delete_args **));
+int __crdel_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, const DBT *));
+int __crdel_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_rename_read __P((DB_ENV *, void *, __crdel_rename_args **));
+int __crdel_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *));
+int __crdel_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_delete_read __P((DB_ENV *, void *, __crdel_delete_args **));
+int __crdel_init_print __P((DB_ENV *));
+int __crdel_init_recover __P((DB_ENV *));
+int __crdel_fileopen_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_metasub_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_metapage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __crdel_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
+int __db_dbopen __P((DB *, const char *, u_int32_t, int, db_pgno_t));
+int __db_master_open __P((DB *, const char *, u_int32_t, int, DB **));
+int __db_dbenv_setup __P((DB *, const char *, u_int32_t));
+int __db_close __P((DB *, u_int32_t));
+int __db_remove __P((DB *, const char *, const char *, u_int32_t));
+int __db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
+int __db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
+int __db_log_page __P((DB *, const char *, DB_LSN *, db_pgno_t, PAGE *));
+int __db_backup_name __P((DB_ENV *, const char *, char **, DB_LSN *));
+DB *__dblist_get __P((DB_ENV *, u_int32_t));
+int __db_testcopy __P((DB *, const char *));
+int __db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
+int __db_icursor __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, u_int32_t, DBC **));
+int __db_cprint __P((DB *));
+int __db_fd __P((DB *, int *));
+int __db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+int __db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+int __db_delete __P((DB *, DB_TXN *, DBT *, u_int32_t));
+int __db_sync __P((DB *, u_int32_t));
+int __db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+int __db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+int __db_addrem_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, size_t, const DBT *, const DBT *, DB_LSN *));
+int __db_addrem_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_addrem_read __P((DB_ENV *, void *, __db_addrem_args **));
+int __db_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_split_read __P((DB_ENV *, void *, __db_split_args **));
+int __db_big_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *, DB_LSN *, DB_LSN *));
+int __db_big_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_big_read __P((DB_ENV *, void *, __db_big_args **));
+int __db_ovref_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, int32_t, DB_LSN *));
+int __db_ovref_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_ovref_read __P((DB_ENV *, void *, __db_ovref_args **));
+int __db_relink_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
+int __db_relink_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_relink_read __P((DB_ENV *, void *, __db_relink_args **));
+int __db_addpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_addpage_read __P((DB_ENV *, void *, __db_addpage_args **));
+int __db_debug_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, int32_t, const DBT *, const DBT *, u_int32_t));
+int __db_debug_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_debug_read __P((DB_ENV *, void *, __db_debug_args **));
+int __db_noop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *));
+int __db_noop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_noop_read __P((DB_ENV *, void *, __db_noop_args **));
+int __db_init_print __P((DB_ENV *));
+int __db_init_recover __P((DB_ENV *));
+int __db_c_close __P((DBC *));
+int __db_c_destroy __P((DBC *));
+int __db_c_count __P((DBC *, db_recno_t *, u_int32_t));
+int __db_c_del __P((DBC *, u_int32_t));
+int __db_c_dup __P((DBC *, DBC **, u_int32_t));
+int __db_c_idup __P((DBC *, DBC **, u_int32_t));
+int __db_c_newopd __P((DBC *, db_pgno_t, DBC **));
+int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
+int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
+int __db_duperr __P((DB *, u_int32_t));
+int __db_c_secondary_get __P((DBC *, DBT *, DBT *, u_int32_t));
+int __db_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+int __db_c_del_primary __P((DBC *));
+DB *__db_s_first __P((DB *));
+int __db_s_next __P((DB **));
+int __db_s_done __P((DB *));
+u_int32_t __db_partsize __P((u_int32_t, DBT *));
+int __db_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __db_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+void __db_metaswap __P((PAGE *));
+int __db_byteswap __P((DB_ENV *, db_pgno_t, PAGE *, size_t, int));
+int __db_dispatch __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_add_recovery __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), u_int32_t));
+int __deprecated_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_txnlist_init __P((DB_ENV *, void *));
+int __db_txnlist_add __P((DB_ENV *, void *, u_int32_t, int32_t));
+int __db_txnlist_remove __P((DB_ENV *, void *, u_int32_t));
+int __db_txnlist_close __P((void *, int32_t, u_int32_t));
+int __db_txnlist_delete __P((DB_ENV *, void *, char *, u_int32_t, int));
+void __db_txnlist_end __P((DB_ENV *, void *));
+int __db_txnlist_find __P((DB_ENV *, void *, u_int32_t));
+void __db_txnlist_gen __P((void *, int));
+int __db_txnlist_lsnadd __P((DB_ENV *, void *, DB_LSN *, u_int32_t));
+int __db_txnlist_lsninit __P((DB_ENV *, DB_TXNHEAD *, DB_LSN *));
+int __db_add_limbo __P((DB_ENV *, void *, int32_t, db_pgno_t, int32_t));
+int __db_do_the_limbo __P((DB_ENV *, DB_TXNHEAD *));
+void __db_txnlist_print __P((void *));
+int __db_ditem __P((DBC *, PAGE *, u_int32_t, u_int32_t));
+int __db_pitem __P((DBC *, PAGE *, u_int32_t, u_int32_t, DBT *, DBT *));
+int __db_relink __P((DBC *, u_int32_t, PAGE *, PAGE **, int));
+int __db_cursorchk __P((const DB *, u_int32_t, int));
+int __db_ccountchk __P((const DB *, u_int32_t, int));
+int __db_cdelchk __P((const DB *, u_int32_t, int, int));
+int __db_cgetchk __P((const DB *, DBT *, DBT *, u_int32_t, int));
+int __db_cputchk __P((const DB *, const DBT *, DBT *, u_int32_t, int, int));
+int __db_pgetchk __P((const DB *, const DBT *, DBT *, DBT *, u_int32_t));
+int __db_cpgetchk __P((const DB *, DBT *, DBT *, DBT *, u_int32_t, int));
+int __db_closechk __P((const DB *, u_int32_t));
+int __db_delchk __P((const DB *, DBT *, u_int32_t, int));
+int __db_getchk __P((const DB *, const DBT *, DBT *, u_int32_t));
+int __db_joinchk __P((const DB *, DBC * const *, u_int32_t));
+int __db_joingetchk __P((const DB *, DBT *, u_int32_t));
+int __db_putchk __P((const DB *, DBT *, const DBT *, u_int32_t, int, int));
+int __db_removechk __P((const DB *, u_int32_t));
+int __db_statchk __P((const DB *, u_int32_t));
+int __db_syncchk __P((const DB *, u_int32_t));
+int __db_associatechk __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+int __db_join __P((DB *, DBC **, DBC **, u_int32_t));
+int __db_new __P((DBC *, u_int32_t, PAGE **));
+int __db_free __P((DBC *, PAGE *));
+int __db_lprint __P((DBC *));
+int __db_lget __P((DBC *, int, db_pgno_t, db_lockmode_t, int, DB_LOCK *));
+int __dbh_am_chk __P((DB *, u_int32_t));
+int __db_set_lorder __P((DB *, int));
+int __db_goff __P((DB *, DBT *, u_int32_t, db_pgno_t, void **, u_int32_t *));
+int __db_poff __P((DBC *, const DBT *, db_pgno_t *));
+int __db_ovref __P((DBC *, db_pgno_t, int32_t));
+int __db_doff __P((DBC *, db_pgno_t));
+int __db_moff __P((DB *, const DBT *, db_pgno_t, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
+int __db_vrfy_overflow __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+int __db_vrfy_ovfl_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, u_int32_t));
+int __db_safe_goff __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void **, u_int32_t));
+void __db_loadme __P((void));
+int __db_dump __P((DB *, char *, char *));
+int __db_prnpage __P((DB *, db_pgno_t));
+int __db_prpage __P((DB *, PAGE *, u_int32_t));
+void __db_pr __P((u_int8_t *, u_int32_t));
+int __db_prdbt __P((DBT *, int, const char *, void *, int (*)(void *, const void *), int, VRFY_DBINFO *));
+void __db_prflags __P((u_int32_t, const FN *, FILE *));
+int __db_prheader __P((DB *, char *, int, int, void *, int (*)(void *, const void *), VRFY_DBINFO *, db_pgno_t));
+int __db_prfooter __P((void *, int (*)(void *, const void *)));
+int __db_addrem_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_big_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_ovref_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_relink_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_debug_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_noop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __db_traverse_big __P((DB *, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
+int __db_reclaim_callback __P((DB *, PAGE *, void *, int *));
+int __db_truncate_callback __P((DB *, PAGE *, void *, int *));
+int __db_ret __P((DB *, PAGE *, u_int32_t, DBT *, void **, u_int32_t *));
+int __db_retcopy __P((DB *, DBT *, void *, u_int32_t, void **, u_int32_t *));
+int __db_upgrade __P((DB *, const char *, u_int32_t));
+int __db_lastpgno __P((DB *, char *, DB_FH *, db_pgno_t *));
+int __db_31_offdup __P((DB *, char *, DB_FH *, int, db_pgno_t *));
+int __db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
+int __db_verify_callback __P((void *, const void *));
+int __db_verify_internal __P((DB *, const char *, const char *, void *, int (*)(void *, const void *), u_int32_t));
+int __db_vrfy_datapage __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+int __db_vrfy_meta __P((DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t, u_int32_t));
+int __db_vrfy_struct_feedback __P((DB *, VRFY_DBINFO *));
+int __db_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
+int __db_vrfy_inpitem __P((DB *, PAGE *, db_pgno_t, u_int32_t, int, u_int32_t, u_int32_t *, u_int32_t *));
+int __db_vrfy_duptype __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
+int __db_salvage_duptree __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void *, int (*)(void *, const void *), u_int32_t));
+int __db_vrfy_dbinfo_create __P((DB_ENV *, u_int32_t, VRFY_DBINFO **));
+int __db_vrfy_dbinfo_destroy __P((DB_ENV *, VRFY_DBINFO *));
+int __db_vrfy_getpageinfo __P((VRFY_DBINFO *, db_pgno_t, VRFY_PAGEINFO **));
+int __db_vrfy_putpageinfo __P((DB_ENV *, VRFY_DBINFO *, VRFY_PAGEINFO *));
+int __db_vrfy_pgset __P((DB_ENV *, u_int32_t, DB **));
+int __db_vrfy_pgset_get __P((DB *, db_pgno_t, int *));
+int __db_vrfy_pgset_inc __P((DB *, db_pgno_t));
+int __db_vrfy_pgset_dec __P((DB *, db_pgno_t));
+int __db_vrfy_pgset_next __P((DBC *, db_pgno_t *));
+int __db_vrfy_childcursor __P((VRFY_DBINFO *, DBC **));
+int __db_vrfy_childput __P((VRFY_DBINFO *, db_pgno_t, VRFY_CHILDINFO *));
+int __db_vrfy_ccset __P((DBC *, db_pgno_t, VRFY_CHILDINFO **));
+int __db_vrfy_ccnext __P((DBC *, VRFY_CHILDINFO **));
+int __db_vrfy_ccclose __P((DBC *));
+int __db_salvage_init __P((VRFY_DBINFO *));
+void __db_salvage_destroy __P((VRFY_DBINFO *));
+int __db_salvage_getnext __P((VRFY_DBINFO *, db_pgno_t *, u_int32_t *));
+int __db_salvage_isdone __P((VRFY_DBINFO *, db_pgno_t));
+int __db_salvage_markdone __P((VRFY_DBINFO *, db_pgno_t));
+int __db_salvage_markneeded __P((VRFY_DBINFO *, db_pgno_t, u_int32_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _db_ext_h_ */
diff --git a/db/include_auto/db_ext.in b/db/include_auto/db_ext.in
new file mode 100644
index 000000000..9d2504347
--- /dev/null
+++ b/db/include_auto/db_ext.in
@@ -0,0 +1,400 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _db_ext_h_
+#define _db_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __crdel_fileopen_log __crdel_fileopen_log@DB_VERSION_UNIQUE_NAME@
+int __crdel_fileopen_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, u_int32_t));
+#define __crdel_fileopen_print __crdel_fileopen_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_fileopen_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_fileopen_read __crdel_fileopen_read@DB_VERSION_UNIQUE_NAME@
+int __crdel_fileopen_read __P((DB_ENV *, void *, __crdel_fileopen_args **));
+#define __crdel_metasub_log __crdel_metasub_log@DB_VERSION_UNIQUE_NAME@
+int __crdel_metasub_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, const DBT *, DB_LSN *));
+#define __crdel_metasub_print __crdel_metasub_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_metasub_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_metasub_read __crdel_metasub_read@DB_VERSION_UNIQUE_NAME@
+int __crdel_metasub_read __P((DB_ENV *, void *, __crdel_metasub_args **));
+#define __crdel_metapage_log __crdel_metapage_log@DB_VERSION_UNIQUE_NAME@
+int __crdel_metapage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, db_pgno_t, const DBT *));
+#define __crdel_metapage_print __crdel_metapage_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_metapage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_metapage_read __crdel_metapage_read@DB_VERSION_UNIQUE_NAME@
+int __crdel_metapage_read __P((DB_ENV *, void *, __crdel_metapage_args **));
+#define __crdel_old_delete_print __crdel_old_delete_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_old_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_old_delete_read __crdel_old_delete_read@DB_VERSION_UNIQUE_NAME@
+int __crdel_old_delete_read __P((DB_ENV *, void *, __crdel_old_delete_args **));
+#define __crdel_rename_log __crdel_rename_log@DB_VERSION_UNIQUE_NAME@
+int __crdel_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *, const DBT *));
+#define __crdel_rename_print __crdel_rename_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_rename_read __crdel_rename_read@DB_VERSION_UNIQUE_NAME@
+int __crdel_rename_read __P((DB_ENV *, void *, __crdel_rename_args **));
+#define __crdel_delete_log __crdel_delete_log@DB_VERSION_UNIQUE_NAME@
+int __crdel_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, const DBT *));
+#define __crdel_delete_print __crdel_delete_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_delete_read __crdel_delete_read@DB_VERSION_UNIQUE_NAME@
+int __crdel_delete_read __P((DB_ENV *, void *, __crdel_delete_args **));
+#define __crdel_init_print __crdel_init_print@DB_VERSION_UNIQUE_NAME@
+int __crdel_init_print __P((DB_ENV *));
+#define __crdel_init_recover __crdel_init_recover@DB_VERSION_UNIQUE_NAME@
+int __crdel_init_recover __P((DB_ENV *));
+#define __crdel_fileopen_recover __crdel_fileopen_recover@DB_VERSION_UNIQUE_NAME@
+int __crdel_fileopen_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_metasub_recover __crdel_metasub_recover@DB_VERSION_UNIQUE_NAME@
+int __crdel_metasub_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_metapage_recover __crdel_metapage_recover@DB_VERSION_UNIQUE_NAME@
+int __crdel_metapage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_delete_recover __crdel_delete_recover@DB_VERSION_UNIQUE_NAME@
+int __crdel_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __crdel_rename_recover __crdel_rename_recover@DB_VERSION_UNIQUE_NAME@
+int __crdel_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_open __db_open@DB_VERSION_UNIQUE_NAME@
+int __db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
+#define __db_dbopen __db_dbopen@DB_VERSION_UNIQUE_NAME@
+int __db_dbopen __P((DB *, const char *, u_int32_t, int, db_pgno_t));
+#define __db_master_open __db_master_open@DB_VERSION_UNIQUE_NAME@
+int __db_master_open __P((DB *, const char *, u_int32_t, int, DB **));
+#define __db_dbenv_setup __db_dbenv_setup@DB_VERSION_UNIQUE_NAME@
+int __db_dbenv_setup __P((DB *, const char *, u_int32_t));
+#define __db_close __db_close@DB_VERSION_UNIQUE_NAME@
+int __db_close __P((DB *, u_int32_t));
+#define __db_remove __db_remove@DB_VERSION_UNIQUE_NAME@
+int __db_remove __P((DB *, const char *, const char *, u_int32_t));
+#define __db_rename __db_rename@DB_VERSION_UNIQUE_NAME@
+int __db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
+#define __db_truncate __db_truncate@DB_VERSION_UNIQUE_NAME@
+int __db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
+#define __db_log_page __db_log_page@DB_VERSION_UNIQUE_NAME@
+int __db_log_page __P((DB *, const char *, DB_LSN *, db_pgno_t, PAGE *));
+#define __db_backup_name __db_backup_name@DB_VERSION_UNIQUE_NAME@
+int __db_backup_name __P((DB_ENV *, const char *, char **, DB_LSN *));
+#define __dblist_get __dblist_get@DB_VERSION_UNIQUE_NAME@
+DB *__dblist_get __P((DB_ENV *, u_int32_t));
+#define __db_testcopy __db_testcopy@DB_VERSION_UNIQUE_NAME@
+int __db_testcopy __P((DB *, const char *));
+#define __db_cursor __db_cursor@DB_VERSION_UNIQUE_NAME@
+int __db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
+#define __db_icursor __db_icursor@DB_VERSION_UNIQUE_NAME@
+int __db_icursor __P((DB *, DB_TXN *, DBTYPE, db_pgno_t, int, u_int32_t, DBC **));
+#define __db_cprint __db_cprint@DB_VERSION_UNIQUE_NAME@
+int __db_cprint __P((DB *));
+#define __db_fd __db_fd@DB_VERSION_UNIQUE_NAME@
+int __db_fd __P((DB *, int *));
+#define __db_get __db_get@DB_VERSION_UNIQUE_NAME@
+int __db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+#define __db_put __db_put@DB_VERSION_UNIQUE_NAME@
+int __db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+#define __db_delete __db_delete@DB_VERSION_UNIQUE_NAME@
+int __db_delete __P((DB *, DB_TXN *, DBT *, u_int32_t));
+#define __db_sync __db_sync@DB_VERSION_UNIQUE_NAME@
+int __db_sync __P((DB *, u_int32_t));
+#define __db_associate __db_associate@DB_VERSION_UNIQUE_NAME@
+int __db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+#define __db_pget __db_pget@DB_VERSION_UNIQUE_NAME@
+int __db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+#define __db_addrem_log __db_addrem_log@DB_VERSION_UNIQUE_NAME@
+int __db_addrem_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, size_t, const DBT *, const DBT *, DB_LSN *));
+#define __db_addrem_print __db_addrem_print@DB_VERSION_UNIQUE_NAME@
+int __db_addrem_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_addrem_read __db_addrem_read@DB_VERSION_UNIQUE_NAME@
+int __db_addrem_read __P((DB_ENV *, void *, __db_addrem_args **));
+#define __db_split_print __db_split_print@DB_VERSION_UNIQUE_NAME@
+int __db_split_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_split_read __db_split_read@DB_VERSION_UNIQUE_NAME@
+int __db_split_read __P((DB_ENV *, void *, __db_split_args **));
+#define __db_big_log __db_big_log@DB_VERSION_UNIQUE_NAME@
+int __db_big_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, db_pgno_t, db_pgno_t, const DBT *, DB_LSN *, DB_LSN *, DB_LSN *));
+#define __db_big_print __db_big_print@DB_VERSION_UNIQUE_NAME@
+int __db_big_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_big_read __db_big_read@DB_VERSION_UNIQUE_NAME@
+int __db_big_read __P((DB_ENV *, void *, __db_big_args **));
+#define __db_ovref_log __db_ovref_log@DB_VERSION_UNIQUE_NAME@
+int __db_ovref_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, int32_t, DB_LSN *));
+#define __db_ovref_print __db_ovref_print@DB_VERSION_UNIQUE_NAME@
+int __db_ovref_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_ovref_read __db_ovref_read@DB_VERSION_UNIQUE_NAME@
+int __db_ovref_read __P((DB_ENV *, void *, __db_ovref_args **));
+#define __db_relink_log __db_relink_log@DB_VERSION_UNIQUE_NAME@
+int __db_relink_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
+#define __db_relink_print __db_relink_print@DB_VERSION_UNIQUE_NAME@
+int __db_relink_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_relink_read __db_relink_read@DB_VERSION_UNIQUE_NAME@
+int __db_relink_read __P((DB_ENV *, void *, __db_relink_args **));
+#define __db_addpage_print __db_addpage_print@DB_VERSION_UNIQUE_NAME@
+int __db_addpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_addpage_read __db_addpage_read@DB_VERSION_UNIQUE_NAME@
+int __db_addpage_read __P((DB_ENV *, void *, __db_addpage_args **));
+#define __db_debug_log __db_debug_log@DB_VERSION_UNIQUE_NAME@
+int __db_debug_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, int32_t, const DBT *, const DBT *, u_int32_t));
+#define __db_debug_print __db_debug_print@DB_VERSION_UNIQUE_NAME@
+int __db_debug_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_debug_read __db_debug_read@DB_VERSION_UNIQUE_NAME@
+int __db_debug_read __P((DB_ENV *, void *, __db_debug_args **));
+#define __db_noop_log __db_noop_log@DB_VERSION_UNIQUE_NAME@
+int __db_noop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *));
+#define __db_noop_print __db_noop_print@DB_VERSION_UNIQUE_NAME@
+int __db_noop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_noop_read __db_noop_read@DB_VERSION_UNIQUE_NAME@
+int __db_noop_read __P((DB_ENV *, void *, __db_noop_args **));
+#define __db_init_print __db_init_print@DB_VERSION_UNIQUE_NAME@
+int __db_init_print __P((DB_ENV *));
+#define __db_init_recover __db_init_recover@DB_VERSION_UNIQUE_NAME@
+int __db_init_recover __P((DB_ENV *));
+#define __db_c_close __db_c_close@DB_VERSION_UNIQUE_NAME@
+int __db_c_close __P((DBC *));
+#define __db_c_destroy __db_c_destroy@DB_VERSION_UNIQUE_NAME@
+int __db_c_destroy __P((DBC *));
+#define __db_c_count __db_c_count@DB_VERSION_UNIQUE_NAME@
+int __db_c_count __P((DBC *, db_recno_t *, u_int32_t));
+#define __db_c_del __db_c_del@DB_VERSION_UNIQUE_NAME@
+int __db_c_del __P((DBC *, u_int32_t));
+#define __db_c_dup __db_c_dup@DB_VERSION_UNIQUE_NAME@
+int __db_c_dup __P((DBC *, DBC **, u_int32_t));
+#define __db_c_idup __db_c_idup@DB_VERSION_UNIQUE_NAME@
+int __db_c_idup __P((DBC *, DBC **, u_int32_t));
+#define __db_c_newopd __db_c_newopd@DB_VERSION_UNIQUE_NAME@
+int __db_c_newopd __P((DBC *, db_pgno_t, DBC **));
+#define __db_c_get __db_c_get@DB_VERSION_UNIQUE_NAME@
+int __db_c_get __P((DBC *, DBT *, DBT *, u_int32_t));
+#define __db_c_put __db_c_put@DB_VERSION_UNIQUE_NAME@
+int __db_c_put __P((DBC *, DBT *, DBT *, u_int32_t));
+#define __db_duperr __db_duperr@DB_VERSION_UNIQUE_NAME@
+int __db_duperr __P((DB *, u_int32_t));
+#define __db_c_secondary_get __db_c_secondary_get@DB_VERSION_UNIQUE_NAME@
+int __db_c_secondary_get __P((DBC *, DBT *, DBT *, u_int32_t));
+#define __db_c_pget __db_c_pget@DB_VERSION_UNIQUE_NAME@
+int __db_c_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+#define __db_c_del_primary __db_c_del_primary@DB_VERSION_UNIQUE_NAME@
+int __db_c_del_primary __P((DBC *));
+#define __db_s_first __db_s_first@DB_VERSION_UNIQUE_NAME@
+DB *__db_s_first __P((DB *));
+#define __db_s_next __db_s_next@DB_VERSION_UNIQUE_NAME@
+int __db_s_next __P((DB **));
+#define __db_s_done __db_s_done@DB_VERSION_UNIQUE_NAME@
+int __db_s_done __P((DB *));
+#define __db_partsize __db_partsize@DB_VERSION_UNIQUE_NAME@
+u_int32_t __db_partsize __P((u_int32_t, DBT *));
+#define __db_pgin __db_pgin@DB_VERSION_UNIQUE_NAME@
+int __db_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __db_pgout __db_pgout@DB_VERSION_UNIQUE_NAME@
+int __db_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __db_metaswap __db_metaswap@DB_VERSION_UNIQUE_NAME@
+void __db_metaswap __P((PAGE *));
+#define __db_byteswap __db_byteswap@DB_VERSION_UNIQUE_NAME@
+int __db_byteswap __P((DB_ENV *, db_pgno_t, PAGE *, size_t, int));
+#define __db_dispatch __db_dispatch@DB_VERSION_UNIQUE_NAME@
+int __db_dispatch __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_add_recovery __db_add_recovery@DB_VERSION_UNIQUE_NAME@
+int __db_add_recovery __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops, void *), u_int32_t));
+#define __deprecated_recover __deprecated_recover@DB_VERSION_UNIQUE_NAME@
+int __deprecated_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_txnlist_init __db_txnlist_init@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_init __P((DB_ENV *, void *));
+#define __db_txnlist_add __db_txnlist_add@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_add __P((DB_ENV *, void *, u_int32_t, int32_t));
+#define __db_txnlist_remove __db_txnlist_remove@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_remove __P((DB_ENV *, void *, u_int32_t));
+#define __db_txnlist_close __db_txnlist_close@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_close __P((void *, int32_t, u_int32_t));
+#define __db_txnlist_delete __db_txnlist_delete@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_delete __P((DB_ENV *, void *, char *, u_int32_t, int));
+#define __db_txnlist_end __db_txnlist_end@DB_VERSION_UNIQUE_NAME@
+void __db_txnlist_end __P((DB_ENV *, void *));
+#define __db_txnlist_find __db_txnlist_find@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_find __P((DB_ENV *, void *, u_int32_t));
+#define __db_txnlist_gen __db_txnlist_gen@DB_VERSION_UNIQUE_NAME@
+void __db_txnlist_gen __P((void *, int));
+#define __db_txnlist_lsnadd __db_txnlist_lsnadd@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_lsnadd __P((DB_ENV *, void *, DB_LSN *, u_int32_t));
+#define __db_txnlist_lsninit __db_txnlist_lsninit@DB_VERSION_UNIQUE_NAME@
+int __db_txnlist_lsninit __P((DB_ENV *, DB_TXNHEAD *, DB_LSN *));
+#define __db_add_limbo __db_add_limbo@DB_VERSION_UNIQUE_NAME@
+int __db_add_limbo __P((DB_ENV *, void *, int32_t, db_pgno_t, int32_t));
+#define __db_do_the_limbo __db_do_the_limbo@DB_VERSION_UNIQUE_NAME@
+int __db_do_the_limbo __P((DB_ENV *, DB_TXNHEAD *));
+#define __db_txnlist_print __db_txnlist_print@DB_VERSION_UNIQUE_NAME@
+void __db_txnlist_print __P((void *));
+#define __db_ditem __db_ditem@DB_VERSION_UNIQUE_NAME@
+int __db_ditem __P((DBC *, PAGE *, u_int32_t, u_int32_t));
+#define __db_pitem __db_pitem@DB_VERSION_UNIQUE_NAME@
+int __db_pitem __P((DBC *, PAGE *, u_int32_t, u_int32_t, DBT *, DBT *));
+#define __db_relink __db_relink@DB_VERSION_UNIQUE_NAME@
+int __db_relink __P((DBC *, u_int32_t, PAGE *, PAGE **, int));
+#define __db_cursorchk __db_cursorchk@DB_VERSION_UNIQUE_NAME@
+int __db_cursorchk __P((const DB *, u_int32_t, int));
+#define __db_ccountchk __db_ccountchk@DB_VERSION_UNIQUE_NAME@
+int __db_ccountchk __P((const DB *, u_int32_t, int));
+#define __db_cdelchk __db_cdelchk@DB_VERSION_UNIQUE_NAME@
+int __db_cdelchk __P((const DB *, u_int32_t, int, int));
+#define __db_cgetchk __db_cgetchk@DB_VERSION_UNIQUE_NAME@
+int __db_cgetchk __P((const DB *, DBT *, DBT *, u_int32_t, int));
+#define __db_cputchk __db_cputchk@DB_VERSION_UNIQUE_NAME@
+int __db_cputchk __P((const DB *, const DBT *, DBT *, u_int32_t, int, int));
+#define __db_pgetchk __db_pgetchk@DB_VERSION_UNIQUE_NAME@
+int __db_pgetchk __P((const DB *, const DBT *, DBT *, DBT *, u_int32_t));
+#define __db_cpgetchk __db_cpgetchk@DB_VERSION_UNIQUE_NAME@
+int __db_cpgetchk __P((const DB *, DBT *, DBT *, DBT *, u_int32_t, int));
+#define __db_closechk __db_closechk@DB_VERSION_UNIQUE_NAME@
+int __db_closechk __P((const DB *, u_int32_t));
+#define __db_delchk __db_delchk@DB_VERSION_UNIQUE_NAME@
+int __db_delchk __P((const DB *, DBT *, u_int32_t, int));
+#define __db_getchk __db_getchk@DB_VERSION_UNIQUE_NAME@
+int __db_getchk __P((const DB *, const DBT *, DBT *, u_int32_t));
+#define __db_joinchk __db_joinchk@DB_VERSION_UNIQUE_NAME@
+int __db_joinchk __P((const DB *, DBC * const *, u_int32_t));
+#define __db_joingetchk __db_joingetchk@DB_VERSION_UNIQUE_NAME@
+int __db_joingetchk __P((const DB *, DBT *, u_int32_t));
+#define __db_putchk __db_putchk@DB_VERSION_UNIQUE_NAME@
+int __db_putchk __P((const DB *, DBT *, const DBT *, u_int32_t, int, int));
+#define __db_removechk __db_removechk@DB_VERSION_UNIQUE_NAME@
+int __db_removechk __P((const DB *, u_int32_t));
+#define __db_statchk __db_statchk@DB_VERSION_UNIQUE_NAME@
+int __db_statchk __P((const DB *, u_int32_t));
+#define __db_syncchk __db_syncchk@DB_VERSION_UNIQUE_NAME@
+int __db_syncchk __P((const DB *, u_int32_t));
+#define __db_associatechk __db_associatechk@DB_VERSION_UNIQUE_NAME@
+int __db_associatechk __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+#define __db_join __db_join@DB_VERSION_UNIQUE_NAME@
+int __db_join __P((DB *, DBC **, DBC **, u_int32_t));
+#define __db_new __db_new@DB_VERSION_UNIQUE_NAME@
+int __db_new __P((DBC *, u_int32_t, PAGE **));
+#define __db_free __db_free@DB_VERSION_UNIQUE_NAME@
+int __db_free __P((DBC *, PAGE *));
+#define __db_lprint __db_lprint@DB_VERSION_UNIQUE_NAME@
+int __db_lprint __P((DBC *));
+#define __db_lget __db_lget@DB_VERSION_UNIQUE_NAME@
+int __db_lget __P((DBC *, int, db_pgno_t, db_lockmode_t, int, DB_LOCK *));
+#define __dbh_am_chk __dbh_am_chk@DB_VERSION_UNIQUE_NAME@
+int __dbh_am_chk __P((DB *, u_int32_t));
+#define __db_set_lorder __db_set_lorder@DB_VERSION_UNIQUE_NAME@
+int __db_set_lorder __P((DB *, int));
+#define __db_goff __db_goff@DB_VERSION_UNIQUE_NAME@
+int __db_goff __P((DB *, DBT *, u_int32_t, db_pgno_t, void **, u_int32_t *));
+#define __db_poff __db_poff@DB_VERSION_UNIQUE_NAME@
+int __db_poff __P((DBC *, const DBT *, db_pgno_t *));
+#define __db_ovref __db_ovref@DB_VERSION_UNIQUE_NAME@
+int __db_ovref __P((DBC *, db_pgno_t, int32_t));
+#define __db_doff __db_doff@DB_VERSION_UNIQUE_NAME@
+int __db_doff __P((DBC *, db_pgno_t));
+#define __db_moff __db_moff@DB_VERSION_UNIQUE_NAME@
+int __db_moff __P((DB *, const DBT *, db_pgno_t, u_int32_t, int (*)(DB *, const DBT *, const DBT *), int *));
+#define __db_vrfy_overflow __db_vrfy_overflow@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_overflow __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+#define __db_vrfy_ovfl_structure __db_vrfy_ovfl_structure@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_ovfl_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t, u_int32_t));
+#define __db_safe_goff __db_safe_goff@DB_VERSION_UNIQUE_NAME@
+int __db_safe_goff __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void **, u_int32_t));
+#define __db_loadme __db_loadme@DB_VERSION_UNIQUE_NAME@
+void __db_loadme __P((void));
+#define __db_dump __db_dump@DB_VERSION_UNIQUE_NAME@
+int __db_dump __P((DB *, char *, char *));
+#define __db_prnpage __db_prnpage@DB_VERSION_UNIQUE_NAME@
+int __db_prnpage __P((DB *, db_pgno_t));
+#define __db_prpage __db_prpage@DB_VERSION_UNIQUE_NAME@
+int __db_prpage __P((DB *, PAGE *, u_int32_t));
+#define __db_pr __db_pr@DB_VERSION_UNIQUE_NAME@
+void __db_pr __P((u_int8_t *, u_int32_t));
+#define __db_prdbt __db_prdbt@DB_VERSION_UNIQUE_NAME@
+int __db_prdbt __P((DBT *, int, const char *, void *, int (*)(void *, const void *), int, VRFY_DBINFO *));
+#define __db_prflags __db_prflags@DB_VERSION_UNIQUE_NAME@
+void __db_prflags __P((u_int32_t, const FN *, FILE *));
+#define __db_prheader __db_prheader@DB_VERSION_UNIQUE_NAME@
+int __db_prheader __P((DB *, char *, int, int, void *, int (*)(void *, const void *), VRFY_DBINFO *, db_pgno_t));
+#define __db_prfooter __db_prfooter@DB_VERSION_UNIQUE_NAME@
+int __db_prfooter __P((void *, int (*)(void *, const void *)));
+#define __db_addrem_recover __db_addrem_recover@DB_VERSION_UNIQUE_NAME@
+int __db_addrem_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_big_recover __db_big_recover@DB_VERSION_UNIQUE_NAME@
+int __db_big_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_ovref_recover __db_ovref_recover@DB_VERSION_UNIQUE_NAME@
+int __db_ovref_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_relink_recover __db_relink_recover@DB_VERSION_UNIQUE_NAME@
+int __db_relink_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_debug_recover __db_debug_recover@DB_VERSION_UNIQUE_NAME@
+int __db_debug_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_noop_recover __db_noop_recover@DB_VERSION_UNIQUE_NAME@
+int __db_noop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __db_traverse_big __db_traverse_big@DB_VERSION_UNIQUE_NAME@
+int __db_traverse_big __P((DB *, db_pgno_t, int (*)(DB *, PAGE *, void *, int *), void *));
+#define __db_reclaim_callback __db_reclaim_callback@DB_VERSION_UNIQUE_NAME@
+int __db_reclaim_callback __P((DB *, PAGE *, void *, int *));
+#define __db_truncate_callback __db_truncate_callback@DB_VERSION_UNIQUE_NAME@
+int __db_truncate_callback __P((DB *, PAGE *, void *, int *));
+#define __db_ret __db_ret@DB_VERSION_UNIQUE_NAME@
+int __db_ret __P((DB *, PAGE *, u_int32_t, DBT *, void **, u_int32_t *));
+#define __db_retcopy __db_retcopy@DB_VERSION_UNIQUE_NAME@
+int __db_retcopy __P((DB *, DBT *, void *, u_int32_t, void **, u_int32_t *));
+#define __db_upgrade __db_upgrade@DB_VERSION_UNIQUE_NAME@
+int __db_upgrade __P((DB *, const char *, u_int32_t));
+#define __db_lastpgno __db_lastpgno@DB_VERSION_UNIQUE_NAME@
+int __db_lastpgno __P((DB *, char *, DB_FH *, db_pgno_t *));
+#define __db_31_offdup __db_31_offdup@DB_VERSION_UNIQUE_NAME@
+int __db_31_offdup __P((DB *, char *, DB_FH *, int, db_pgno_t *));
+#define __db_verify __db_verify@DB_VERSION_UNIQUE_NAME@
+int __db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
+#define __db_verify_callback __db_verify_callback@DB_VERSION_UNIQUE_NAME@
+int __db_verify_callback __P((void *, const void *));
+#define __db_verify_internal __db_verify_internal@DB_VERSION_UNIQUE_NAME@
+int __db_verify_internal __P((DB *, const char *, const char *, void *, int (*)(void *, const void *), u_int32_t));
+#define __db_vrfy_datapage __db_vrfy_datapage@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_datapage __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+#define __db_vrfy_meta __db_vrfy_meta@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_meta __P((DB *, VRFY_DBINFO *, DBMETA *, db_pgno_t, u_int32_t));
+#define __db_vrfy_struct_feedback __db_vrfy_struct_feedback@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_struct_feedback __P((DB *, VRFY_DBINFO *));
+#define __db_salvage __db_salvage@DB_VERSION_UNIQUE_NAME@
+int __db_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
+#define __db_vrfy_inpitem __db_vrfy_inpitem@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_inpitem __P((DB *, PAGE *, db_pgno_t, u_int32_t, int, u_int32_t, u_int32_t *, u_int32_t *));
+#define __db_vrfy_duptype __db_vrfy_duptype@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_duptype __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
+#define __db_salvage_duptree __db_salvage_duptree@DB_VERSION_UNIQUE_NAME@
+int __db_salvage_duptree __P((DB *, VRFY_DBINFO *, db_pgno_t, DBT *, void *, int (*)(void *, const void *), u_int32_t));
+#define __db_vrfy_dbinfo_create __db_vrfy_dbinfo_create@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_dbinfo_create __P((DB_ENV *, u_int32_t, VRFY_DBINFO **));
+#define __db_vrfy_dbinfo_destroy __db_vrfy_dbinfo_destroy@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_dbinfo_destroy __P((DB_ENV *, VRFY_DBINFO *));
+#define __db_vrfy_getpageinfo __db_vrfy_getpageinfo@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_getpageinfo __P((VRFY_DBINFO *, db_pgno_t, VRFY_PAGEINFO **));
+#define __db_vrfy_putpageinfo __db_vrfy_putpageinfo@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_putpageinfo __P((DB_ENV *, VRFY_DBINFO *, VRFY_PAGEINFO *));
+#define __db_vrfy_pgset __db_vrfy_pgset@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_pgset __P((DB_ENV *, u_int32_t, DB **));
+#define __db_vrfy_pgset_get __db_vrfy_pgset_get@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_pgset_get __P((DB *, db_pgno_t, int *));
+#define __db_vrfy_pgset_inc __db_vrfy_pgset_inc@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_pgset_inc __P((DB *, db_pgno_t));
+#define __db_vrfy_pgset_dec __db_vrfy_pgset_dec@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_pgset_dec __P((DB *, db_pgno_t));
+#define __db_vrfy_pgset_next __db_vrfy_pgset_next@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_pgset_next __P((DBC *, db_pgno_t *));
+#define __db_vrfy_childcursor __db_vrfy_childcursor@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_childcursor __P((VRFY_DBINFO *, DBC **));
+#define __db_vrfy_childput __db_vrfy_childput@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_childput __P((VRFY_DBINFO *, db_pgno_t, VRFY_CHILDINFO *));
+#define __db_vrfy_ccset __db_vrfy_ccset@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_ccset __P((DBC *, db_pgno_t, VRFY_CHILDINFO **));
+#define __db_vrfy_ccnext __db_vrfy_ccnext@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_ccnext __P((DBC *, VRFY_CHILDINFO **));
+#define __db_vrfy_ccclose __db_vrfy_ccclose@DB_VERSION_UNIQUE_NAME@
+int __db_vrfy_ccclose __P((DBC *));
+#define __db_salvage_init __db_salvage_init@DB_VERSION_UNIQUE_NAME@
+int __db_salvage_init __P((VRFY_DBINFO *));
+#define __db_salvage_destroy __db_salvage_destroy@DB_VERSION_UNIQUE_NAME@
+void __db_salvage_destroy __P((VRFY_DBINFO *));
+#define __db_salvage_getnext __db_salvage_getnext@DB_VERSION_UNIQUE_NAME@
+int __db_salvage_getnext __P((VRFY_DBINFO *, db_pgno_t *, u_int32_t *));
+#define __db_salvage_isdone __db_salvage_isdone@DB_VERSION_UNIQUE_NAME@
+int __db_salvage_isdone __P((VRFY_DBINFO *, db_pgno_t));
+#define __db_salvage_markdone __db_salvage_markdone@DB_VERSION_UNIQUE_NAME@
+int __db_salvage_markdone __P((VRFY_DBINFO *, db_pgno_t));
+#define __db_salvage_markneeded __db_salvage_markneeded@DB_VERSION_UNIQUE_NAME@
+int __db_salvage_markneeded __P((VRFY_DBINFO *, db_pgno_t, u_int32_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _db_ext_h_ */
diff --git a/db/include_auto/db_server.h b/db/include_auto/db_server.h
new file mode 100644
index 000000000..93c99ca1d
--- /dev/null
+++ b/db/include_auto/db_server.h
@@ -0,0 +1,904 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _DB_SERVER_H_RPCGEN
+#define _DB_SERVER_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+struct __env_cachesize_msg {
+ u_int dbenvcl_id;
+ u_int gbytes;
+ u_int bytes;
+ u_int ncache;
+};
+typedef struct __env_cachesize_msg __env_cachesize_msg;
+
+struct __env_cachesize_reply {
+ int status;
+};
+typedef struct __env_cachesize_reply __env_cachesize_reply;
+
+struct __env_close_msg {
+ u_int dbenvcl_id;
+ u_int flags;
+};
+typedef struct __env_close_msg __env_close_msg;
+
+struct __env_close_reply {
+ int status;
+};
+typedef struct __env_close_reply __env_close_reply;
+
+struct __env_create_msg {
+ u_int timeout;
+};
+typedef struct __env_create_msg __env_create_msg;
+
+struct __env_create_reply {
+ int status;
+ u_int envcl_id;
+};
+typedef struct __env_create_reply __env_create_reply;
+
+struct __env_flags_msg {
+ u_int dbenvcl_id;
+ u_int flags;
+ u_int onoff;
+};
+typedef struct __env_flags_msg __env_flags_msg;
+
+struct __env_flags_reply {
+ int status;
+};
+typedef struct __env_flags_reply __env_flags_reply;
+
+struct __env_open_msg {
+ u_int dbenvcl_id;
+ char *home;
+ u_int flags;
+ u_int mode;
+};
+typedef struct __env_open_msg __env_open_msg;
+
+struct __env_open_reply {
+ int status;
+};
+typedef struct __env_open_reply __env_open_reply;
+
+struct __env_remove_msg {
+ u_int dbenvcl_id;
+ char *home;
+ u_int flags;
+};
+typedef struct __env_remove_msg __env_remove_msg;
+
+struct __env_remove_reply {
+ int status;
+};
+typedef struct __env_remove_reply __env_remove_reply;
+
+struct __txn_abort_msg {
+ u_int txnpcl_id;
+};
+typedef struct __txn_abort_msg __txn_abort_msg;
+
+struct __txn_abort_reply {
+ int status;
+};
+typedef struct __txn_abort_reply __txn_abort_reply;
+
+struct __txn_begin_msg {
+ u_int dbenvcl_id;
+ u_int parentcl_id;
+ u_int flags;
+};
+typedef struct __txn_begin_msg __txn_begin_msg;
+
+struct __txn_begin_reply {
+ int status;
+ u_int txnidcl_id;
+};
+typedef struct __txn_begin_reply __txn_begin_reply;
+
+struct __txn_commit_msg {
+ u_int txnpcl_id;
+ u_int flags;
+};
+typedef struct __txn_commit_msg __txn_commit_msg;
+
+struct __txn_commit_reply {
+ int status;
+};
+typedef struct __txn_commit_reply __txn_commit_reply;
+
+struct __txn_prepare_msg {
+ u_int txnpcl_id;
+ char gid[128];
+};
+typedef struct __txn_prepare_msg __txn_prepare_msg;
+
+struct __txn_prepare_reply {
+ int status;
+};
+typedef struct __txn_prepare_reply __txn_prepare_reply;
+
+struct __txn_recover_msg {
+ u_int dbenvcl_id;
+ u_int count;
+ u_int flags;
+};
+typedef struct __txn_recover_msg __txn_recover_msg;
+
+struct __txn_recover_reply {
+ int status;
+ struct {
+ u_int txn_len;
+ u_int *txn_val;
+ } txn;
+ struct {
+ u_int gid_len;
+ char *gid_val;
+ } gid;
+ u_int retcount;
+};
+typedef struct __txn_recover_reply __txn_recover_reply;
+
+struct __db_associate_msg {
+ u_int dbpcl_id;
+ u_int sdbpcl_id;
+ u_int flags;
+};
+typedef struct __db_associate_msg __db_associate_msg;
+
+struct __db_associate_reply {
+ int status;
+};
+typedef struct __db_associate_reply __db_associate_reply;
+
+struct __db_bt_maxkey_msg {
+ u_int dbpcl_id;
+ u_int maxkey;
+};
+typedef struct __db_bt_maxkey_msg __db_bt_maxkey_msg;
+
+struct __db_bt_maxkey_reply {
+ int status;
+};
+typedef struct __db_bt_maxkey_reply __db_bt_maxkey_reply;
+
+struct __db_bt_minkey_msg {
+ u_int dbpcl_id;
+ u_int minkey;
+};
+typedef struct __db_bt_minkey_msg __db_bt_minkey_msg;
+
+struct __db_bt_minkey_reply {
+ int status;
+};
+typedef struct __db_bt_minkey_reply __db_bt_minkey_reply;
+
+struct __db_close_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_close_msg __db_close_msg;
+
+struct __db_close_reply {
+ int status;
+};
+typedef struct __db_close_reply __db_close_reply;
+
+struct __db_create_msg {
+ u_int dbenvcl_id;
+ u_int flags;
+};
+typedef struct __db_create_msg __db_create_msg;
+
+struct __db_create_reply {
+ int status;
+ u_int dbcl_id;
+};
+typedef struct __db_create_reply __db_create_reply;
+
+struct __db_del_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int flags;
+};
+typedef struct __db_del_msg __db_del_msg;
+
+struct __db_del_reply {
+ int status;
+};
+typedef struct __db_del_reply __db_del_reply;
+
+struct __db_extentsize_msg {
+ u_int dbpcl_id;
+ u_int extentsize;
+};
+typedef struct __db_extentsize_msg __db_extentsize_msg;
+
+struct __db_extentsize_reply {
+ int status;
+};
+typedef struct __db_extentsize_reply __db_extentsize_reply;
+
+struct __db_flags_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_flags_msg __db_flags_msg;
+
+struct __db_flags_reply {
+ int status;
+};
+typedef struct __db_flags_reply __db_flags_reply;
+
+struct __db_get_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __db_get_msg __db_get_msg;
+
+struct __db_get_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __db_get_reply __db_get_reply;
+
+struct __db_h_ffactor_msg {
+ u_int dbpcl_id;
+ u_int ffactor;
+};
+typedef struct __db_h_ffactor_msg __db_h_ffactor_msg;
+
+struct __db_h_ffactor_reply {
+ int status;
+};
+typedef struct __db_h_ffactor_reply __db_h_ffactor_reply;
+
+struct __db_h_nelem_msg {
+ u_int dbpcl_id;
+ u_int nelem;
+};
+typedef struct __db_h_nelem_msg __db_h_nelem_msg;
+
+struct __db_h_nelem_reply {
+ int status;
+};
+typedef struct __db_h_nelem_reply __db_h_nelem_reply;
+
+struct __db_key_range_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int flags;
+};
+typedef struct __db_key_range_msg __db_key_range_msg;
+
+struct __db_key_range_reply {
+ int status;
+ double less;
+ double equal;
+ double greater;
+};
+typedef struct __db_key_range_reply __db_key_range_reply;
+
+struct __db_lorder_msg {
+ u_int dbpcl_id;
+ u_int lorder;
+};
+typedef struct __db_lorder_msg __db_lorder_msg;
+
+struct __db_lorder_reply {
+ int status;
+};
+typedef struct __db_lorder_reply __db_lorder_reply;
+
+struct __db_open_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ u_int type;
+ u_int flags;
+ u_int mode;
+};
+typedef struct __db_open_msg __db_open_msg;
+
+struct __db_open_reply {
+ int status;
+ u_int type;
+ u_int dbflags;
+ u_int lorder;
+};
+typedef struct __db_open_reply __db_open_reply;
+
+struct __db_pagesize_msg {
+ u_int dbpcl_id;
+ u_int pagesize;
+};
+typedef struct __db_pagesize_msg __db_pagesize_msg;
+
+struct __db_pagesize_reply {
+ int status;
+};
+typedef struct __db_pagesize_reply __db_pagesize_reply;
+
+struct __db_pget_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int skeydlen;
+ u_int skeydoff;
+ u_int skeyflags;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ u_int pkeydlen;
+ u_int pkeydoff;
+ u_int pkeyflags;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __db_pget_msg __db_pget_msg;
+
+struct __db_pget_reply {
+ int status;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __db_pget_reply __db_pget_reply;
+
+struct __db_put_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __db_put_msg __db_put_msg;
+
+struct __db_put_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+};
+typedef struct __db_put_reply __db_put_reply;
+
+struct __db_re_delim_msg {
+ u_int dbpcl_id;
+ u_int delim;
+};
+typedef struct __db_re_delim_msg __db_re_delim_msg;
+
+struct __db_re_delim_reply {
+ int status;
+};
+typedef struct __db_re_delim_reply __db_re_delim_reply;
+
+struct __db_re_len_msg {
+ u_int dbpcl_id;
+ u_int len;
+};
+typedef struct __db_re_len_msg __db_re_len_msg;
+
+struct __db_re_len_reply {
+ int status;
+};
+typedef struct __db_re_len_reply __db_re_len_reply;
+
+struct __db_re_pad_msg {
+ u_int dbpcl_id;
+ u_int pad;
+};
+typedef struct __db_re_pad_msg __db_re_pad_msg;
+
+struct __db_re_pad_reply {
+ int status;
+};
+typedef struct __db_re_pad_reply __db_re_pad_reply;
+
+struct __db_remove_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ u_int flags;
+};
+typedef struct __db_remove_msg __db_remove_msg;
+
+struct __db_remove_reply {
+ int status;
+};
+typedef struct __db_remove_reply __db_remove_reply;
+
+struct __db_rename_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ char *newname;
+ u_int flags;
+};
+typedef struct __db_rename_msg __db_rename_msg;
+
+struct __db_rename_reply {
+ int status;
+};
+typedef struct __db_rename_reply __db_rename_reply;
+
+struct __db_stat_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_stat_msg __db_stat_msg;
+
+struct __db_stat_reply {
+ int status;
+ struct {
+ u_int stats_len;
+ u_int *stats_val;
+ } stats;
+};
+typedef struct __db_stat_reply __db_stat_reply;
+
+struct __db_sync_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_sync_msg __db_sync_msg;
+
+struct __db_sync_reply {
+ int status;
+};
+typedef struct __db_sync_reply __db_sync_reply;
+
+struct __db_truncate_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ u_int flags;
+};
+typedef struct __db_truncate_msg __db_truncate_msg;
+
+struct __db_truncate_reply {
+ int status;
+ u_int count;
+};
+typedef struct __db_truncate_reply __db_truncate_reply;
+
+struct __db_cursor_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int flags;
+};
+typedef struct __db_cursor_msg __db_cursor_msg;
+
+struct __db_cursor_reply {
+ int status;
+ u_int dbcidcl_id;
+};
+typedef struct __db_cursor_reply __db_cursor_reply;
+
+struct __db_join_msg {
+ u_int dbpcl_id;
+ struct {
+ u_int curs_len;
+ u_int *curs_val;
+ } curs;
+ u_int flags;
+};
+typedef struct __db_join_msg __db_join_msg;
+
+struct __db_join_reply {
+ int status;
+ u_int dbcidcl_id;
+};
+typedef struct __db_join_reply __db_join_reply;
+
+struct __dbc_close_msg {
+ u_int dbccl_id;
+};
+typedef struct __dbc_close_msg __dbc_close_msg;
+
+struct __dbc_close_reply {
+ int status;
+};
+typedef struct __dbc_close_reply __dbc_close_reply;
+
+struct __dbc_count_msg {
+ u_int dbccl_id;
+ u_int flags;
+};
+typedef struct __dbc_count_msg __dbc_count_msg;
+
+struct __dbc_count_reply {
+ int status;
+ u_int dupcount;
+};
+typedef struct __dbc_count_reply __dbc_count_reply;
+
+struct __dbc_del_msg {
+ u_int dbccl_id;
+ u_int flags;
+};
+typedef struct __dbc_del_msg __dbc_del_msg;
+
+struct __dbc_del_reply {
+ int status;
+};
+typedef struct __dbc_del_reply __dbc_del_reply;
+
+struct __dbc_dup_msg {
+ u_int dbccl_id;
+ u_int flags;
+};
+typedef struct __dbc_dup_msg __dbc_dup_msg;
+
+struct __dbc_dup_reply {
+ int status;
+ u_int dbcidcl_id;
+};
+typedef struct __dbc_dup_reply __dbc_dup_reply;
+
+struct __dbc_get_msg {
+ u_int dbccl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __dbc_get_msg __dbc_get_msg;
+
+struct __dbc_get_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __dbc_get_reply __dbc_get_reply;
+
+struct __dbc_pget_msg {
+ u_int dbccl_id;
+ u_int skeydlen;
+ u_int skeydoff;
+ u_int skeyflags;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ u_int pkeydlen;
+ u_int pkeydoff;
+ u_int pkeyflags;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __dbc_pget_msg __dbc_pget_msg;
+
+struct __dbc_pget_reply {
+ int status;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __dbc_pget_reply __dbc_pget_reply;
+
+struct __dbc_put_msg {
+ u_int dbccl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __dbc_put_msg __dbc_put_msg;
+
+struct __dbc_put_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+};
+typedef struct __dbc_put_reply __dbc_put_reply;
+
+#define __DB_env_cachesize ((unsigned long)(1))
+extern __env_cachesize_reply * __db_env_cachesize_3003();
+#define __DB_env_close ((unsigned long)(2))
+extern __env_close_reply * __db_env_close_3003();
+#define __DB_env_create ((unsigned long)(3))
+extern __env_create_reply * __db_env_create_3003();
+#define __DB_env_flags ((unsigned long)(4))
+extern __env_flags_reply * __db_env_flags_3003();
+#define __DB_env_open ((unsigned long)(5))
+extern __env_open_reply * __db_env_open_3003();
+#define __DB_env_remove ((unsigned long)(6))
+extern __env_remove_reply * __db_env_remove_3003();
+#define __DB_txn_abort ((unsigned long)(7))
+extern __txn_abort_reply * __db_txn_abort_3003();
+#define __DB_txn_begin ((unsigned long)(8))
+extern __txn_begin_reply * __db_txn_begin_3003();
+#define __DB_txn_commit ((unsigned long)(9))
+extern __txn_commit_reply * __db_txn_commit_3003();
+#define __DB_txn_prepare ((unsigned long)(10))
+extern __txn_prepare_reply * __db_txn_prepare_3003();
+#define __DB_txn_recover ((unsigned long)(11))
+extern __txn_recover_reply * __db_txn_recover_3003();
+#define __DB_db_associate ((unsigned long)(12))
+extern __db_associate_reply * __db_db_associate_3003();
+#define __DB_db_bt_maxkey ((unsigned long)(13))
+extern __db_bt_maxkey_reply * __db_db_bt_maxkey_3003();
+#define __DB_db_bt_minkey ((unsigned long)(14))
+extern __db_bt_minkey_reply * __db_db_bt_minkey_3003();
+#define __DB_db_close ((unsigned long)(15))
+extern __db_close_reply * __db_db_close_3003();
+#define __DB_db_create ((unsigned long)(16))
+extern __db_create_reply * __db_db_create_3003();
+#define __DB_db_del ((unsigned long)(17))
+extern __db_del_reply * __db_db_del_3003();
+#define __DB_db_extentsize ((unsigned long)(18))
+extern __db_extentsize_reply * __db_db_extentsize_3003();
+#define __DB_db_flags ((unsigned long)(19))
+extern __db_flags_reply * __db_db_flags_3003();
+#define __DB_db_get ((unsigned long)(20))
+extern __db_get_reply * __db_db_get_3003();
+#define __DB_db_h_ffactor ((unsigned long)(21))
+extern __db_h_ffactor_reply * __db_db_h_ffactor_3003();
+#define __DB_db_h_nelem ((unsigned long)(22))
+extern __db_h_nelem_reply * __db_db_h_nelem_3003();
+#define __DB_db_key_range ((unsigned long)(23))
+extern __db_key_range_reply * __db_db_key_range_3003();
+#define __DB_db_lorder ((unsigned long)(24))
+extern __db_lorder_reply * __db_db_lorder_3003();
+#define __DB_db_open ((unsigned long)(25))
+extern __db_open_reply * __db_db_open_3003();
+#define __DB_db_pagesize ((unsigned long)(26))
+extern __db_pagesize_reply * __db_db_pagesize_3003();
+#define __DB_db_pget ((unsigned long)(27))
+extern __db_pget_reply * __db_db_pget_3003();
+#define __DB_db_put ((unsigned long)(28))
+extern __db_put_reply * __db_db_put_3003();
+#define __DB_db_re_delim ((unsigned long)(29))
+extern __db_re_delim_reply * __db_db_re_delim_3003();
+#define __DB_db_re_len ((unsigned long)(30))
+extern __db_re_len_reply * __db_db_re_len_3003();
+#define __DB_db_re_pad ((unsigned long)(31))
+extern __db_re_pad_reply * __db_db_re_pad_3003();
+#define __DB_db_remove ((unsigned long)(32))
+extern __db_remove_reply * __db_db_remove_3003();
+#define __DB_db_rename ((unsigned long)(33))
+extern __db_rename_reply * __db_db_rename_3003();
+#define __DB_db_stat ((unsigned long)(34))
+extern __db_stat_reply * __db_db_stat_3003();
+#define __DB_db_sync ((unsigned long)(35))
+extern __db_sync_reply * __db_db_sync_3003();
+#define __DB_db_truncate ((unsigned long)(36))
+extern __db_truncate_reply * __db_db_truncate_3003();
+#define __DB_db_cursor ((unsigned long)(37))
+extern __db_cursor_reply * __db_db_cursor_3003();
+#define __DB_db_join ((unsigned long)(38))
+extern __db_join_reply * __db_db_join_3003();
+#define __DB_dbc_close ((unsigned long)(39))
+extern __dbc_close_reply * __db_dbc_close_3003();
+#define __DB_dbc_count ((unsigned long)(40))
+extern __dbc_count_reply * __db_dbc_count_3003();
+#define __DB_dbc_del ((unsigned long)(41))
+extern __dbc_del_reply * __db_dbc_del_3003();
+#define __DB_dbc_dup ((unsigned long)(42))
+extern __dbc_dup_reply * __db_dbc_dup_3003();
+#define __DB_dbc_get ((unsigned long)(43))
+extern __dbc_get_reply * __db_dbc_get_3003();
+#define __DB_dbc_pget ((unsigned long)(44))
+extern __dbc_pget_reply * __db_dbc_pget_3003();
+#define __DB_dbc_put ((unsigned long)(45))
+extern __dbc_put_reply * __db_dbc_put_3003();
+extern int db_rpc_serverprog_3003_freeresult();
+
+/* the xdr functions */
+extern bool_t xdr___env_cachesize_msg();
+extern bool_t xdr___env_cachesize_reply();
+extern bool_t xdr___env_close_msg();
+extern bool_t xdr___env_close_reply();
+extern bool_t xdr___env_create_msg();
+extern bool_t xdr___env_create_reply();
+extern bool_t xdr___env_flags_msg();
+extern bool_t xdr___env_flags_reply();
+extern bool_t xdr___env_open_msg();
+extern bool_t xdr___env_open_reply();
+extern bool_t xdr___env_remove_msg();
+extern bool_t xdr___env_remove_reply();
+extern bool_t xdr___txn_abort_msg();
+extern bool_t xdr___txn_abort_reply();
+extern bool_t xdr___txn_begin_msg();
+extern bool_t xdr___txn_begin_reply();
+extern bool_t xdr___txn_commit_msg();
+extern bool_t xdr___txn_commit_reply();
+extern bool_t xdr___txn_prepare_msg();
+extern bool_t xdr___txn_prepare_reply();
+extern bool_t xdr___txn_recover_msg();
+extern bool_t xdr___txn_recover_reply();
+extern bool_t xdr___db_associate_msg();
+extern bool_t xdr___db_associate_reply();
+extern bool_t xdr___db_bt_maxkey_msg();
+extern bool_t xdr___db_bt_maxkey_reply();
+extern bool_t xdr___db_bt_minkey_msg();
+extern bool_t xdr___db_bt_minkey_reply();
+extern bool_t xdr___db_close_msg();
+extern bool_t xdr___db_close_reply();
+extern bool_t xdr___db_create_msg();
+extern bool_t xdr___db_create_reply();
+extern bool_t xdr___db_del_msg();
+extern bool_t xdr___db_del_reply();
+extern bool_t xdr___db_extentsize_msg();
+extern bool_t xdr___db_extentsize_reply();
+extern bool_t xdr___db_flags_msg();
+extern bool_t xdr___db_flags_reply();
+extern bool_t xdr___db_get_msg();
+extern bool_t xdr___db_get_reply();
+extern bool_t xdr___db_h_ffactor_msg();
+extern bool_t xdr___db_h_ffactor_reply();
+extern bool_t xdr___db_h_nelem_msg();
+extern bool_t xdr___db_h_nelem_reply();
+extern bool_t xdr___db_key_range_msg();
+extern bool_t xdr___db_key_range_reply();
+extern bool_t xdr___db_lorder_msg();
+extern bool_t xdr___db_lorder_reply();
+extern bool_t xdr___db_open_msg();
+extern bool_t xdr___db_open_reply();
+extern bool_t xdr___db_pagesize_msg();
+extern bool_t xdr___db_pagesize_reply();
+extern bool_t xdr___db_pget_msg();
+extern bool_t xdr___db_pget_reply();
+extern bool_t xdr___db_put_msg();
+extern bool_t xdr___db_put_reply();
+extern bool_t xdr___db_re_delim_msg();
+extern bool_t xdr___db_re_delim_reply();
+extern bool_t xdr___db_re_len_msg();
+extern bool_t xdr___db_re_len_reply();
+extern bool_t xdr___db_re_pad_msg();
+extern bool_t xdr___db_re_pad_reply();
+extern bool_t xdr___db_remove_msg();
+extern bool_t xdr___db_remove_reply();
+extern bool_t xdr___db_rename_msg();
+extern bool_t xdr___db_rename_reply();
+extern bool_t xdr___db_stat_msg();
+extern bool_t xdr___db_stat_reply();
+extern bool_t xdr___db_sync_msg();
+extern bool_t xdr___db_sync_reply();
+extern bool_t xdr___db_truncate_msg();
+extern bool_t xdr___db_truncate_reply();
+extern bool_t xdr___db_cursor_msg();
+extern bool_t xdr___db_cursor_reply();
+extern bool_t xdr___db_join_msg();
+extern bool_t xdr___db_join_reply();
+extern bool_t xdr___dbc_close_msg();
+extern bool_t xdr___dbc_close_reply();
+extern bool_t xdr___dbc_count_msg();
+extern bool_t xdr___dbc_count_reply();
+extern bool_t xdr___dbc_del_msg();
+extern bool_t xdr___dbc_del_reply();
+extern bool_t xdr___dbc_dup_msg();
+extern bool_t xdr___dbc_dup_reply();
+extern bool_t xdr___dbc_get_msg();
+extern bool_t xdr___dbc_get_reply();
+extern bool_t xdr___dbc_pget_msg();
+extern bool_t xdr___dbc_pget_reply();
+extern bool_t xdr___dbc_put_msg();
+extern bool_t xdr___dbc_put_reply();
+
+#endif /* !_DB_SERVER_H_RPCGEN */
diff --git a/db/include_auto/db_server.in b/db/include_auto/db_server.in
new file mode 100644
index 000000000..c17f39401
--- /dev/null
+++ b/db/include_auto/db_server.in
@@ -0,0 +1,994 @@
+/*
+ * Please do not edit this file.
+ * It was generated using rpcgen.
+ */
+
+#ifndef _DB_SERVER_H_RPCGEN
+#define _DB_SERVER_H_RPCGEN
+
+#include <rpc/rpc.h>
+
+struct __env_cachesize_msg {
+ u_int dbenvcl_id;
+ u_int gbytes;
+ u_int bytes;
+ u_int ncache;
+};
+typedef struct __env_cachesize_msg __env_cachesize_msg;
+
+struct __env_cachesize_reply {
+ int status;
+};
+typedef struct __env_cachesize_reply __env_cachesize_reply;
+
+struct __env_close_msg {
+ u_int dbenvcl_id;
+ u_int flags;
+};
+typedef struct __env_close_msg __env_close_msg;
+
+struct __env_close_reply {
+ int status;
+};
+typedef struct __env_close_reply __env_close_reply;
+
+struct __env_create_msg {
+ u_int timeout;
+};
+typedef struct __env_create_msg __env_create_msg;
+
+struct __env_create_reply {
+ int status;
+ u_int envcl_id;
+};
+typedef struct __env_create_reply __env_create_reply;
+
+struct __env_flags_msg {
+ u_int dbenvcl_id;
+ u_int flags;
+ u_int onoff;
+};
+typedef struct __env_flags_msg __env_flags_msg;
+
+struct __env_flags_reply {
+ int status;
+};
+typedef struct __env_flags_reply __env_flags_reply;
+
+struct __env_open_msg {
+ u_int dbenvcl_id;
+ char *home;
+ u_int flags;
+ u_int mode;
+};
+typedef struct __env_open_msg __env_open_msg;
+
+struct __env_open_reply {
+ int status;
+};
+typedef struct __env_open_reply __env_open_reply;
+
+struct __env_remove_msg {
+ u_int dbenvcl_id;
+ char *home;
+ u_int flags;
+};
+typedef struct __env_remove_msg __env_remove_msg;
+
+struct __env_remove_reply {
+ int status;
+};
+typedef struct __env_remove_reply __env_remove_reply;
+
+struct __txn_abort_msg {
+ u_int txnpcl_id;
+};
+typedef struct __txn_abort_msg __txn_abort_msg;
+
+struct __txn_abort_reply {
+ int status;
+};
+typedef struct __txn_abort_reply __txn_abort_reply;
+
+struct __txn_begin_msg {
+ u_int dbenvcl_id;
+ u_int parentcl_id;
+ u_int flags;
+};
+typedef struct __txn_begin_msg __txn_begin_msg;
+
+struct __txn_begin_reply {
+ int status;
+ u_int txnidcl_id;
+};
+typedef struct __txn_begin_reply __txn_begin_reply;
+
+struct __txn_commit_msg {
+ u_int txnpcl_id;
+ u_int flags;
+};
+typedef struct __txn_commit_msg __txn_commit_msg;
+
+struct __txn_commit_reply {
+ int status;
+};
+typedef struct __txn_commit_reply __txn_commit_reply;
+
+struct __txn_prepare_msg {
+ u_int txnpcl_id;
+ char gid[128];
+};
+typedef struct __txn_prepare_msg __txn_prepare_msg;
+
+struct __txn_prepare_reply {
+ int status;
+};
+typedef struct __txn_prepare_reply __txn_prepare_reply;
+
+struct __txn_recover_msg {
+ u_int dbenvcl_id;
+ u_int count;
+ u_int flags;
+};
+typedef struct __txn_recover_msg __txn_recover_msg;
+
+struct __txn_recover_reply {
+ int status;
+ struct {
+ u_int txn_len;
+ u_int *txn_val;
+ } txn;
+ struct {
+ u_int gid_len;
+ char *gid_val;
+ } gid;
+ u_int retcount;
+};
+typedef struct __txn_recover_reply __txn_recover_reply;
+
+struct __db_associate_msg {
+ u_int dbpcl_id;
+ u_int sdbpcl_id;
+ u_int flags;
+};
+typedef struct __db_associate_msg __db_associate_msg;
+
+struct __db_associate_reply {
+ int status;
+};
+typedef struct __db_associate_reply __db_associate_reply;
+
+struct __db_bt_maxkey_msg {
+ u_int dbpcl_id;
+ u_int maxkey;
+};
+typedef struct __db_bt_maxkey_msg __db_bt_maxkey_msg;
+
+struct __db_bt_maxkey_reply {
+ int status;
+};
+typedef struct __db_bt_maxkey_reply __db_bt_maxkey_reply;
+
+struct __db_bt_minkey_msg {
+ u_int dbpcl_id;
+ u_int minkey;
+};
+typedef struct __db_bt_minkey_msg __db_bt_minkey_msg;
+
+struct __db_bt_minkey_reply {
+ int status;
+};
+typedef struct __db_bt_minkey_reply __db_bt_minkey_reply;
+
+struct __db_close_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_close_msg __db_close_msg;
+
+struct __db_close_reply {
+ int status;
+};
+typedef struct __db_close_reply __db_close_reply;
+
+struct __db_create_msg {
+ u_int dbenvcl_id;
+ u_int flags;
+};
+typedef struct __db_create_msg __db_create_msg;
+
+struct __db_create_reply {
+ int status;
+ u_int dbcl_id;
+};
+typedef struct __db_create_reply __db_create_reply;
+
+struct __db_del_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int flags;
+};
+typedef struct __db_del_msg __db_del_msg;
+
+struct __db_del_reply {
+ int status;
+};
+typedef struct __db_del_reply __db_del_reply;
+
+struct __db_extentsize_msg {
+ u_int dbpcl_id;
+ u_int extentsize;
+};
+typedef struct __db_extentsize_msg __db_extentsize_msg;
+
+struct __db_extentsize_reply {
+ int status;
+};
+typedef struct __db_extentsize_reply __db_extentsize_reply;
+
+struct __db_flags_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_flags_msg __db_flags_msg;
+
+struct __db_flags_reply {
+ int status;
+};
+typedef struct __db_flags_reply __db_flags_reply;
+
+struct __db_get_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __db_get_msg __db_get_msg;
+
+struct __db_get_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __db_get_reply __db_get_reply;
+
+struct __db_h_ffactor_msg {
+ u_int dbpcl_id;
+ u_int ffactor;
+};
+typedef struct __db_h_ffactor_msg __db_h_ffactor_msg;
+
+struct __db_h_ffactor_reply {
+ int status;
+};
+typedef struct __db_h_ffactor_reply __db_h_ffactor_reply;
+
+struct __db_h_nelem_msg {
+ u_int dbpcl_id;
+ u_int nelem;
+};
+typedef struct __db_h_nelem_msg __db_h_nelem_msg;
+
+struct __db_h_nelem_reply {
+ int status;
+};
+typedef struct __db_h_nelem_reply __db_h_nelem_reply;
+
+struct __db_key_range_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int flags;
+};
+typedef struct __db_key_range_msg __db_key_range_msg;
+
+struct __db_key_range_reply {
+ int status;
+ double less;
+ double equal;
+ double greater;
+};
+typedef struct __db_key_range_reply __db_key_range_reply;
+
+struct __db_lorder_msg {
+ u_int dbpcl_id;
+ u_int lorder;
+};
+typedef struct __db_lorder_msg __db_lorder_msg;
+
+struct __db_lorder_reply {
+ int status;
+};
+typedef struct __db_lorder_reply __db_lorder_reply;
+
+struct __db_open_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ u_int type;
+ u_int flags;
+ u_int mode;
+};
+typedef struct __db_open_msg __db_open_msg;
+
+struct __db_open_reply {
+ int status;
+ u_int type;
+ u_int dbflags;
+ u_int lorder;
+};
+typedef struct __db_open_reply __db_open_reply;
+
+struct __db_pagesize_msg {
+ u_int dbpcl_id;
+ u_int pagesize;
+};
+typedef struct __db_pagesize_msg __db_pagesize_msg;
+
+struct __db_pagesize_reply {
+ int status;
+};
+typedef struct __db_pagesize_reply __db_pagesize_reply;
+
+struct __db_pget_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int skeydlen;
+ u_int skeydoff;
+ u_int skeyflags;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ u_int pkeydlen;
+ u_int pkeydoff;
+ u_int pkeyflags;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __db_pget_msg __db_pget_msg;
+
+struct __db_pget_reply {
+ int status;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __db_pget_reply __db_pget_reply;
+
+struct __db_put_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __db_put_msg __db_put_msg;
+
+struct __db_put_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+};
+typedef struct __db_put_reply __db_put_reply;
+
+struct __db_re_delim_msg {
+ u_int dbpcl_id;
+ u_int delim;
+};
+typedef struct __db_re_delim_msg __db_re_delim_msg;
+
+struct __db_re_delim_reply {
+ int status;
+};
+typedef struct __db_re_delim_reply __db_re_delim_reply;
+
+struct __db_re_len_msg {
+ u_int dbpcl_id;
+ u_int len;
+};
+typedef struct __db_re_len_msg __db_re_len_msg;
+
+struct __db_re_len_reply {
+ int status;
+};
+typedef struct __db_re_len_reply __db_re_len_reply;
+
+struct __db_re_pad_msg {
+ u_int dbpcl_id;
+ u_int pad;
+};
+typedef struct __db_re_pad_msg __db_re_pad_msg;
+
+struct __db_re_pad_reply {
+ int status;
+};
+typedef struct __db_re_pad_reply __db_re_pad_reply;
+
+struct __db_remove_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ u_int flags;
+};
+typedef struct __db_remove_msg __db_remove_msg;
+
+struct __db_remove_reply {
+ int status;
+};
+typedef struct __db_remove_reply __db_remove_reply;
+
+struct __db_rename_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ char *newname;
+ u_int flags;
+};
+typedef struct __db_rename_msg __db_rename_msg;
+
+struct __db_rename_reply {
+ int status;
+};
+typedef struct __db_rename_reply __db_rename_reply;
+
+struct __db_stat_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_stat_msg __db_stat_msg;
+
+struct __db_stat_reply {
+ int status;
+ struct {
+ u_int stats_len;
+ u_int *stats_val;
+ } stats;
+};
+typedef struct __db_stat_reply __db_stat_reply;
+
+struct __db_sync_msg {
+ u_int dbpcl_id;
+ u_int flags;
+};
+typedef struct __db_sync_msg __db_sync_msg;
+
+struct __db_sync_reply {
+ int status;
+};
+typedef struct __db_sync_reply __db_sync_reply;
+
+struct __db_truncate_msg {
+ u_int dbpcl_id;
+ char *name;
+ char *subdb;
+ u_int flags;
+};
+typedef struct __db_truncate_msg __db_truncate_msg;
+
+struct __db_truncate_reply {
+ int status;
+ u_int count;
+};
+typedef struct __db_truncate_reply __db_truncate_reply;
+
+struct __db_cursor_msg {
+ u_int dbpcl_id;
+ u_int txnpcl_id;
+ u_int flags;
+};
+typedef struct __db_cursor_msg __db_cursor_msg;
+
+struct __db_cursor_reply {
+ int status;
+ u_int dbcidcl_id;
+};
+typedef struct __db_cursor_reply __db_cursor_reply;
+
+struct __db_join_msg {
+ u_int dbpcl_id;
+ struct {
+ u_int curs_len;
+ u_int *curs_val;
+ } curs;
+ u_int flags;
+};
+typedef struct __db_join_msg __db_join_msg;
+
+struct __db_join_reply {
+ int status;
+ u_int dbcidcl_id;
+};
+typedef struct __db_join_reply __db_join_reply;
+
+struct __dbc_close_msg {
+ u_int dbccl_id;
+};
+typedef struct __dbc_close_msg __dbc_close_msg;
+
+struct __dbc_close_reply {
+ int status;
+};
+typedef struct __dbc_close_reply __dbc_close_reply;
+
+struct __dbc_count_msg {
+ u_int dbccl_id;
+ u_int flags;
+};
+typedef struct __dbc_count_msg __dbc_count_msg;
+
+struct __dbc_count_reply {
+ int status;
+ u_int dupcount;
+};
+typedef struct __dbc_count_reply __dbc_count_reply;
+
+struct __dbc_del_msg {
+ u_int dbccl_id;
+ u_int flags;
+};
+typedef struct __dbc_del_msg __dbc_del_msg;
+
+struct __dbc_del_reply {
+ int status;
+};
+typedef struct __dbc_del_reply __dbc_del_reply;
+
+struct __dbc_dup_msg {
+ u_int dbccl_id;
+ u_int flags;
+};
+typedef struct __dbc_dup_msg __dbc_dup_msg;
+
+struct __dbc_dup_reply {
+ int status;
+ u_int dbcidcl_id;
+};
+typedef struct __dbc_dup_reply __dbc_dup_reply;
+
+struct __dbc_get_msg {
+ u_int dbccl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __dbc_get_msg __dbc_get_msg;
+
+struct __dbc_get_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __dbc_get_reply __dbc_get_reply;
+
+struct __dbc_pget_msg {
+ u_int dbccl_id;
+ u_int skeydlen;
+ u_int skeydoff;
+ u_int skeyflags;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ u_int pkeydlen;
+ u_int pkeydoff;
+ u_int pkeyflags;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __dbc_pget_msg __dbc_pget_msg;
+
+struct __dbc_pget_reply {
+ int status;
+ struct {
+ u_int skeydata_len;
+ char *skeydata_val;
+ } skeydata;
+ struct {
+ u_int pkeydata_len;
+ char *pkeydata_val;
+ } pkeydata;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+};
+typedef struct __dbc_pget_reply __dbc_pget_reply;
+
+struct __dbc_put_msg {
+ u_int dbccl_id;
+ u_int keydlen;
+ u_int keydoff;
+ u_int keyflags;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+ u_int datadlen;
+ u_int datadoff;
+ u_int dataflags;
+ struct {
+ u_int datadata_len;
+ char *datadata_val;
+ } datadata;
+ u_int flags;
+};
+typedef struct __dbc_put_msg __dbc_put_msg;
+
+struct __dbc_put_reply {
+ int status;
+ struct {
+ u_int keydata_len;
+ char *keydata_val;
+ } keydata;
+};
+typedef struct __dbc_put_reply __dbc_put_reply;
+
+#define __DB_env_cachesize ((unsigned long)(1))
+extern __env_cachesize_reply * __db_env_cachesize_3003();
+#define __DB_env_close ((unsigned long)(2))
+extern __env_close_reply * __db_env_close_3003();
+#define __DB_env_create ((unsigned long)(3))
+extern __env_create_reply * __db_env_create_3003();
+#define __DB_env_flags ((unsigned long)(4))
+extern __env_flags_reply * __db_env_flags_3003();
+#define __DB_env_open ((unsigned long)(5))
+extern __env_open_reply * __db_env_open_3003();
+#define __DB_env_remove ((unsigned long)(6))
+extern __env_remove_reply * __db_env_remove_3003();
+#define __DB_txn_abort ((unsigned long)(7))
+extern __txn_abort_reply * __db_txn_abort_3003();
+#define __DB_txn_begin ((unsigned long)(8))
+extern __txn_begin_reply * __db_txn_begin_3003();
+#define __DB_txn_commit ((unsigned long)(9))
+extern __txn_commit_reply * __db_txn_commit_3003();
+#define __DB_txn_prepare ((unsigned long)(10))
+extern __txn_prepare_reply * __db_txn_prepare_3003();
+#define __DB_txn_recover ((unsigned long)(11))
+extern __txn_recover_reply * __db_txn_recover_3003();
+#define __DB_db_associate ((unsigned long)(12))
+extern __db_associate_reply * __db_db_associate_3003();
+#define __DB_db_bt_maxkey ((unsigned long)(13))
+extern __db_bt_maxkey_reply * __db_db_bt_maxkey_3003();
+#define __DB_db_bt_minkey ((unsigned long)(14))
+extern __db_bt_minkey_reply * __db_db_bt_minkey_3003();
+#define __DB_db_close ((unsigned long)(15))
+extern __db_close_reply * __db_db_close_3003();
+#define __DB_db_create ((unsigned long)(16))
+extern __db_create_reply * __db_db_create_3003();
+#define __DB_db_del ((unsigned long)(17))
+extern __db_del_reply * __db_db_del_3003();
+#define __DB_db_extentsize ((unsigned long)(18))
+extern __db_extentsize_reply * __db_db_extentsize_3003();
+#define __DB_db_flags ((unsigned long)(19))
+extern __db_flags_reply * __db_db_flags_3003();
+#define __DB_db_get ((unsigned long)(20))
+extern __db_get_reply * __db_db_get_3003();
+#define __DB_db_h_ffactor ((unsigned long)(21))
+extern __db_h_ffactor_reply * __db_db_h_ffactor_3003();
+#define __DB_db_h_nelem ((unsigned long)(22))
+extern __db_h_nelem_reply * __db_db_h_nelem_3003();
+#define __DB_db_key_range ((unsigned long)(23))
+extern __db_key_range_reply * __db_db_key_range_3003();
+#define __DB_db_lorder ((unsigned long)(24))
+extern __db_lorder_reply * __db_db_lorder_3003();
+#define __DB_db_open ((unsigned long)(25))
+extern __db_open_reply * __db_db_open_3003();
+#define __DB_db_pagesize ((unsigned long)(26))
+extern __db_pagesize_reply * __db_db_pagesize_3003();
+#define __DB_db_pget ((unsigned long)(27))
+extern __db_pget_reply * __db_db_pget_3003();
+#define __DB_db_put ((unsigned long)(28))
+extern __db_put_reply * __db_db_put_3003();
+#define __DB_db_re_delim ((unsigned long)(29))
+extern __db_re_delim_reply * __db_db_re_delim_3003();
+#define __DB_db_re_len ((unsigned long)(30))
+extern __db_re_len_reply * __db_db_re_len_3003();
+#define __DB_db_re_pad ((unsigned long)(31))
+extern __db_re_pad_reply * __db_db_re_pad_3003();
+#define __DB_db_remove ((unsigned long)(32))
+extern __db_remove_reply * __db_db_remove_3003();
+#define __DB_db_rename ((unsigned long)(33))
+extern __db_rename_reply * __db_db_rename_3003();
+#define __DB_db_stat ((unsigned long)(34))
+extern __db_stat_reply * __db_db_stat_3003();
+#define __DB_db_sync ((unsigned long)(35))
+extern __db_sync_reply * __db_db_sync_3003();
+#define __DB_db_truncate ((unsigned long)(36))
+extern __db_truncate_reply * __db_db_truncate_3003();
+#define __DB_db_cursor ((unsigned long)(37))
+extern __db_cursor_reply * __db_db_cursor_3003();
+#define __DB_db_join ((unsigned long)(38))
+extern __db_join_reply * __db_db_join_3003();
+#define __DB_dbc_close ((unsigned long)(39))
+extern __dbc_close_reply * __db_dbc_close_3003();
+#define __DB_dbc_count ((unsigned long)(40))
+extern __dbc_count_reply * __db_dbc_count_3003();
+#define __DB_dbc_del ((unsigned long)(41))
+extern __dbc_del_reply * __db_dbc_del_3003();
+#define __DB_dbc_dup ((unsigned long)(42))
+extern __dbc_dup_reply * __db_dbc_dup_3003();
+#define __DB_dbc_get ((unsigned long)(43))
+extern __dbc_get_reply * __db_dbc_get_3003();
+#define __DB_dbc_pget ((unsigned long)(44))
+extern __dbc_pget_reply * __db_dbc_pget_3003();
+#define __DB_dbc_put ((unsigned long)(45))
+extern __dbc_put_reply * __db_dbc_put_3003();
+extern int db_rpc_serverprog_3003_freeresult();
+
+/* the xdr functions */
+#define xdr___env_cachesize_msg xdr___env_cachesize_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_cachesize_msg();
+#define xdr___env_cachesize_reply xdr___env_cachesize_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_cachesize_reply();
+#define xdr___env_close_msg xdr___env_close_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_close_msg();
+#define xdr___env_close_reply xdr___env_close_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_close_reply();
+#define xdr___env_create_msg xdr___env_create_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_create_msg();
+#define xdr___env_create_reply xdr___env_create_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_create_reply();
+#define xdr___env_flags_msg xdr___env_flags_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_flags_msg();
+#define xdr___env_flags_reply xdr___env_flags_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_flags_reply();
+#define xdr___env_open_msg xdr___env_open_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_open_msg();
+#define xdr___env_open_reply xdr___env_open_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_open_reply();
+#define xdr___env_remove_msg xdr___env_remove_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_remove_msg();
+#define xdr___env_remove_reply xdr___env_remove_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___env_remove_reply();
+#define xdr___txn_abort_msg xdr___txn_abort_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_abort_msg();
+#define xdr___txn_abort_reply xdr___txn_abort_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_abort_reply();
+#define xdr___txn_begin_msg xdr___txn_begin_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_begin_msg();
+#define xdr___txn_begin_reply xdr___txn_begin_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_begin_reply();
+#define xdr___txn_commit_msg xdr___txn_commit_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_commit_msg();
+#define xdr___txn_commit_reply xdr___txn_commit_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_commit_reply();
+#define xdr___txn_prepare_msg xdr___txn_prepare_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_prepare_msg();
+#define xdr___txn_prepare_reply xdr___txn_prepare_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_prepare_reply();
+#define xdr___txn_recover_msg xdr___txn_recover_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_recover_msg();
+#define xdr___txn_recover_reply xdr___txn_recover_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___txn_recover_reply();
+#define xdr___db_associate_msg xdr___db_associate_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_associate_msg();
+#define xdr___db_associate_reply xdr___db_associate_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_associate_reply();
+#define xdr___db_bt_maxkey_msg xdr___db_bt_maxkey_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_bt_maxkey_msg();
+#define xdr___db_bt_maxkey_reply xdr___db_bt_maxkey_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_bt_maxkey_reply();
+#define xdr___db_bt_minkey_msg xdr___db_bt_minkey_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_bt_minkey_msg();
+#define xdr___db_bt_minkey_reply xdr___db_bt_minkey_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_bt_minkey_reply();
+#define xdr___db_close_msg xdr___db_close_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_close_msg();
+#define xdr___db_close_reply xdr___db_close_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_close_reply();
+#define xdr___db_create_msg xdr___db_create_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_create_msg();
+#define xdr___db_create_reply xdr___db_create_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_create_reply();
+#define xdr___db_del_msg xdr___db_del_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_del_msg();
+#define xdr___db_del_reply xdr___db_del_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_del_reply();
+#define xdr___db_extentsize_msg xdr___db_extentsize_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_extentsize_msg();
+#define xdr___db_extentsize_reply xdr___db_extentsize_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_extentsize_reply();
+#define xdr___db_flags_msg xdr___db_flags_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_flags_msg();
+#define xdr___db_flags_reply xdr___db_flags_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_flags_reply();
+#define xdr___db_get_msg xdr___db_get_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_get_msg();
+#define xdr___db_get_reply xdr___db_get_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_get_reply();
+#define xdr___db_h_ffactor_msg xdr___db_h_ffactor_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_h_ffactor_msg();
+#define xdr___db_h_ffactor_reply xdr___db_h_ffactor_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_h_ffactor_reply();
+#define xdr___db_h_nelem_msg xdr___db_h_nelem_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_h_nelem_msg();
+#define xdr___db_h_nelem_reply xdr___db_h_nelem_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_h_nelem_reply();
+#define xdr___db_key_range_msg xdr___db_key_range_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_key_range_msg();
+#define xdr___db_key_range_reply xdr___db_key_range_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_key_range_reply();
+#define xdr___db_lorder_msg xdr___db_lorder_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_lorder_msg();
+#define xdr___db_lorder_reply xdr___db_lorder_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_lorder_reply();
+#define xdr___db_open_msg xdr___db_open_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_open_msg();
+#define xdr___db_open_reply xdr___db_open_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_open_reply();
+#define xdr___db_pagesize_msg xdr___db_pagesize_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_pagesize_msg();
+#define xdr___db_pagesize_reply xdr___db_pagesize_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_pagesize_reply();
+#define xdr___db_pget_msg xdr___db_pget_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_pget_msg();
+#define xdr___db_pget_reply xdr___db_pget_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_pget_reply();
+#define xdr___db_put_msg xdr___db_put_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_put_msg();
+#define xdr___db_put_reply xdr___db_put_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_put_reply();
+#define xdr___db_re_delim_msg xdr___db_re_delim_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_re_delim_msg();
+#define xdr___db_re_delim_reply xdr___db_re_delim_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_re_delim_reply();
+#define xdr___db_re_len_msg xdr___db_re_len_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_re_len_msg();
+#define xdr___db_re_len_reply xdr___db_re_len_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_re_len_reply();
+#define xdr___db_re_pad_msg xdr___db_re_pad_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_re_pad_msg();
+#define xdr___db_re_pad_reply xdr___db_re_pad_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_re_pad_reply();
+#define xdr___db_remove_msg xdr___db_remove_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_remove_msg();
+#define xdr___db_remove_reply xdr___db_remove_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_remove_reply();
+#define xdr___db_rename_msg xdr___db_rename_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_rename_msg();
+#define xdr___db_rename_reply xdr___db_rename_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_rename_reply();
+#define xdr___db_stat_msg xdr___db_stat_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_stat_msg();
+#define xdr___db_stat_reply xdr___db_stat_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_stat_reply();
+#define xdr___db_sync_msg xdr___db_sync_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_sync_msg();
+#define xdr___db_sync_reply xdr___db_sync_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_sync_reply();
+#define xdr___db_truncate_msg xdr___db_truncate_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_truncate_msg();
+#define xdr___db_truncate_reply xdr___db_truncate_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_truncate_reply();
+#define xdr___db_cursor_msg xdr___db_cursor_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_cursor_msg();
+#define xdr___db_cursor_reply xdr___db_cursor_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_cursor_reply();
+#define xdr___db_join_msg xdr___db_join_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_join_msg();
+#define xdr___db_join_reply xdr___db_join_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___db_join_reply();
+#define xdr___dbc_close_msg xdr___dbc_close_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_close_msg();
+#define xdr___dbc_close_reply xdr___dbc_close_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_close_reply();
+#define xdr___dbc_count_msg xdr___dbc_count_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_count_msg();
+#define xdr___dbc_count_reply xdr___dbc_count_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_count_reply();
+#define xdr___dbc_del_msg xdr___dbc_del_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_del_msg();
+#define xdr___dbc_del_reply xdr___dbc_del_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_del_reply();
+#define xdr___dbc_dup_msg xdr___dbc_dup_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_dup_msg();
+#define xdr___dbc_dup_reply xdr___dbc_dup_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_dup_reply();
+#define xdr___dbc_get_msg xdr___dbc_get_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_get_msg();
+#define xdr___dbc_get_reply xdr___dbc_get_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_get_reply();
+#define xdr___dbc_pget_msg xdr___dbc_pget_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_pget_msg();
+#define xdr___dbc_pget_reply xdr___dbc_pget_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_pget_reply();
+#define xdr___dbc_put_msg xdr___dbc_put_msg@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_put_msg();
+#define xdr___dbc_put_reply xdr___dbc_put_reply@DB_VERSION_UNIQUE_NAME@
+extern bool_t xdr___dbc_put_reply();
+
+#endif /* !_DB_SERVER_H_RPCGEN */
diff --git a/db/include_auto/env_ext.h b/db/include_auto/env_ext.h
new file mode 100644
index 000000000..fd95c1504
--- /dev/null
+++ b/db/include_auto/env_ext.h
@@ -0,0 +1,34 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _env_ext_h_
+#define _env_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+void __db_shalloc_init __P((void *, size_t));
+int __db_shalloc_size __P((size_t, size_t));
+int __db_shalloc __P((void *, size_t, size_t, void *));
+void __db_shalloc_free __P((void *, void *));
+size_t __db_shsizeof __P((void *));
+void __db_shalloc_dump __P((void *, FILE *));
+int __db_tablesize __P((u_int32_t));
+void __db_hashinit __P((void *, u_int32_t));
+int __db_mi_env __P((DB_ENV *, const char *));
+int __db_mi_open __P((DB_ENV *, const char *, int));
+int __db_env_config __P((DB_ENV *, char *, u_int32_t));
+int __dbenv_open __P((DB_ENV *, const char *, u_int32_t, int));
+int __dbenv_remove __P((DB_ENV *, const char *, u_int32_t));
+int __dbenv_close __P((DB_ENV *, u_int32_t));
+int __db_appname __P((DB_ENV *, APPNAME, const char *, const char *, u_int32_t, DB_FH *, char **));
+int __db_home __P((DB_ENV *, const char *, u_int32_t));
+int __db_apprec __P((DB_ENV *, u_int32_t));
+int __env_openfiles __P((DB_ENV *, void *, DBT *, DB_LSN *, DB_LSN *, double, int));
+int __db_e_attach __P((DB_ENV *, u_int32_t *));
+int __db_e_detach __P((DB_ENV *, int));
+int __db_e_remove __P((DB_ENV *, int));
+int __db_e_stat __P((DB_ENV *, REGENV *, REGION *, int *));
+int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
+int __db_r_detach __P((DB_ENV *, REGINFO *, int));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _env_ext_h_ */
diff --git a/db/include_auto/env_ext.in b/db/include_auto/env_ext.in
new file mode 100644
index 000000000..8b7307827
--- /dev/null
+++ b/db/include_auto/env_ext.in
@@ -0,0 +1,58 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _env_ext_h_
+#define _env_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __db_shalloc_init __db_shalloc_init@DB_VERSION_UNIQUE_NAME@
+void __db_shalloc_init __P((void *, size_t));
+#define __db_shalloc_size __db_shalloc_size@DB_VERSION_UNIQUE_NAME@
+int __db_shalloc_size __P((size_t, size_t));
+#define __db_shalloc __db_shalloc@DB_VERSION_UNIQUE_NAME@
+int __db_shalloc __P((void *, size_t, size_t, void *));
+#define __db_shalloc_free __db_shalloc_free@DB_VERSION_UNIQUE_NAME@
+void __db_shalloc_free __P((void *, void *));
+#define __db_shsizeof __db_shsizeof@DB_VERSION_UNIQUE_NAME@
+size_t __db_shsizeof __P((void *));
+#define __db_shalloc_dump __db_shalloc_dump@DB_VERSION_UNIQUE_NAME@
+void __db_shalloc_dump __P((void *, FILE *));
+#define __db_tablesize __db_tablesize@DB_VERSION_UNIQUE_NAME@
+int __db_tablesize __P((u_int32_t));
+#define __db_hashinit __db_hashinit@DB_VERSION_UNIQUE_NAME@
+void __db_hashinit __P((void *, u_int32_t));
+#define __db_mi_env __db_mi_env@DB_VERSION_UNIQUE_NAME@
+int __db_mi_env __P((DB_ENV *, const char *));
+#define __db_mi_open __db_mi_open@DB_VERSION_UNIQUE_NAME@
+int __db_mi_open __P((DB_ENV *, const char *, int));
+#define __db_env_config __db_env_config@DB_VERSION_UNIQUE_NAME@
+int __db_env_config __P((DB_ENV *, char *, u_int32_t));
+#define __dbenv_open __dbenv_open@DB_VERSION_UNIQUE_NAME@
+int __dbenv_open __P((DB_ENV *, const char *, u_int32_t, int));
+#define __dbenv_remove __dbenv_remove@DB_VERSION_UNIQUE_NAME@
+int __dbenv_remove __P((DB_ENV *, const char *, u_int32_t));
+#define __dbenv_close __dbenv_close@DB_VERSION_UNIQUE_NAME@
+int __dbenv_close __P((DB_ENV *, u_int32_t));
+#define __db_appname __db_appname@DB_VERSION_UNIQUE_NAME@
+int __db_appname __P((DB_ENV *, APPNAME, const char *, const char *, u_int32_t, DB_FH *, char **));
+#define __db_home __db_home@DB_VERSION_UNIQUE_NAME@
+int __db_home __P((DB_ENV *, const char *, u_int32_t));
+#define __db_apprec __db_apprec@DB_VERSION_UNIQUE_NAME@
+int __db_apprec __P((DB_ENV *, u_int32_t));
+#define __env_openfiles __env_openfiles@DB_VERSION_UNIQUE_NAME@
+int __env_openfiles __P((DB_ENV *, void *, DBT *, DB_LSN *, DB_LSN *, double, int));
+#define __db_e_attach __db_e_attach@DB_VERSION_UNIQUE_NAME@
+int __db_e_attach __P((DB_ENV *, u_int32_t *));
+#define __db_e_detach __db_e_detach@DB_VERSION_UNIQUE_NAME@
+int __db_e_detach __P((DB_ENV *, int));
+#define __db_e_remove __db_e_remove@DB_VERSION_UNIQUE_NAME@
+int __db_e_remove __P((DB_ENV *, int));
+#define __db_e_stat __db_e_stat@DB_VERSION_UNIQUE_NAME@
+int __db_e_stat __P((DB_ENV *, REGENV *, REGION *, int *));
+#define __db_r_attach __db_r_attach@DB_VERSION_UNIQUE_NAME@
+int __db_r_attach __P((DB_ENV *, REGINFO *, size_t));
+#define __db_r_detach __db_r_detach@DB_VERSION_UNIQUE_NAME@
+int __db_r_detach __P((DB_ENV *, REGINFO *, int));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _env_ext_h_ */
diff --git a/db/include_auto/global_ext.in b/db/include_auto/global_ext.in
new file mode 100644
index 000000000..edb1029f5
--- /dev/null
+++ b/db/include_auto/global_ext.in
@@ -0,0 +1,124 @@
+
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int db_create __P((DB **, DB_ENV *, u_int32_t));
+char *db_strerror __P((int));
+int db_env_create __P((DB_ENV **, u_int32_t));
+char *db_version __P((int *, int *, int *));
+int lock_id __P((DB_ENV *, u_int32_t *));
+int lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+int lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+int lock_put __P((DB_ENV *, DB_LOCK *));
+int lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+int lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
+int log_stat __P((DB_ENV *, DB_LOG_STAT **));
+int log_archive __P((DB_ENV *, char **[], u_int32_t));
+int log_compare __P((const DB_LSN *, const DB_LSN *));
+int log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
+int log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+int log_flush __P((DB_ENV *, const DB_LSN *));
+int log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
+int log_register __P((DB_ENV *, DB *, const char *));
+int log_unregister __P((DB_ENV *, DB *));
+int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
+int memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
+int memp_fclose __P((DB_MPOOLFILE *));
+int memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
+int memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
+int memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
+int memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
+int memp_sync __P((DB_ENV *, DB_LSN *));
+int memp_fsync __P((DB_MPOOLFILE *));
+int memp_trickle __P((DB_ENV *, int, int *));
+int db_env_set_func_close __P((int (*)(int)));
+int db_env_set_func_dirfree __P((void (*)(char **, int)));
+int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
+int db_env_set_func_exists __P((int (*)(const char *, int *)));
+int db_env_set_func_free __P((void (*)(void *)));
+int db_env_set_func_fsync __P((int (*)(int)));
+int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
+int db_env_set_func_malloc __P((void *(*)(size_t)));
+int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
+int db_env_set_func_open __P((int (*)(const char *, int, ...)));
+int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
+int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
+int db_env_set_func_rename __P((int (*)(const char *, const char *)));
+int db_env_set_func_seek __P((int (*)(int, size_t, db_pgno_t, u_int32_t, int, int)));
+int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
+int db_env_set_func_unlink __P((int (*)(const char *)));
+int db_env_set_func_unmap __P((int (*)(void *, size_t)));
+int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
+int db_env_set_func_yield __P((int (*)(void)));
+int db_env_set_pageyield __P((int));
+int db_env_set_panicstate __P((int));
+int db_env_set_region_init __P((int));
+int db_env_set_tas_spins __P((u_int32_t));
+int txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+int txn_commit __P((DB_TXN *, u_int32_t));
+int txn_abort __P((DB_TXN *));
+int txn_discard __P((DB_TXN *, u_int32_t flags));
+int txn_prepare __P((DB_TXN *, u_int8_t *));
+u_int32_t txn_id __P((DB_TXN *));
+int txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
+int txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+int txn_stat __P((DB_ENV *, DB_TXN_STAT **));
+#if DB_DBM_HSEARCH != 0
+int __db_ndbm_clearerr __P((DBM *));
+void __db_ndbm_close __P((DBM *));
+int __db_ndbm_delete __P((DBM *, datum));
+int __db_ndbm_dirfno __P((DBM *));
+int __db_ndbm_error __P((DBM *));
+datum __db_ndbm_fetch __P((DBM *, datum));
+datum __db_ndbm_firstkey __P((DBM *));
+datum __db_ndbm_nextkey __P((DBM *));
+DBM *__db_ndbm_open __P((const char *, int, int));
+int __db_ndbm_pagfno __P((DBM *));
+int __db_ndbm_rdonly __P((DBM *));
+int __db_ndbm_store __P((DBM *, datum, datum, int));
+#define dbm_clearerr(a) __db_ndbm_clearerr(a)
+#define dbm_close(a) __db_ndbm_close(a)
+#define dbm_delete(a, b) __db_ndbm_delete(a, b)
+#define dbm_dirfno(a) __db_ndbm_dirfno(a)
+#define dbm_error(a) __db_ndbm_error(a)
+#define dbm_fetch(a, b) __db_ndbm_fetch(a, b)
+#define dbm_firstkey(a) __db_ndbm_firstkey(a)
+#define dbm_nextkey(a) __db_ndbm_nextkey(a)
+#define dbm_open(a, b, c) __db_ndbm_open(a, b, c)
+#define dbm_pagfno(a) __db_ndbm_pagfno(a)
+#define dbm_rdonly(a) __db_ndbm_rdonly(a)
+#define dbm_store(a, b, c, d) __db_ndbm_store(a, b, c, d)
+#define dbminit(a) __db_dbm_init(a)
+#define dbmclose __db_dbm_close
+#if !defined(__cplusplus)
+#define delete(a) __db_dbm_delete(a)
+#endif
+#define fetch(a) __db_dbm_fetch(a)
+#define firstkey __db_dbm_firstkey
+#define nextkey(a) __db_dbm_nextkey(a)
+#define store(a, b) __db_dbm_store(a, b)
+int __db_dbm_close __P((void));
+int __db_dbm_dbrdonly __P((void));
+int __db_dbm_delete __P((datum));
+int __db_dbm_dirf __P((void));
+datum __db_dbm_fetch __P((datum));
+datum __db_dbm_firstkey __P((void));
+int __db_dbm_init __P((char *));
+datum __db_dbm_nextkey __P((datum));
+int __db_dbm_pagf __P((void));
+int __db_dbm_store __P((datum, datum));
+#endif
+#if DB_DBM_HSEARCH != 0
+#define hcreate(a) __db_hcreate(a)
+#define hdestroy __db_hdestroy
+#define hsearch(a, b) __db_hsearch(a, b)
+int __db_hcreate __P((size_t));
+ENTRY *__db_hsearch __P((ENTRY, ACTION));
+void __db_hdestroy __P((void));
+#endif
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_DB_H_ */
diff --git a/db/include_auto/global_uext.in b/db/include_auto/global_uext.in
new file mode 100644
index 000000000..10b141a9b
--- /dev/null
+++ b/db/include_auto/global_uext.in
@@ -0,0 +1,213 @@
+
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define db_create db_create@DB_VERSION_UNIQUE_NAME@
+int db_create __P((DB **, DB_ENV *, u_int32_t));
+#define db_strerror db_strerror@DB_VERSION_UNIQUE_NAME@
+char *db_strerror __P((int));
+#define db_env_create db_env_create@DB_VERSION_UNIQUE_NAME@
+int db_env_create __P((DB_ENV **, u_int32_t));
+#define db_version db_version@DB_VERSION_UNIQUE_NAME@
+char *db_version __P((int *, int *, int *));
+#define lock_id lock_id@DB_VERSION_UNIQUE_NAME@
+int lock_id __P((DB_ENV *, u_int32_t *));
+#define lock_vec lock_vec@DB_VERSION_UNIQUE_NAME@
+int lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+#define lock_get lock_get@DB_VERSION_UNIQUE_NAME@
+int lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+#define lock_put lock_put@DB_VERSION_UNIQUE_NAME@
+int lock_put __P((DB_ENV *, DB_LOCK *));
+#define lock_detect lock_detect@DB_VERSION_UNIQUE_NAME@
+int lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+#define lock_stat lock_stat@DB_VERSION_UNIQUE_NAME@
+int lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
+#define log_stat log_stat@DB_VERSION_UNIQUE_NAME@
+int log_stat __P((DB_ENV *, DB_LOG_STAT **));
+#define log_archive log_archive@DB_VERSION_UNIQUE_NAME@
+int log_archive __P((DB_ENV *, char **[], u_int32_t));
+#define log_compare log_compare@DB_VERSION_UNIQUE_NAME@
+int log_compare __P((const DB_LSN *, const DB_LSN *));
+#define log_get log_get@DB_VERSION_UNIQUE_NAME@
+int log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
+#define log_put log_put@DB_VERSION_UNIQUE_NAME@
+int log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+#define log_flush log_flush@DB_VERSION_UNIQUE_NAME@
+int log_flush __P((DB_ENV *, const DB_LSN *));
+#define log_file log_file@DB_VERSION_UNIQUE_NAME@
+int log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
+#define log_register log_register@DB_VERSION_UNIQUE_NAME@
+int log_register __P((DB_ENV *, DB *, const char *));
+#define log_unregister log_unregister@DB_VERSION_UNIQUE_NAME@
+int log_unregister __P((DB_ENV *, DB *));
+#define memp_fget memp_fget@DB_VERSION_UNIQUE_NAME@
+int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *));
+#define memp_fopen memp_fopen@DB_VERSION_UNIQUE_NAME@
+int memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
+#define memp_fclose memp_fclose@DB_VERSION_UNIQUE_NAME@
+int memp_fclose __P((DB_MPOOLFILE *));
+#define memp_fput memp_fput@DB_VERSION_UNIQUE_NAME@
+int memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
+#define memp_fset memp_fset@DB_VERSION_UNIQUE_NAME@
+int memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
+#define memp_register memp_register@DB_VERSION_UNIQUE_NAME@
+int memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
+#define memp_stat memp_stat@DB_VERSION_UNIQUE_NAME@
+int memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
+#define memp_sync memp_sync@DB_VERSION_UNIQUE_NAME@
+int memp_sync __P((DB_ENV *, DB_LSN *));
+#define memp_fsync memp_fsync@DB_VERSION_UNIQUE_NAME@
+int memp_fsync __P((DB_MPOOLFILE *));
+#define memp_trickle memp_trickle@DB_VERSION_UNIQUE_NAME@
+int memp_trickle __P((DB_ENV *, int, int *));
+#define db_env_set_func_close db_env_set_func_close@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_close __P((int (*)(int)));
+#define db_env_set_func_dirfree db_env_set_func_dirfree@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_dirfree __P((void (*)(char **, int)));
+#define db_env_set_func_dirlist db_env_set_func_dirlist@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_dirlist __P((int (*)(const char *, char ***, int *)));
+#define db_env_set_func_exists db_env_set_func_exists@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_exists __P((int (*)(const char *, int *)));
+#define db_env_set_func_free db_env_set_func_free@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_free __P((void (*)(void *)));
+#define db_env_set_func_fsync db_env_set_func_fsync@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_fsync __P((int (*)(int)));
+#define db_env_set_func_ioinfo db_env_set_func_ioinfo@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_ioinfo __P((int (*)(const char *, int, u_int32_t *, u_int32_t *, u_int32_t *)));
+#define db_env_set_func_malloc db_env_set_func_malloc@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_malloc __P((void *(*)(size_t)));
+#define db_env_set_func_map db_env_set_func_map@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_map __P((int (*)(char *, size_t, int, int, void **)));
+#define db_env_set_func_open db_env_set_func_open@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_open __P((int (*)(const char *, int, ...)));
+#define db_env_set_func_read db_env_set_func_read@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_read __P((ssize_t (*)(int, void *, size_t)));
+#define db_env_set_func_realloc db_env_set_func_realloc@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_realloc __P((void *(*)(void *, size_t)));
+#define db_env_set_func_rename db_env_set_func_rename@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_rename __P((int (*)(const char *, const char *)));
+#define db_env_set_func_seek db_env_set_func_seek@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_seek __P((int (*)(int, size_t, db_pgno_t, u_int32_t, int, int)));
+#define db_env_set_func_sleep db_env_set_func_sleep@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_sleep __P((int (*)(u_long, u_long)));
+#define db_env_set_func_unlink db_env_set_func_unlink@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_unlink __P((int (*)(const char *)));
+#define db_env_set_func_unmap db_env_set_func_unmap@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_unmap __P((int (*)(void *, size_t)));
+#define db_env_set_func_write db_env_set_func_write@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_write __P((ssize_t (*)(int, const void *, size_t)));
+#define db_env_set_func_yield db_env_set_func_yield@DB_VERSION_UNIQUE_NAME@
+int db_env_set_func_yield __P((int (*)(void)));
+#define db_env_set_pageyield db_env_set_pageyield@DB_VERSION_UNIQUE_NAME@
+int db_env_set_pageyield __P((int));
+#define db_env_set_panicstate db_env_set_panicstate@DB_VERSION_UNIQUE_NAME@
+int db_env_set_panicstate __P((int));
+#define db_env_set_region_init db_env_set_region_init@DB_VERSION_UNIQUE_NAME@
+int db_env_set_region_init __P((int));
+#define db_env_set_tas_spins db_env_set_tas_spins@DB_VERSION_UNIQUE_NAME@
+int db_env_set_tas_spins __P((u_int32_t));
+#define txn_begin txn_begin@DB_VERSION_UNIQUE_NAME@
+int txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+#define txn_commit txn_commit@DB_VERSION_UNIQUE_NAME@
+int txn_commit __P((DB_TXN *, u_int32_t));
+#define txn_abort txn_abort@DB_VERSION_UNIQUE_NAME@
+int txn_abort __P((DB_TXN *));
+#define txn_discard txn_discard@DB_VERSION_UNIQUE_NAME@
+int txn_discard __P((DB_TXN *, u_int32_t flags));
+#define txn_prepare txn_prepare@DB_VERSION_UNIQUE_NAME@
+int txn_prepare __P((DB_TXN *, u_int8_t *));
+#define txn_id txn_id@DB_VERSION_UNIQUE_NAME@
+u_int32_t txn_id __P((DB_TXN *));
+#define txn_checkpoint txn_checkpoint@DB_VERSION_UNIQUE_NAME@
+int txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t, u_int32_t));
+#define txn_recover txn_recover@DB_VERSION_UNIQUE_NAME@
+int txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+#define txn_stat txn_stat@DB_VERSION_UNIQUE_NAME@
+int txn_stat __P((DB_ENV *, DB_TXN_STAT **));
+#if DB_DBM_HSEARCH != 0
+#define __db_ndbm_clearerr __db_ndbm_clearerr@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_clearerr __P((DBM *));
+#define __db_ndbm_close __db_ndbm_close@DB_VERSION_UNIQUE_NAME@
+void __db_ndbm_close __P((DBM *));
+#define __db_ndbm_delete __db_ndbm_delete@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_delete __P((DBM *, datum));
+#define __db_ndbm_dirfno __db_ndbm_dirfno@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_dirfno __P((DBM *));
+#define __db_ndbm_error __db_ndbm_error@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_error __P((DBM *));
+#define __db_ndbm_fetch __db_ndbm_fetch@DB_VERSION_UNIQUE_NAME@
+datum __db_ndbm_fetch __P((DBM *, datum));
+#define __db_ndbm_firstkey __db_ndbm_firstkey@DB_VERSION_UNIQUE_NAME@
+datum __db_ndbm_firstkey __P((DBM *));
+#define __db_ndbm_nextkey __db_ndbm_nextkey@DB_VERSION_UNIQUE_NAME@
+datum __db_ndbm_nextkey __P((DBM *));
+#define __db_ndbm_open __db_ndbm_open@DB_VERSION_UNIQUE_NAME@
+DBM *__db_ndbm_open __P((const char *, int, int));
+#define __db_ndbm_pagfno __db_ndbm_pagfno@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_pagfno __P((DBM *));
+#define __db_ndbm_rdonly __db_ndbm_rdonly@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_rdonly __P((DBM *));
+#define __db_ndbm_store __db_ndbm_store@DB_VERSION_UNIQUE_NAME@
+int __db_ndbm_store __P((DBM *, datum, datum, int));
+#define dbm_clearerr(a) __db_ndbm_clearerr@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_close(a) __db_ndbm_close@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_delete(a, b) __db_ndbm_delete@DB_VERSION_UNIQUE_NAME@(a, b)
+#define dbm_dirfno(a) __db_ndbm_dirfno@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_error(a) __db_ndbm_error@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_fetch(a, b) __db_ndbm_fetch@DB_VERSION_UNIQUE_NAME@(a, b)
+#define dbm_firstkey(a) __db_ndbm_firstkey@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_nextkey(a) __db_ndbm_nextkey@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_open(a, b, c) __db_ndbm_open@DB_VERSION_UNIQUE_NAME@(a, b, c)
+#define dbm_pagfno(a) __db_ndbm_pagfno@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_rdonly(a) __db_ndbm_rdonly@DB_VERSION_UNIQUE_NAME@(a)
+#define dbm_store(a, b, c, d) __db_ndbm_store@DB_VERSION_UNIQUE_NAME@(a, b, c, d)
+#define dbminit(a) __db_dbm_init@DB_VERSION_UNIQUE_NAME@(a)
+#define dbmclose __db_dbm_close@DB_VERSION_UNIQUE_NAME@
+#if !defined(__cplusplus)
+#define delete(a) __db_dbm_delete@DB_VERSION_UNIQUE_NAME@(a)
+#endif
+#define fetch(a) __db_dbm_fetch@DB_VERSION_UNIQUE_NAME@(a)
+#define firstkey __db_dbm_firstkey@DB_VERSION_UNIQUE_NAME@
+#define nextkey(a) __db_dbm_nextkey@DB_VERSION_UNIQUE_NAME@(a)
+#define store(a, b) __db_dbm_store@DB_VERSION_UNIQUE_NAME@(a, b)
+#define __db_dbm_close __db_dbm_close@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_close __P((void));
+#define __db_dbm_dbrdonly __db_dbm_dbrdonly@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_dbrdonly __P((void));
+#define __db_dbm_delete __db_dbm_delete@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_delete __P((datum));
+#define __db_dbm_dirf __db_dbm_dirf@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_dirf __P((void));
+#define __db_dbm_fetch __db_dbm_fetch@DB_VERSION_UNIQUE_NAME@
+datum __db_dbm_fetch __P((datum));
+#define __db_dbm_firstkey __db_dbm_firstkey@DB_VERSION_UNIQUE_NAME@
+datum __db_dbm_firstkey __P((void));
+#define __db_dbm_init __db_dbm_init@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_init __P((char *));
+#define __db_dbm_nextkey __db_dbm_nextkey@DB_VERSION_UNIQUE_NAME@
+datum __db_dbm_nextkey __P((datum));
+#define __db_dbm_pagf __db_dbm_pagf@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_pagf __P((void));
+#define __db_dbm_store __db_dbm_store@DB_VERSION_UNIQUE_NAME@
+int __db_dbm_store __P((datum, datum));
+#endif
+#if DB_DBM_HSEARCH != 0
+#define hcreate(a) __db_hcreate@DB_VERSION_UNIQUE_NAME@(a)
+#define hdestroy __db_hdestroy@DB_VERSION_UNIQUE_NAME@
+#define hsearch(a, b) __db_hsearch@DB_VERSION_UNIQUE_NAME@(a, b)
+#define __db_hcreate __db_hcreate@DB_VERSION_UNIQUE_NAME@
+int __db_hcreate __P((size_t));
+#define __db_hsearch __db_hsearch@DB_VERSION_UNIQUE_NAME@
+ENTRY *__db_hsearch __P((ENTRY, ACTION));
+#define __db_hdestroy __db_hdestroy@DB_VERSION_UNIQUE_NAME@
+void __db_hdestroy __P((void));
+#endif
+#define __db_global_values __db_global_values@DB_VERSION_UNIQUE_NAME@
+#define __db_jump __db_jump@DB_VERSION_UNIQUE_NAME@
+#define db_xa_switch db_xa_switch@DB_VERSION_UNIQUE_NAME@
+#if defined(__cplusplus)
+}
+#endif
+
+#endif /* !_DB_H_ */
diff --git a/db/include_auto/hash_auto.h b/db/include_auto/hash_auto.h
new file mode 100644
index 000000000..ba1f83d1b
--- /dev/null
+++ b/db/include_auto/hash_auto.h
@@ -0,0 +1,195 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef ham_AUTO_H
+#define ham_AUTO_H
+#define DB_ham_insdel 21
+typedef struct _ham_insdel_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t pgno;
+ u_int32_t ndx;
+ DB_LSN pagelsn;
+ DBT key;
+ DBT data;
+} __ham_insdel_args;
+
+#define DB_ham_newpage 22
+typedef struct _ham_newpage_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t prev_pgno;
+ DB_LSN prevlsn;
+ db_pgno_t new_pgno;
+ DB_LSN pagelsn;
+ db_pgno_t next_pgno;
+ DB_LSN nextlsn;
+} __ham_newpage_args;
+
+#define DB_ham_splitmeta 23
+typedef struct _ham_splitmeta_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ u_int32_t bucket;
+ u_int32_t ovflpoint;
+ u_int32_t spares;
+ DB_LSN metalsn;
+} __ham_splitmeta_args;
+
+#define DB_ham_splitdata 24
+typedef struct _ham_splitdata_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ u_int32_t opcode;
+ db_pgno_t pgno;
+ DBT pageimage;
+ DB_LSN pagelsn;
+} __ham_splitdata_args;
+
+#define DB_ham_replace 25
+typedef struct _ham_replace_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ u_int32_t ndx;
+ DB_LSN pagelsn;
+ int32_t off;
+ DBT olditem;
+ DBT newitem;
+ u_int32_t makedup;
+} __ham_replace_args;
+
+#define DB_ham_newpgno 26
+typedef struct _ham_newpgno_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_pgno_t pgno;
+ db_pgno_t free_pgno;
+ u_int32_t old_type;
+ db_pgno_t old_pgno;
+ u_int32_t new_type;
+ DB_LSN pagelsn;
+ DB_LSN metalsn;
+} __ham_newpgno_args;
+
+#define DB_ham_ovfl 27
+typedef struct _ham_ovfl_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t start_pgno;
+ u_int32_t npages;
+ db_pgno_t free_pgno;
+ u_int32_t ovflpoint;
+ DB_LSN metalsn;
+} __ham_ovfl_args;
+
+#define DB_ham_copypage 28
+typedef struct _ham_copypage_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN pagelsn;
+ db_pgno_t next_pgno;
+ DB_LSN nextlsn;
+ db_pgno_t nnext_pgno;
+ DB_LSN nnextlsn;
+ DBT page;
+} __ham_copypage_args;
+
+#define DB_ham_metagroup 29
+typedef struct _ham_metagroup_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ u_int32_t bucket;
+ db_pgno_t pgno;
+ DB_LSN metalsn;
+ DB_LSN pagelsn;
+} __ham_metagroup_args;
+
+#define DB_ham_groupalloc1 30
+typedef struct _ham_groupalloc1_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ DB_LSN metalsn;
+ DB_LSN mmetalsn;
+ db_pgno_t start_pgno;
+ u_int32_t num;
+} __ham_groupalloc1_args;
+
+#define DB_ham_groupalloc2 31
+typedef struct _ham_groupalloc2_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN meta_lsn;
+ DB_LSN alloc_lsn;
+ db_pgno_t start_pgno;
+ u_int32_t num;
+ db_pgno_t free;
+} __ham_groupalloc2_args;
+
+#define DB_ham_groupalloc 32
+typedef struct _ham_groupalloc_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN meta_lsn;
+ db_pgno_t start_pgno;
+ u_int32_t num;
+ db_pgno_t free;
+} __ham_groupalloc_args;
+
+#define DB_ham_curadj 33
+typedef struct _ham_curadj_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_pgno_t pgno;
+ u_int32_t indx;
+ u_int32_t len;
+ u_int32_t dup_off;
+ int add;
+ int is_dup;
+ u_int32_t order;
+} __ham_curadj_args;
+
+#define DB_ham_chgpg 34
+typedef struct _ham_chgpg_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_ham_mode mode;
+ db_pgno_t old_pgno;
+ db_pgno_t new_pgno;
+ u_int32_t old_indx;
+ u_int32_t new_indx;
+} __ham_chgpg_args;
+
+#endif
diff --git a/db/include_auto/hash_ext.h b/db/include_auto/hash_ext.h
new file mode 100644
index 000000000..7776d916e
--- /dev/null
+++ b/db/include_auto/hash_ext.h
@@ -0,0 +1,121 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _hash_ext_h_
+#define _hash_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __ham_metachk __P((DB *, const char *, HMETA *));
+int __ham_open __P((DB *, const char *, db_pgno_t, u_int32_t));
+int __ham_quick_delete __P((DBC *));
+int __ham_c_init __P((DBC *));
+int __ham_c_count __P((DBC *, db_recno_t *));
+int __ham_c_dup __P((DBC *, DBC *));
+u_int32_t __ham_call_hash __P((DBC *, u_int8_t *, int32_t));
+int __ham_init_dbt __P((DB_ENV *, DBT *, u_int32_t, void **, u_int32_t *));
+int __ham_c_update __P((DBC *, u_int32_t, int, int));
+int __ham_get_clist __P((DB *, db_pgno_t, u_int32_t, DBC ***));
+int __ham_c_chgpg __P((DBC *, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
+int __ham_insdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, const DBT *, const DBT *));
+int __ham_insdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_insdel_read __P((DB_ENV *, void *, __ham_insdel_args **));
+int __ham_newpage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
+int __ham_newpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_newpage_read __P((DB_ENV *, void *, __ham_newpage_args **));
+int __ham_splitmeta_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_splitmeta_read __P((DB_ENV *, void *, __ham_splitmeta_args **));
+int __ham_splitdata_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, const DBT *, DB_LSN *));
+int __ham_splitdata_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_splitdata_read __P((DB_ENV *, void *, __ham_splitdata_args **));
+int __ham_replace_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, int32_t, const DBT *, const DBT *, u_int32_t));
+int __ham_replace_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_replace_read __P((DB_ENV *, void *, __ham_replace_args **));
+int __ham_newpgno_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_newpgno_read __P((DB_ENV *, void *, __ham_newpgno_args **));
+int __ham_ovfl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_ovfl_read __P((DB_ENV *, void *, __ham_ovfl_args **));
+int __ham_copypage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, const DBT *));
+int __ham_copypage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_copypage_read __P((DB_ENV *, void *, __ham_copypage_args **));
+int __ham_metagroup_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, DB_LSN *, DB_LSN *));
+int __ham_metagroup_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_metagroup_read __P((DB_ENV *, void *, __ham_metagroup_args **));
+int __ham_groupalloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_groupalloc1_read __P((DB_ENV *, void *, __ham_groupalloc1_args **));
+int __ham_groupalloc2_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_groupalloc2_read __P((DB_ENV *, void *, __ham_groupalloc2_args **));
+int __ham_groupalloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
+int __ham_groupalloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_groupalloc_read __P((DB_ENV *, void *, __ham_groupalloc_args **));
+int __ham_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t, int, int, u_int32_t));
+int __ham_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_curadj_read __P((DB_ENV *, void *, __ham_curadj_args **));
+int __ham_chgpg_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ham_mode, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t));
+int __ham_chgpg_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_chgpg_read __P((DB_ENV *, void *, __ham_chgpg_args **));
+int __ham_init_print __P((DB_ENV *));
+int __ham_init_recover __P((DB_ENV *));
+int __ham_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __ham_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __ham_mswap __P((void *));
+int __ham_add_dup __P((DBC *, DBT *, u_int32_t, db_pgno_t *));
+int __ham_dup_convert __P((DBC *));
+int __ham_make_dup __P((DB_ENV *, const DBT *, DBT *d, void **, u_int32_t *));
+void __ham_dsearch __P((DBC *, DBT *, u_int32_t *, int *));
+void __ham_cprint __P((DBC *));
+u_int32_t __ham_func2 __P((DB *, const void *, u_int32_t));
+u_int32_t __ham_func3 __P((DB *, const void *, u_int32_t));
+u_int32_t __ham_func4 __P((DB *, const void *, u_int32_t));
+u_int32_t __ham_func5 __P((DB *, const void *, u_int32_t));
+u_int32_t __ham_test __P((DB *, const void *, u_int32_t));
+int __ham_get_meta __P((DBC *));
+int __ham_release_meta __P((DBC *));
+int __ham_dirty_meta __P((DBC *));
+int __ham_db_create __P((DB *));
+int __ham_db_close __P((DB *));
+int __ham_item __P((DBC *, db_lockmode_t, db_pgno_t *));
+int __ham_item_reset __P((DBC *));
+void __ham_item_init __P((DBC *));
+int __ham_item_last __P((DBC *, db_lockmode_t, db_pgno_t *));
+int __ham_item_first __P((DBC *, db_lockmode_t, db_pgno_t *));
+int __ham_item_prev __P((DBC *, db_lockmode_t, db_pgno_t *));
+int __ham_item_next __P((DBC *, db_lockmode_t, db_pgno_t *));
+void __ham_putitem __P((PAGE *p, const DBT *, int));
+void __ham_reputpair __P((PAGE *p, u_int32_t, u_int32_t, const DBT *, const DBT *));
+int __ham_del_pair __P((DBC *, int));
+int __ham_replpair __P((DBC *, DBT *, u_int32_t));
+void __ham_onpage_replace __P((PAGE *, size_t, u_int32_t, int32_t, int32_t, DBT *));
+int __ham_split_page __P((DBC *, u_int32_t, u_int32_t));
+int __ham_add_el __P((DBC *, const DBT *, const DBT *, int));
+void __ham_copy_item __P((size_t, PAGE *, u_int32_t, PAGE *));
+int __ham_add_ovflpage __P((DBC *, PAGE *, int, PAGE **));
+int __ham_get_cpage __P((DBC *, db_lockmode_t));
+int __ham_next_cpage __P((DBC *, db_pgno_t, int));
+int __ham_lock_bucket __P((DBC *, db_lockmode_t));
+void __ham_dpair __P((DB *, PAGE *, u_int32_t));
+int __ham_insdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_newpage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_replace_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_splitdata_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_copypage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_metagroup_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_groupalloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_chgpg_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __ham_reclaim __P((DB *, DB_TXN *txn));
+int __ham_truncate __P((DB *, DB_TXN *txn, u_int32_t *));
+int __ham_stat __P((DB *, void *, u_int32_t));
+int __ham_traverse __P((DBC *, db_lockmode_t, int (*)(DB *, PAGE *, void *, int *), void *, int));
+int __ham_30_hashmeta __P((DB *, char *, u_int8_t *));
+int __ham_30_sizefix __P((DB *, DB_FH *, char *, u_int8_t *));
+int __ham_31_hashmeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+int __ham_31_hash __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+int __ham_vrfy_meta __P((DB *, VRFY_DBINFO *, HMETA *, db_pgno_t, u_int32_t));
+int __ham_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+int __ham_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
+int __ham_vrfy_hashing __P((DB *, u_int32_t, HMETA *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t (*) __P((DB *, const void *, u_int32_t))));
+int __ham_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
+int __ham_meta2pgset __P((DB *, VRFY_DBINFO *, HMETA *, u_int32_t, DB *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _hash_ext_h_ */
diff --git a/db/include_auto/hash_ext.in b/db/include_auto/hash_ext.in
new file mode 100644
index 000000000..fed1a8089
--- /dev/null
+++ b/db/include_auto/hash_ext.in
@@ -0,0 +1,232 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _hash_ext_h_
+#define _hash_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __ham_metachk __ham_metachk@DB_VERSION_UNIQUE_NAME@
+int __ham_metachk __P((DB *, const char *, HMETA *));
+#define __ham_open __ham_open@DB_VERSION_UNIQUE_NAME@
+int __ham_open __P((DB *, const char *, db_pgno_t, u_int32_t));
+#define __ham_quick_delete __ham_quick_delete@DB_VERSION_UNIQUE_NAME@
+int __ham_quick_delete __P((DBC *));
+#define __ham_c_init __ham_c_init@DB_VERSION_UNIQUE_NAME@
+int __ham_c_init __P((DBC *));
+#define __ham_c_count __ham_c_count@DB_VERSION_UNIQUE_NAME@
+int __ham_c_count __P((DBC *, db_recno_t *));
+#define __ham_c_dup __ham_c_dup@DB_VERSION_UNIQUE_NAME@
+int __ham_c_dup __P((DBC *, DBC *));
+#define __ham_call_hash __ham_call_hash@DB_VERSION_UNIQUE_NAME@
+u_int32_t __ham_call_hash __P((DBC *, u_int8_t *, int32_t));
+#define __ham_init_dbt __ham_init_dbt@DB_VERSION_UNIQUE_NAME@
+int __ham_init_dbt __P((DB_ENV *, DBT *, u_int32_t, void **, u_int32_t *));
+#define __ham_c_update __ham_c_update@DB_VERSION_UNIQUE_NAME@
+int __ham_c_update __P((DBC *, u_int32_t, int, int));
+#define __ham_get_clist __ham_get_clist@DB_VERSION_UNIQUE_NAME@
+int __ham_get_clist __P((DB *, db_pgno_t, u_int32_t, DBC ***));
+#define __ham_c_chgpg __ham_c_chgpg@DB_VERSION_UNIQUE_NAME@
+int __ham_c_chgpg __P((DBC *, db_pgno_t, u_int32_t, db_pgno_t, u_int32_t));
+#define __ham_insdel_log __ham_insdel_log@DB_VERSION_UNIQUE_NAME@
+int __ham_insdel_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, const DBT *, const DBT *));
+#define __ham_insdel_print __ham_insdel_print@DB_VERSION_UNIQUE_NAME@
+int __ham_insdel_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_insdel_read __ham_insdel_read@DB_VERSION_UNIQUE_NAME@
+int __ham_insdel_read __P((DB_ENV *, void *, __ham_insdel_args **));
+#define __ham_newpage_log __ham_newpage_log@DB_VERSION_UNIQUE_NAME@
+int __ham_newpage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *));
+#define __ham_newpage_print __ham_newpage_print@DB_VERSION_UNIQUE_NAME@
+int __ham_newpage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_newpage_read __ham_newpage_read@DB_VERSION_UNIQUE_NAME@
+int __ham_newpage_read __P((DB_ENV *, void *, __ham_newpage_args **));
+#define __ham_splitmeta_print __ham_splitmeta_print@DB_VERSION_UNIQUE_NAME@
+int __ham_splitmeta_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_splitmeta_read __ham_splitmeta_read@DB_VERSION_UNIQUE_NAME@
+int __ham_splitmeta_read __P((DB_ENV *, void *, __ham_splitmeta_args **));
+#define __ham_splitdata_log __ham_splitdata_log@DB_VERSION_UNIQUE_NAME@
+int __ham_splitdata_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, const DBT *, DB_LSN *));
+#define __ham_splitdata_print __ham_splitdata_print@DB_VERSION_UNIQUE_NAME@
+int __ham_splitdata_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_splitdata_read __ham_splitdata_read@DB_VERSION_UNIQUE_NAME@
+int __ham_splitdata_read __P((DB_ENV *, void *, __ham_splitdata_args **));
+#define __ham_replace_log __ham_replace_log@DB_VERSION_UNIQUE_NAME@
+int __ham_replace_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, DB_LSN *, int32_t, const DBT *, const DBT *, u_int32_t));
+#define __ham_replace_print __ham_replace_print@DB_VERSION_UNIQUE_NAME@
+int __ham_replace_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_replace_read __ham_replace_read@DB_VERSION_UNIQUE_NAME@
+int __ham_replace_read __P((DB_ENV *, void *, __ham_replace_args **));
+#define __ham_newpgno_print __ham_newpgno_print@DB_VERSION_UNIQUE_NAME@
+int __ham_newpgno_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_newpgno_read __ham_newpgno_read@DB_VERSION_UNIQUE_NAME@
+int __ham_newpgno_read __P((DB_ENV *, void *, __ham_newpgno_args **));
+#define __ham_ovfl_print __ham_ovfl_print@DB_VERSION_UNIQUE_NAME@
+int __ham_ovfl_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_ovfl_read __ham_ovfl_read@DB_VERSION_UNIQUE_NAME@
+int __ham_ovfl_read __P((DB_ENV *, void *, __ham_ovfl_args **));
+#define __ham_copypage_log __ham_copypage_log@DB_VERSION_UNIQUE_NAME@
+int __ham_copypage_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, db_pgno_t, DB_LSN *, const DBT *));
+#define __ham_copypage_print __ham_copypage_print@DB_VERSION_UNIQUE_NAME@
+int __ham_copypage_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_copypage_read __ham_copypage_read@DB_VERSION_UNIQUE_NAME@
+int __ham_copypage_read __P((DB_ENV *, void *, __ham_copypage_args **));
+#define __ham_metagroup_log __ham_metagroup_log@DB_VERSION_UNIQUE_NAME@
+int __ham_metagroup_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, u_int32_t, db_pgno_t, DB_LSN *, DB_LSN *));
+#define __ham_metagroup_print __ham_metagroup_print@DB_VERSION_UNIQUE_NAME@
+int __ham_metagroup_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_metagroup_read __ham_metagroup_read@DB_VERSION_UNIQUE_NAME@
+int __ham_metagroup_read __P((DB_ENV *, void *, __ham_metagroup_args **));
+#define __ham_groupalloc1_print __ham_groupalloc1_print@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_groupalloc1_read __ham_groupalloc1_read@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc1_read __P((DB_ENV *, void *, __ham_groupalloc1_args **));
+#define __ham_groupalloc2_print __ham_groupalloc2_print@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc2_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_groupalloc2_read __ham_groupalloc2_read@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc2_read __P((DB_ENV *, void *, __ham_groupalloc2_args **));
+#define __ham_groupalloc_log __ham_groupalloc_log@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_pgno_t));
+#define __ham_groupalloc_print __ham_groupalloc_print@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_groupalloc_read __ham_groupalloc_read@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc_read __P((DB_ENV *, void *, __ham_groupalloc_args **));
+#define __ham_curadj_log __ham_curadj_log@DB_VERSION_UNIQUE_NAME@
+int __ham_curadj_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_pgno_t, u_int32_t, u_int32_t, u_int32_t, int, int, u_int32_t));
+#define __ham_curadj_print __ham_curadj_print@DB_VERSION_UNIQUE_NAME@
+int __ham_curadj_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_curadj_read __ham_curadj_read@DB_VERSION_UNIQUE_NAME@
+int __ham_curadj_read __P((DB_ENV *, void *, __ham_curadj_args **));
+#define __ham_chgpg_log __ham_chgpg_log@DB_VERSION_UNIQUE_NAME@
+int __ham_chgpg_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_ham_mode, db_pgno_t, db_pgno_t, u_int32_t, u_int32_t));
+#define __ham_chgpg_print __ham_chgpg_print@DB_VERSION_UNIQUE_NAME@
+int __ham_chgpg_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_chgpg_read __ham_chgpg_read@DB_VERSION_UNIQUE_NAME@
+int __ham_chgpg_read __P((DB_ENV *, void *, __ham_chgpg_args **));
+#define __ham_init_print __ham_init_print@DB_VERSION_UNIQUE_NAME@
+int __ham_init_print __P((DB_ENV *));
+#define __ham_init_recover __ham_init_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_init_recover __P((DB_ENV *));
+#define __ham_pgin __ham_pgin@DB_VERSION_UNIQUE_NAME@
+int __ham_pgin __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __ham_pgout __ham_pgout@DB_VERSION_UNIQUE_NAME@
+int __ham_pgout __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __ham_mswap __ham_mswap@DB_VERSION_UNIQUE_NAME@
+int __ham_mswap __P((void *));
+#define __ham_add_dup __ham_add_dup@DB_VERSION_UNIQUE_NAME@
+int __ham_add_dup __P((DBC *, DBT *, u_int32_t, db_pgno_t *));
+#define __ham_dup_convert __ham_dup_convert@DB_VERSION_UNIQUE_NAME@
+int __ham_dup_convert __P((DBC *));
+#define __ham_make_dup __ham_make_dup@DB_VERSION_UNIQUE_NAME@
+int __ham_make_dup __P((DB_ENV *, const DBT *, DBT *d, void **, u_int32_t *));
+#define __ham_dsearch __ham_dsearch@DB_VERSION_UNIQUE_NAME@
+void __ham_dsearch __P((DBC *, DBT *, u_int32_t *, int *));
+#define __ham_cprint __ham_cprint@DB_VERSION_UNIQUE_NAME@
+void __ham_cprint __P((DBC *));
+#define __ham_func2 __ham_func2@DB_VERSION_UNIQUE_NAME@
+u_int32_t __ham_func2 __P((DB *, const void *, u_int32_t));
+#define __ham_func3 __ham_func3@DB_VERSION_UNIQUE_NAME@
+u_int32_t __ham_func3 __P((DB *, const void *, u_int32_t));
+#define __ham_func4 __ham_func4@DB_VERSION_UNIQUE_NAME@
+u_int32_t __ham_func4 __P((DB *, const void *, u_int32_t));
+#define __ham_func5 __ham_func5@DB_VERSION_UNIQUE_NAME@
+u_int32_t __ham_func5 __P((DB *, const void *, u_int32_t));
+#define __ham_test __ham_test@DB_VERSION_UNIQUE_NAME@
+u_int32_t __ham_test __P((DB *, const void *, u_int32_t));
+#define __ham_get_meta __ham_get_meta@DB_VERSION_UNIQUE_NAME@
+int __ham_get_meta __P((DBC *));
+#define __ham_release_meta __ham_release_meta@DB_VERSION_UNIQUE_NAME@
+int __ham_release_meta __P((DBC *));
+#define __ham_dirty_meta __ham_dirty_meta@DB_VERSION_UNIQUE_NAME@
+int __ham_dirty_meta __P((DBC *));
+#define __ham_db_create __ham_db_create@DB_VERSION_UNIQUE_NAME@
+int __ham_db_create __P((DB *));
+#define __ham_db_close __ham_db_close@DB_VERSION_UNIQUE_NAME@
+int __ham_db_close __P((DB *));
+#define __ham_item __ham_item@DB_VERSION_UNIQUE_NAME@
+int __ham_item __P((DBC *, db_lockmode_t, db_pgno_t *));
+#define __ham_item_reset __ham_item_reset@DB_VERSION_UNIQUE_NAME@
+int __ham_item_reset __P((DBC *));
+#define __ham_item_init __ham_item_init@DB_VERSION_UNIQUE_NAME@
+void __ham_item_init __P((DBC *));
+#define __ham_item_last __ham_item_last@DB_VERSION_UNIQUE_NAME@
+int __ham_item_last __P((DBC *, db_lockmode_t, db_pgno_t *));
+#define __ham_item_first __ham_item_first@DB_VERSION_UNIQUE_NAME@
+int __ham_item_first __P((DBC *, db_lockmode_t, db_pgno_t *));
+#define __ham_item_prev __ham_item_prev@DB_VERSION_UNIQUE_NAME@
+int __ham_item_prev __P((DBC *, db_lockmode_t, db_pgno_t *));
+#define __ham_item_next __ham_item_next@DB_VERSION_UNIQUE_NAME@
+int __ham_item_next __P((DBC *, db_lockmode_t, db_pgno_t *));
+#define __ham_putitem __ham_putitem@DB_VERSION_UNIQUE_NAME@
+void __ham_putitem __P((PAGE *p, const DBT *, int));
+#define __ham_reputpair __ham_reputpair@DB_VERSION_UNIQUE_NAME@
+void __ham_reputpair __P((PAGE *p, u_int32_t, u_int32_t, const DBT *, const DBT *));
+#define __ham_del_pair __ham_del_pair@DB_VERSION_UNIQUE_NAME@
+int __ham_del_pair __P((DBC *, int));
+#define __ham_replpair __ham_replpair@DB_VERSION_UNIQUE_NAME@
+int __ham_replpair __P((DBC *, DBT *, u_int32_t));
+#define __ham_onpage_replace __ham_onpage_replace@DB_VERSION_UNIQUE_NAME@
+void __ham_onpage_replace __P((PAGE *, size_t, u_int32_t, int32_t, int32_t, DBT *));
+#define __ham_split_page __ham_split_page@DB_VERSION_UNIQUE_NAME@
+int __ham_split_page __P((DBC *, u_int32_t, u_int32_t));
+#define __ham_add_el __ham_add_el@DB_VERSION_UNIQUE_NAME@
+int __ham_add_el __P((DBC *, const DBT *, const DBT *, int));
+#define __ham_copy_item __ham_copy_item@DB_VERSION_UNIQUE_NAME@
+void __ham_copy_item __P((size_t, PAGE *, u_int32_t, PAGE *));
+#define __ham_add_ovflpage __ham_add_ovflpage@DB_VERSION_UNIQUE_NAME@
+int __ham_add_ovflpage __P((DBC *, PAGE *, int, PAGE **));
+#define __ham_get_cpage __ham_get_cpage@DB_VERSION_UNIQUE_NAME@
+int __ham_get_cpage __P((DBC *, db_lockmode_t));
+#define __ham_next_cpage __ham_next_cpage@DB_VERSION_UNIQUE_NAME@
+int __ham_next_cpage __P((DBC *, db_pgno_t, int));
+#define __ham_lock_bucket __ham_lock_bucket@DB_VERSION_UNIQUE_NAME@
+int __ham_lock_bucket __P((DBC *, db_lockmode_t));
+#define __ham_dpair __ham_dpair@DB_VERSION_UNIQUE_NAME@
+void __ham_dpair __P((DB *, PAGE *, u_int32_t));
+#define __ham_insdel_recover __ham_insdel_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_insdel_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_newpage_recover __ham_newpage_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_newpage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_replace_recover __ham_replace_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_replace_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_splitdata_recover __ham_splitdata_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_splitdata_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_copypage_recover __ham_copypage_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_copypage_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_metagroup_recover __ham_metagroup_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_metagroup_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_groupalloc_recover __ham_groupalloc_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_groupalloc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_curadj_recover __ham_curadj_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_curadj_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_chgpg_recover __ham_chgpg_recover@DB_VERSION_UNIQUE_NAME@
+int __ham_chgpg_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __ham_reclaim __ham_reclaim@DB_VERSION_UNIQUE_NAME@
+int __ham_reclaim __P((DB *, DB_TXN *txn));
+#define __ham_truncate __ham_truncate@DB_VERSION_UNIQUE_NAME@
+int __ham_truncate __P((DB *, DB_TXN *txn, u_int32_t *));
+#define __ham_stat __ham_stat@DB_VERSION_UNIQUE_NAME@
+int __ham_stat __P((DB *, void *, u_int32_t));
+#define __ham_traverse __ham_traverse@DB_VERSION_UNIQUE_NAME@
+int __ham_traverse __P((DBC *, db_lockmode_t, int (*)(DB *, PAGE *, void *, int *), void *, int));
+#define __ham_30_hashmeta __ham_30_hashmeta@DB_VERSION_UNIQUE_NAME@
+int __ham_30_hashmeta __P((DB *, char *, u_int8_t *));
+#define __ham_30_sizefix __ham_30_sizefix@DB_VERSION_UNIQUE_NAME@
+int __ham_30_sizefix __P((DB *, DB_FH *, char *, u_int8_t *));
+#define __ham_31_hashmeta __ham_31_hashmeta@DB_VERSION_UNIQUE_NAME@
+int __ham_31_hashmeta __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+#define __ham_31_hash __ham_31_hash@DB_VERSION_UNIQUE_NAME@
+int __ham_31_hash __P((DB *, char *, u_int32_t, DB_FH *, PAGE *, int *));
+#define __ham_vrfy_meta __ham_vrfy_meta@DB_VERSION_UNIQUE_NAME@
+int __ham_vrfy_meta __P((DB *, VRFY_DBINFO *, HMETA *, db_pgno_t, u_int32_t));
+#define __ham_vrfy __ham_vrfy@DB_VERSION_UNIQUE_NAME@
+int __ham_vrfy __P((DB *, VRFY_DBINFO *, PAGE *, db_pgno_t, u_int32_t));
+#define __ham_vrfy_structure __ham_vrfy_structure@DB_VERSION_UNIQUE_NAME@
+int __ham_vrfy_structure __P((DB *, VRFY_DBINFO *, db_pgno_t, u_int32_t));
+#define __ham_vrfy_hashing __ham_vrfy_hashing@DB_VERSION_UNIQUE_NAME@
+int __ham_vrfy_hashing __P((DB *, u_int32_t, HMETA *, u_int32_t, db_pgno_t, u_int32_t, u_int32_t (*) __P((DB *, const void *, u_int32_t))));
+#define __ham_salvage __ham_salvage@DB_VERSION_UNIQUE_NAME@
+int __ham_salvage __P((DB *, VRFY_DBINFO *, db_pgno_t, PAGE *, void *, int (*)(void *, const void *), u_int32_t));
+#define __ham_meta2pgset __ham_meta2pgset@DB_VERSION_UNIQUE_NAME@
+int __ham_meta2pgset __P((DB *, VRFY_DBINFO *, HMETA *, u_int32_t, DB *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _hash_ext_h_ */
diff --git a/db/include_auto/lock_ext.h b/db/include_auto/lock_ext.h
new file mode 100644
index 000000000..e53329bc0
--- /dev/null
+++ b/db/include_auto/lock_ext.h
@@ -0,0 +1,34 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _lock_ext_h_
+#define _lock_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __lock_downgrade __P((DB_ENV *, DB_LOCK *, db_lockmode_t, u_int32_t));
+int __lock_addfamilylocker __P((DB_ENV *, u_int32_t, u_int32_t));
+int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
+void __lock_freelocker __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
+int __lock_getlocker __P((DB_LOCKTAB *, u_int32_t, u_int32_t, int, DB_LOCKER **));
+int __lock_promote __P((DB_LOCKTAB *, DB_LOCKOBJ *, int));
+void __lock_printlock __P((DB_LOCKTAB *, struct __db_lock *, int));
+int __lock_set_lk_conflicts __P((DB_ENV *, u_int8_t *, int));
+int __lock_set_lk_detect __P((DB_ENV *, u_int32_t));
+int __lock_set_lk_max __P((DB_ENV *, u_int32_t));
+int __lock_set_lk_max_locks __P((DB_ENV *, u_int32_t));
+int __lock_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
+int __lock_set_lk_max_objects __P((DB_ENV *, u_int32_t));
+void __lock_dbenv_create __P((DB_ENV *));
+void __lock_dbenv_close __P((DB_ENV *));
+int __lock_open __P((DB_ENV *));
+int __lock_close __P((DB_ENV *));
+void __lock_region_destroy __P((DB_ENV *, REGINFO *));
+int __lock_dump_region __P((DB_ENV *, char *, FILE *));
+int __lock_cmp __P((const DBT *, DB_LOCKOBJ *));
+int __lock_locker_cmp __P((u_int32_t, DB_LOCKER *));
+u_int32_t __lock_ohash __P((const DBT *));
+u_int32_t __lock_lhash __P((DB_LOCKOBJ *));
+u_int32_t __lock_locker_hash __P((u_int32_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _lock_ext_h_ */
diff --git a/db/include_auto/lock_ext.in b/db/include_auto/lock_ext.in
new file mode 100644
index 000000000..718270d29
--- /dev/null
+++ b/db/include_auto/lock_ext.in
@@ -0,0 +1,58 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _lock_ext_h_
+#define _lock_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __lock_downgrade __lock_downgrade@DB_VERSION_UNIQUE_NAME@
+int __lock_downgrade __P((DB_ENV *, DB_LOCK *, db_lockmode_t, u_int32_t));
+#define __lock_addfamilylocker __lock_addfamilylocker@DB_VERSION_UNIQUE_NAME@
+int __lock_addfamilylocker __P((DB_ENV *, u_int32_t, u_int32_t));
+#define __lock_freefamilylocker __lock_freefamilylocker@DB_VERSION_UNIQUE_NAME@
+int __lock_freefamilylocker __P((DB_LOCKTAB *, u_int32_t));
+#define __lock_freelocker __lock_freelocker@DB_VERSION_UNIQUE_NAME@
+void __lock_freelocker __P((DB_LOCKTAB *, DB_LOCKREGION *, DB_LOCKER *, u_int32_t));
+#define __lock_getlocker __lock_getlocker@DB_VERSION_UNIQUE_NAME@
+int __lock_getlocker __P((DB_LOCKTAB *, u_int32_t, u_int32_t, int, DB_LOCKER **));
+#define __lock_promote __lock_promote@DB_VERSION_UNIQUE_NAME@
+int __lock_promote __P((DB_LOCKTAB *, DB_LOCKOBJ *, int));
+#define __lock_printlock __lock_printlock@DB_VERSION_UNIQUE_NAME@
+void __lock_printlock __P((DB_LOCKTAB *, struct __db_lock *, int));
+#define __lock_set_lk_conflicts __lock_set_lk_conflicts@DB_VERSION_UNIQUE_NAME@
+int __lock_set_lk_conflicts __P((DB_ENV *, u_int8_t *, int));
+#define __lock_set_lk_detect __lock_set_lk_detect@DB_VERSION_UNIQUE_NAME@
+int __lock_set_lk_detect __P((DB_ENV *, u_int32_t));
+#define __lock_set_lk_max __lock_set_lk_max@DB_VERSION_UNIQUE_NAME@
+int __lock_set_lk_max __P((DB_ENV *, u_int32_t));
+#define __lock_set_lk_max_locks __lock_set_lk_max_locks@DB_VERSION_UNIQUE_NAME@
+int __lock_set_lk_max_locks __P((DB_ENV *, u_int32_t));
+#define __lock_set_lk_max_lockers __lock_set_lk_max_lockers@DB_VERSION_UNIQUE_NAME@
+int __lock_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
+#define __lock_set_lk_max_objects __lock_set_lk_max_objects@DB_VERSION_UNIQUE_NAME@
+int __lock_set_lk_max_objects __P((DB_ENV *, u_int32_t));
+#define __lock_dbenv_create __lock_dbenv_create@DB_VERSION_UNIQUE_NAME@
+void __lock_dbenv_create __P((DB_ENV *));
+#define __lock_dbenv_close __lock_dbenv_close@DB_VERSION_UNIQUE_NAME@
+void __lock_dbenv_close __P((DB_ENV *));
+#define __lock_open __lock_open@DB_VERSION_UNIQUE_NAME@
+int __lock_open __P((DB_ENV *));
+#define __lock_close __lock_close@DB_VERSION_UNIQUE_NAME@
+int __lock_close __P((DB_ENV *));
+#define __lock_region_destroy __lock_region_destroy@DB_VERSION_UNIQUE_NAME@
+void __lock_region_destroy __P((DB_ENV *, REGINFO *));
+#define __lock_dump_region __lock_dump_region@DB_VERSION_UNIQUE_NAME@
+int __lock_dump_region __P((DB_ENV *, char *, FILE *));
+#define __lock_cmp __lock_cmp@DB_VERSION_UNIQUE_NAME@
+int __lock_cmp __P((const DBT *, DB_LOCKOBJ *));
+#define __lock_locker_cmp __lock_locker_cmp@DB_VERSION_UNIQUE_NAME@
+int __lock_locker_cmp __P((u_int32_t, DB_LOCKER *));
+#define __lock_ohash __lock_ohash@DB_VERSION_UNIQUE_NAME@
+u_int32_t __lock_ohash __P((const DBT *));
+#define __lock_lhash __lock_lhash@DB_VERSION_UNIQUE_NAME@
+u_int32_t __lock_lhash __P((DB_LOCKOBJ *));
+#define __lock_locker_hash __lock_locker_hash@DB_VERSION_UNIQUE_NAME@
+u_int32_t __lock_locker_hash __P((u_int32_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _lock_ext_h_ */
diff --git a/db/include_auto/log_auto.h b/db/include_auto/log_auto.h
new file mode 100644
index 000000000..fd7b2278a
--- /dev/null
+++ b/db/include_auto/log_auto.h
@@ -0,0 +1,30 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef log_AUTO_H
+#define log_AUTO_H
+#define DB_log_register1 1
+typedef struct _log_register1_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ DBT name;
+ DBT uid;
+ int32_t fileid;
+ DBTYPE ftype;
+} __log_register1_args;
+
+#define DB_log_register 2
+typedef struct _log_register_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ DBT name;
+ DBT uid;
+ int32_t fileid;
+ DBTYPE ftype;
+ db_pgno_t meta_pgno;
+} __log_register_args;
+
+#endif
diff --git a/db/include_auto/log_ext.h b/db/include_auto/log_ext.h
new file mode 100644
index 000000000..e391fd2a5
--- /dev/null
+++ b/db/include_auto/log_ext.h
@@ -0,0 +1,37 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _log_ext_h_
+#define _log_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __log_open __P((DB_ENV *));
+int __log_find __P((DB_LOG *, int, int *, logfile_validity *));
+int __log_valid __P((DB_LOG *, u_int32_t, int, logfile_validity *));
+int __log_close __P((DB_ENV *));
+int __log_lastckp __P((DB_ENV *, DB_LSN *));
+void __log_region_destroy __P((DB_ENV *, REGINFO *));
+int __log_register1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __log_register1_read __P((DB_ENV *, void *, __log_register1_args **));
+int __log_register_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, int32_t, DBTYPE, db_pgno_t));
+int __log_register_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __log_register_read __P((DB_ENV *, void *, __log_register_args **));
+int __log_init_print __P((DB_ENV *));
+int __log_init_recover __P((DB_ENV *));
+int __log_findckp __P((DB_ENV *, DB_LSN *));
+int __log_get __P((DB_LOG *, DB_LSN *, DBT *, u_int32_t, int));
+void __log_dbenv_create __P((DB_ENV *));
+int __log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+int __log_name __P((DB_LOG *, u_int32_t, char **, DB_FH *, u_int32_t));
+int __log_register_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __log_reopen_file __P((DB_ENV *, char *, int32_t, u_int8_t *, db_pgno_t));
+int __log_add_logid __P((DB_ENV *, DB_LOG *, DB *, int32_t));
+int __db_fileid_to_db __P((DB_ENV *, DB **, int32_t, int));
+void __log_close_files __P((DB_ENV *));
+void __log_rem_logid __P((DB_LOG *, DB *, int32_t));
+int __log_lid_to_fname __P((DB_LOG *, int32_t, FNAME **));
+int __log_filelist_update __P((DB_ENV *, DB *, int32_t, const char *, int *));
+int __log_file_lock __P((DB *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _log_ext_h_ */
diff --git a/db/include_auto/log_ext.in b/db/include_auto/log_ext.in
new file mode 100644
index 000000000..f04f94f12
--- /dev/null
+++ b/db/include_auto/log_ext.in
@@ -0,0 +1,64 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _log_ext_h_
+#define _log_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __log_open __log_open@DB_VERSION_UNIQUE_NAME@
+int __log_open __P((DB_ENV *));
+#define __log_find __log_find@DB_VERSION_UNIQUE_NAME@
+int __log_find __P((DB_LOG *, int, int *, logfile_validity *));
+#define __log_valid __log_valid@DB_VERSION_UNIQUE_NAME@
+int __log_valid __P((DB_LOG *, u_int32_t, int, logfile_validity *));
+#define __log_close __log_close@DB_VERSION_UNIQUE_NAME@
+int __log_close __P((DB_ENV *));
+#define __log_lastckp __log_lastckp@DB_VERSION_UNIQUE_NAME@
+int __log_lastckp __P((DB_ENV *, DB_LSN *));
+#define __log_region_destroy __log_region_destroy@DB_VERSION_UNIQUE_NAME@
+void __log_region_destroy __P((DB_ENV *, REGINFO *));
+#define __log_register1_print __log_register1_print@DB_VERSION_UNIQUE_NAME@
+int __log_register1_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __log_register1_read __log_register1_read@DB_VERSION_UNIQUE_NAME@
+int __log_register1_read __P((DB_ENV *, void *, __log_register1_args **));
+#define __log_register_log __log_register_log@DB_VERSION_UNIQUE_NAME@
+int __log_register_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, const DBT *, int32_t, DBTYPE, db_pgno_t));
+#define __log_register_print __log_register_print@DB_VERSION_UNIQUE_NAME@
+int __log_register_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __log_register_read __log_register_read@DB_VERSION_UNIQUE_NAME@
+int __log_register_read __P((DB_ENV *, void *, __log_register_args **));
+#define __log_init_print __log_init_print@DB_VERSION_UNIQUE_NAME@
+int __log_init_print __P((DB_ENV *));
+#define __log_init_recover __log_init_recover@DB_VERSION_UNIQUE_NAME@
+int __log_init_recover __P((DB_ENV *));
+#define __log_findckp __log_findckp@DB_VERSION_UNIQUE_NAME@
+int __log_findckp __P((DB_ENV *, DB_LSN *));
+#define __log_get __log_get@DB_VERSION_UNIQUE_NAME@
+int __log_get __P((DB_LOG *, DB_LSN *, DBT *, u_int32_t, int));
+#define __log_dbenv_create __log_dbenv_create@DB_VERSION_UNIQUE_NAME@
+void __log_dbenv_create __P((DB_ENV *));
+#define __log_put __log_put@DB_VERSION_UNIQUE_NAME@
+int __log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+#define __log_name __log_name@DB_VERSION_UNIQUE_NAME@
+int __log_name __P((DB_LOG *, u_int32_t, char **, DB_FH *, u_int32_t));
+#define __log_register_recover __log_register_recover@DB_VERSION_UNIQUE_NAME@
+int __log_register_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __log_reopen_file __log_reopen_file@DB_VERSION_UNIQUE_NAME@
+int __log_reopen_file __P((DB_ENV *, char *, int32_t, u_int8_t *, db_pgno_t));
+#define __log_add_logid __log_add_logid@DB_VERSION_UNIQUE_NAME@
+int __log_add_logid __P((DB_ENV *, DB_LOG *, DB *, int32_t));
+#define __db_fileid_to_db __db_fileid_to_db@DB_VERSION_UNIQUE_NAME@
+int __db_fileid_to_db __P((DB_ENV *, DB **, int32_t, int));
+#define __log_close_files __log_close_files@DB_VERSION_UNIQUE_NAME@
+void __log_close_files __P((DB_ENV *));
+#define __log_rem_logid __log_rem_logid@DB_VERSION_UNIQUE_NAME@
+void __log_rem_logid __P((DB_LOG *, DB *, int32_t));
+#define __log_lid_to_fname __log_lid_to_fname@DB_VERSION_UNIQUE_NAME@
+int __log_lid_to_fname __P((DB_LOG *, int32_t, FNAME **));
+#define __log_filelist_update __log_filelist_update@DB_VERSION_UNIQUE_NAME@
+int __log_filelist_update __P((DB_ENV *, DB *, int32_t, const char *, int *));
+#define __log_file_lock __log_file_lock@DB_VERSION_UNIQUE_NAME@
+int __log_file_lock __P((DB *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _log_ext_h_ */
diff --git a/db/include_auto/mp_ext.h b/db/include_auto/mp_ext.h
new file mode 100644
index 000000000..04ede50a8
--- /dev/null
+++ b/db/include_auto/mp_ext.h
@@ -0,0 +1,32 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _mp_ext_h_
+#define _mp_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __memp_alloc __P((DB_MPOOL *, REGINFO *, MPOOLFILE *, size_t, roff_t *, void *));
+int __memp_bhwrite __P((DB_MPOOL *, MPOOLFILE *, BH *, int, int *, int *));
+int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
+int __memp_pgwrite __P((DB_MPOOL *, DB_MPOOLFILE *, BH *, int *, int *));
+int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
+void __memp_bhfree __P((DB_MPOOL *, BH *, int));
+void __memp_set_unlink __P((DB_MPOOLFILE *));
+void __memp_clear_unlink __P((DB_MPOOLFILE *));
+void __memp_refcount __P((DB_MPOOLFILE *, db_pgno_t *));
+int __memp_fopen __P((DB_MPOOL *, MPOOLFILE *, const char *, u_int32_t, int, size_t, int, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
+int __memp_fclose __P((DB_MPOOLFILE *, int));
+void __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *));
+int __memp_fremove __P((DB_MPOOLFILE *));
+char * __memp_fn __P((DB_MPOOLFILE *));
+char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
+void __memp_dbenv_create __P((DB_ENV *));
+int __memp_open __P((DB_ENV *));
+int __memp_close __P((DB_ENV *));
+void __mpool_region_destroy __P((DB_ENV *, REGINFO *));
+int __memp_dump_region __P((DB_ENV *, char *, FILE *));
+int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
+int __memp_close_flush_files __P((DB_MPOOL *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _mp_ext_h_ */
diff --git a/db/include_auto/mp_ext.in b/db/include_auto/mp_ext.in
new file mode 100644
index 000000000..9ceaabbdf
--- /dev/null
+++ b/db/include_auto/mp_ext.in
@@ -0,0 +1,54 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _mp_ext_h_
+#define _mp_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __memp_alloc __memp_alloc@DB_VERSION_UNIQUE_NAME@
+int __memp_alloc __P((DB_MPOOL *, REGINFO *, MPOOLFILE *, size_t, roff_t *, void *));
+#define __memp_bhwrite __memp_bhwrite@DB_VERSION_UNIQUE_NAME@
+int __memp_bhwrite __P((DB_MPOOL *, MPOOLFILE *, BH *, int, int *, int *));
+#define __memp_pgread __memp_pgread@DB_VERSION_UNIQUE_NAME@
+int __memp_pgread __P((DB_MPOOLFILE *, BH *, int));
+#define __memp_pgwrite __memp_pgwrite@DB_VERSION_UNIQUE_NAME@
+int __memp_pgwrite __P((DB_MPOOL *, DB_MPOOLFILE *, BH *, int *, int *));
+#define __memp_pg __memp_pg@DB_VERSION_UNIQUE_NAME@
+int __memp_pg __P((DB_MPOOLFILE *, BH *, int));
+#define __memp_bhfree __memp_bhfree@DB_VERSION_UNIQUE_NAME@
+void __memp_bhfree __P((DB_MPOOL *, BH *, int));
+#define __memp_set_unlink __memp_set_unlink@DB_VERSION_UNIQUE_NAME@
+void __memp_set_unlink __P((DB_MPOOLFILE *));
+#define __memp_clear_unlink __memp_clear_unlink@DB_VERSION_UNIQUE_NAME@
+void __memp_clear_unlink __P((DB_MPOOLFILE *));
+#define __memp_refcount __memp_refcount@DB_VERSION_UNIQUE_NAME@
+void __memp_refcount __P((DB_MPOOLFILE *, db_pgno_t *));
+#define __memp_fopen __memp_fopen@DB_VERSION_UNIQUE_NAME@
+int __memp_fopen __P((DB_MPOOL *, MPOOLFILE *, const char *, u_int32_t, int, size_t, int, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
+#define __memp_fclose __memp_fclose@DB_VERSION_UNIQUE_NAME@
+int __memp_fclose __P((DB_MPOOLFILE *, int));
+#define __memp_mf_discard __memp_mf_discard@DB_VERSION_UNIQUE_NAME@
+void __memp_mf_discard __P((DB_MPOOL *, MPOOLFILE *));
+#define __memp_fremove __memp_fremove@DB_VERSION_UNIQUE_NAME@
+int __memp_fremove __P((DB_MPOOLFILE *));
+#define __memp_fn __memp_fn@DB_VERSION_UNIQUE_NAME@
+char * __memp_fn __P((DB_MPOOLFILE *));
+#define __memp_fns __memp_fns@DB_VERSION_UNIQUE_NAME@
+char * __memp_fns __P((DB_MPOOL *, MPOOLFILE *));
+#define __memp_dbenv_create __memp_dbenv_create@DB_VERSION_UNIQUE_NAME@
+void __memp_dbenv_create __P((DB_ENV *));
+#define __memp_open __memp_open@DB_VERSION_UNIQUE_NAME@
+int __memp_open __P((DB_ENV *));
+#define __memp_close __memp_close@DB_VERSION_UNIQUE_NAME@
+int __memp_close __P((DB_ENV *));
+#define __mpool_region_destroy __mpool_region_destroy@DB_VERSION_UNIQUE_NAME@
+void __mpool_region_destroy __P((DB_ENV *, REGINFO *));
+#define __memp_dump_region __memp_dump_region@DB_VERSION_UNIQUE_NAME@
+int __memp_dump_region __P((DB_ENV *, char *, FILE *));
+#define __mp_xxx_fh __mp_xxx_fh@DB_VERSION_UNIQUE_NAME@
+int __mp_xxx_fh __P((DB_MPOOLFILE *, DB_FH **));
+#define __memp_close_flush_files __memp_close_flush_files@DB_VERSION_UNIQUE_NAME@
+int __memp_close_flush_files __P((DB_MPOOL *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _mp_ext_h_ */
diff --git a/db/include_auto/mutex_ext.h b/db/include_auto/mutex_ext.h
new file mode 100644
index 000000000..7b6b5a22c
--- /dev/null
+++ b/db/include_auto/mutex_ext.h
@@ -0,0 +1,28 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _mutex_ext_h_
+#define _mutex_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __db_fcntl_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
+int __db_fcntl_mutex_lock __P((DB_ENV *, MUTEX *, DB_FH *));
+int __db_fcntl_mutex_unlock __P((DB_ENV *, MUTEX *));
+int __db_fcntl_mutex_destroy __P((MUTEX *));
+int __db_pthread_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
+int __db_pthread_mutex_lock __P((DB_ENV *, MUTEX *));
+int __db_pthread_mutex_unlock __P((DB_ENV *, MUTEX *));
+int __db_pthread_mutex_destroy __P((MUTEX *));
+int __db_tas_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
+int __db_tas_mutex_lock __P((DB_ENV *, MUTEX *));
+int __db_tas_mutex_unlock __P((DB_ENV *, MUTEX *));
+int __db_tas_mutex_destroy __P((MUTEX *));
+int __db_mutex_alloc __P((DB_ENV *, REGINFO *, int, MUTEX **));
+void __db_mutex_free __P((DB_ENV *, REGINFO *, MUTEX *));
+void __db_shreg_locks_clear __P((MUTEX *, REGINFO *, REGMAINT *));
+void __db_shreg_locks_destroy __P((REGINFO *, REGMAINT *));
+int __db_shreg_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t, u_int32_t, REGINFO *, REGMAINT *));
+void __db_shreg_maintinit __P((REGINFO *, void *addr, size_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _mutex_ext_h_ */
diff --git a/db/include_auto/mutex_ext.in b/db/include_auto/mutex_ext.in
new file mode 100644
index 000000000..ac01d5726
--- /dev/null
+++ b/db/include_auto/mutex_ext.in
@@ -0,0 +1,46 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _mutex_ext_h_
+#define _mutex_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __db_fcntl_mutex_init __db_fcntl_mutex_init@DB_VERSION_UNIQUE_NAME@
+int __db_fcntl_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
+#define __db_fcntl_mutex_lock __db_fcntl_mutex_lock@DB_VERSION_UNIQUE_NAME@
+int __db_fcntl_mutex_lock __P((DB_ENV *, MUTEX *, DB_FH *));
+#define __db_fcntl_mutex_unlock __db_fcntl_mutex_unlock@DB_VERSION_UNIQUE_NAME@
+int __db_fcntl_mutex_unlock __P((DB_ENV *, MUTEX *));
+#define __db_fcntl_mutex_destroy __db_fcntl_mutex_destroy@DB_VERSION_UNIQUE_NAME@
+int __db_fcntl_mutex_destroy __P((MUTEX *));
+#define __db_pthread_mutex_init __db_pthread_mutex_init@DB_VERSION_UNIQUE_NAME@
+int __db_pthread_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
+#define __db_pthread_mutex_lock __db_pthread_mutex_lock@DB_VERSION_UNIQUE_NAME@
+int __db_pthread_mutex_lock __P((DB_ENV *, MUTEX *));
+#define __db_pthread_mutex_unlock __db_pthread_mutex_unlock@DB_VERSION_UNIQUE_NAME@
+int __db_pthread_mutex_unlock __P((DB_ENV *, MUTEX *));
+#define __db_pthread_mutex_destroy __db_pthread_mutex_destroy@DB_VERSION_UNIQUE_NAME@
+int __db_pthread_mutex_destroy __P((MUTEX *));
+#define __db_tas_mutex_init __db_tas_mutex_init@DB_VERSION_UNIQUE_NAME@
+int __db_tas_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t));
+#define __db_tas_mutex_lock __db_tas_mutex_lock@DB_VERSION_UNIQUE_NAME@
+int __db_tas_mutex_lock __P((DB_ENV *, MUTEX *));
+#define __db_tas_mutex_unlock __db_tas_mutex_unlock@DB_VERSION_UNIQUE_NAME@
+int __db_tas_mutex_unlock __P((DB_ENV *, MUTEX *));
+#define __db_tas_mutex_destroy __db_tas_mutex_destroy@DB_VERSION_UNIQUE_NAME@
+int __db_tas_mutex_destroy __P((MUTEX *));
+#define __db_mutex_alloc __db_mutex_alloc@DB_VERSION_UNIQUE_NAME@
+int __db_mutex_alloc __P((DB_ENV *, REGINFO *, int, MUTEX **));
+#define __db_mutex_free __db_mutex_free@DB_VERSION_UNIQUE_NAME@
+void __db_mutex_free __P((DB_ENV *, REGINFO *, MUTEX *));
+#define __db_shreg_locks_clear __db_shreg_locks_clear@DB_VERSION_UNIQUE_NAME@
+void __db_shreg_locks_clear __P((MUTEX *, REGINFO *, REGMAINT *));
+#define __db_shreg_locks_destroy __db_shreg_locks_destroy@DB_VERSION_UNIQUE_NAME@
+void __db_shreg_locks_destroy __P((REGINFO *, REGMAINT *));
+#define __db_shreg_mutex_init __db_shreg_mutex_init@DB_VERSION_UNIQUE_NAME@
+int __db_shreg_mutex_init __P((DB_ENV *, MUTEX *, u_int32_t, u_int32_t, REGINFO *, REGMAINT *));
+#define __db_shreg_maintinit __db_shreg_maintinit@DB_VERSION_UNIQUE_NAME@
+void __db_shreg_maintinit __P((REGINFO *, void *addr, size_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _mutex_ext_h_ */
diff --git a/db/include_auto/os_ext.h b/db/include_auto/os_ext.h
new file mode 100644
index 000000000..77992ede4
--- /dev/null
+++ b/db/include_auto/os_ext.h
@@ -0,0 +1,61 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _os_ext_h_
+#define _os_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __os_abspath __P((const char *));
+int __os_umalloc __P((DB_ENV *, size_t, void *));
+int __os_urealloc __P((DB_ENV *, size_t, void *));
+int __os_ufree __P((DB_ENV *, void *, size_t));
+int __os_strdup __P((DB_ENV *, const char *, void *));
+int __os_calloc __P((DB_ENV *, size_t, size_t, void *));
+int __os_malloc __P((DB_ENV *, size_t, void *));
+int __os_realloc __P((DB_ENV *, size_t, void *));
+void __os_free __P((DB_ENV *, void *, size_t));
+void __os_freestr __P((DB_ENV *, void *));
+void *__ua_memcpy __P((void *, const void *, size_t));
+int __os_dirlist __P((DB_ENV *, const char *, char ***, int *));
+void __os_dirfree __P((DB_ENV *, char **, int));
+int __os_get_errno __P((void));
+void __os_set_errno __P((int));
+int __os_fileid __P((DB_ENV *, const char *, int, u_int8_t *));
+int __os_finit __P((DB_ENV *, DB_FH *, size_t, int));
+int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
+int __os_fsync __P((DB_ENV *, DB_FH *));
+int __os_openhandle __P((DB_ENV *, const char *, int, int, DB_FH *));
+int __os_closehandle __P((DB_FH *));
+int __os_r_sysattach __P((DB_ENV *, REGINFO *, REGION *));
+int __os_r_sysdetach __P((DB_ENV *, REGINFO *, int));
+int __os_mapfile __P((DB_ENV *, char *, DB_FH *, size_t, int, void **));
+int __os_unmapfile __P((DB_ENV *, void *, size_t));
+u_int32_t __db_oflags __P((int));
+int __db_omode __P((const char *));
+int __os_open __P((DB_ENV *, const char *, u_int32_t, int, DB_FH *));
+int __os_shmname __P((DB_ENV *, const char *, char **));
+int __os_r_attach __P((DB_ENV *, REGINFO *, REGION *));
+int __os_r_detach __P((DB_ENV *, REGINFO *, int));
+int __os_rename __P((DB_ENV *, const char *, const char *));
+int __os_isroot __P((void));
+char *__db_rpath __P((const char *));
+int __os_io __P((DB_ENV *, DB_IO *, int, size_t *));
+int __os_read __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
+int __os_write __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
+int __os_seek __P((DB_ENV *, DB_FH *, size_t, db_pgno_t, u_int32_t, int, DB_OS_SEEK));
+int __os_sleep __P((DB_ENV *, u_long, u_long));
+int __os_spin __P((void));
+void __os_yield __P((DB_ENV*, u_long));
+int __os_exists __P((const char *, int *));
+int __os_ioinfo __P((DB_ENV *, const char *, DB_FH *, u_int32_t *, u_int32_t *, u_int32_t *));
+int __os_tmpdir __P((DB_ENV *, u_int32_t));
+int __os_unlink __P((DB_ENV *, const char *));
+int __os_region_unlink __P((DB_ENV *, const char *));
+#if defined(DB_WIN32)
+int __os_win32_errno __P((void));
+#endif
+int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
+int __os_is_winnt __P((void));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _os_ext_h_ */
diff --git a/db/include_auto/os_ext.in b/db/include_auto/os_ext.in
new file mode 100644
index 000000000..d8e29d1c0
--- /dev/null
+++ b/db/include_auto/os_ext.in
@@ -0,0 +1,110 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _os_ext_h_
+#define _os_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __os_abspath __os_abspath@DB_VERSION_UNIQUE_NAME@
+int __os_abspath __P((const char *));
+#define __os_umalloc __os_umalloc@DB_VERSION_UNIQUE_NAME@
+int __os_umalloc __P((DB_ENV *, size_t, void *));
+#define __os_urealloc __os_urealloc@DB_VERSION_UNIQUE_NAME@
+int __os_urealloc __P((DB_ENV *, size_t, void *));
+#define __os_ufree __os_ufree@DB_VERSION_UNIQUE_NAME@
+int __os_ufree __P((DB_ENV *, void *, size_t));
+#define __os_strdup __os_strdup@DB_VERSION_UNIQUE_NAME@
+int __os_strdup __P((DB_ENV *, const char *, void *));
+#define __os_calloc __os_calloc@DB_VERSION_UNIQUE_NAME@
+int __os_calloc __P((DB_ENV *, size_t, size_t, void *));
+#define __os_malloc __os_malloc@DB_VERSION_UNIQUE_NAME@
+int __os_malloc __P((DB_ENV *, size_t, void *));
+#define __os_realloc __os_realloc@DB_VERSION_UNIQUE_NAME@
+int __os_realloc __P((DB_ENV *, size_t, void *));
+#define __os_free __os_free@DB_VERSION_UNIQUE_NAME@
+void __os_free __P((DB_ENV *, void *, size_t));
+#define __os_freestr __os_freestr@DB_VERSION_UNIQUE_NAME@
+void __os_freestr __P((DB_ENV *, void *));
+#define __ua_memcpy __ua_memcpy@DB_VERSION_UNIQUE_NAME@
+void *__ua_memcpy __P((void *, const void *, size_t));
+#define __os_dirlist __os_dirlist@DB_VERSION_UNIQUE_NAME@
+int __os_dirlist __P((DB_ENV *, const char *, char ***, int *));
+#define __os_dirfree __os_dirfree@DB_VERSION_UNIQUE_NAME@
+void __os_dirfree __P((DB_ENV *, char **, int));
+#define __os_get_errno __os_get_errno@DB_VERSION_UNIQUE_NAME@
+int __os_get_errno __P((void));
+#define __os_set_errno __os_set_errno@DB_VERSION_UNIQUE_NAME@
+void __os_set_errno __P((int));
+#define __os_fileid __os_fileid@DB_VERSION_UNIQUE_NAME@
+int __os_fileid __P((DB_ENV *, const char *, int, u_int8_t *));
+#define __os_finit __os_finit@DB_VERSION_UNIQUE_NAME@
+int __os_finit __P((DB_ENV *, DB_FH *, size_t, int));
+#define __os_fpinit __os_fpinit@DB_VERSION_UNIQUE_NAME@
+int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
+#define __os_fsync __os_fsync@DB_VERSION_UNIQUE_NAME@
+int __os_fsync __P((DB_ENV *, DB_FH *));
+#define __os_openhandle __os_openhandle@DB_VERSION_UNIQUE_NAME@
+int __os_openhandle __P((DB_ENV *, const char *, int, int, DB_FH *));
+#define __os_closehandle __os_closehandle@DB_VERSION_UNIQUE_NAME@
+int __os_closehandle __P((DB_FH *));
+#define __os_r_sysattach __os_r_sysattach@DB_VERSION_UNIQUE_NAME@
+int __os_r_sysattach __P((DB_ENV *, REGINFO *, REGION *));
+#define __os_r_sysdetach __os_r_sysdetach@DB_VERSION_UNIQUE_NAME@
+int __os_r_sysdetach __P((DB_ENV *, REGINFO *, int));
+#define __os_mapfile __os_mapfile@DB_VERSION_UNIQUE_NAME@
+int __os_mapfile __P((DB_ENV *, char *, DB_FH *, size_t, int, void **));
+#define __os_unmapfile __os_unmapfile@DB_VERSION_UNIQUE_NAME@
+int __os_unmapfile __P((DB_ENV *, void *, size_t));
+#define __db_oflags __db_oflags@DB_VERSION_UNIQUE_NAME@
+u_int32_t __db_oflags __P((int));
+#define __db_omode __db_omode@DB_VERSION_UNIQUE_NAME@
+int __db_omode __P((const char *));
+#define __os_open __os_open@DB_VERSION_UNIQUE_NAME@
+int __os_open __P((DB_ENV *, const char *, u_int32_t, int, DB_FH *));
+#define __os_shmname __os_shmname@DB_VERSION_UNIQUE_NAME@
+int __os_shmname __P((DB_ENV *, const char *, char **));
+#define __os_r_attach __os_r_attach@DB_VERSION_UNIQUE_NAME@
+int __os_r_attach __P((DB_ENV *, REGINFO *, REGION *));
+#define __os_r_detach __os_r_detach@DB_VERSION_UNIQUE_NAME@
+int __os_r_detach __P((DB_ENV *, REGINFO *, int));
+#define __os_rename __os_rename@DB_VERSION_UNIQUE_NAME@
+int __os_rename __P((DB_ENV *, const char *, const char *));
+#define __os_isroot __os_isroot@DB_VERSION_UNIQUE_NAME@
+int __os_isroot __P((void));
+#define __db_rpath __db_rpath@DB_VERSION_UNIQUE_NAME@
+char *__db_rpath __P((const char *));
+#define __os_io __os_io@DB_VERSION_UNIQUE_NAME@
+int __os_io __P((DB_ENV *, DB_IO *, int, size_t *));
+#define __os_read __os_read@DB_VERSION_UNIQUE_NAME@
+int __os_read __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
+#define __os_write __os_write@DB_VERSION_UNIQUE_NAME@
+int __os_write __P((DB_ENV *, DB_FH *, void *, size_t, size_t *));
+#define __os_seek __os_seek@DB_VERSION_UNIQUE_NAME@
+int __os_seek __P((DB_ENV *, DB_FH *, size_t, db_pgno_t, u_int32_t, int, DB_OS_SEEK));
+#define __os_sleep __os_sleep@DB_VERSION_UNIQUE_NAME@
+int __os_sleep __P((DB_ENV *, u_long, u_long));
+#define __os_spin __os_spin@DB_VERSION_UNIQUE_NAME@
+int __os_spin __P((void));
+#define __os_yield __os_yield@DB_VERSION_UNIQUE_NAME@
+void __os_yield __P((DB_ENV*, u_long));
+#define __os_exists __os_exists@DB_VERSION_UNIQUE_NAME@
+int __os_exists __P((const char *, int *));
+#define __os_ioinfo __os_ioinfo@DB_VERSION_UNIQUE_NAME@
+int __os_ioinfo __P((DB_ENV *, const char *, DB_FH *, u_int32_t *, u_int32_t *, u_int32_t *));
+#define __os_tmpdir __os_tmpdir@DB_VERSION_UNIQUE_NAME@
+int __os_tmpdir __P((DB_ENV *, u_int32_t));
+#define __os_unlink __os_unlink@DB_VERSION_UNIQUE_NAME@
+int __os_unlink __P((DB_ENV *, const char *));
+#define __os_region_unlink __os_region_unlink@DB_VERSION_UNIQUE_NAME@
+int __os_region_unlink __P((DB_ENV *, const char *));
+#if defined(DB_WIN32)
+#define __os_win32_errno __os_win32_errno@DB_VERSION_UNIQUE_NAME@
+int __os_win32_errno __P((void));
+#endif
+#define __os_fpinit __os_fpinit@DB_VERSION_UNIQUE_NAME@
+int __os_fpinit __P((DB_ENV *, DB_FH *, db_pgno_t, int, int));
+#define __os_is_winnt __os_is_winnt@DB_VERSION_UNIQUE_NAME@
+int __os_is_winnt __P((void));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _os_ext_h_ */
diff --git a/db/include_auto/qam_auto.h b/db/include_auto/qam_auto.h
new file mode 100644
index 000000000..edec8ea69
--- /dev/null
+++ b/db/include_auto/qam_auto.h
@@ -0,0 +1,95 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef qam_AUTO_H
+#define qam_AUTO_H
+#define DB_qam_inc 76
+typedef struct _qam_inc_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN lsn;
+} __qam_inc_args;
+
+#define DB_qam_incfirst 77
+typedef struct _qam_incfirst_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ db_recno_t recno;
+} __qam_incfirst_args;
+
+#define DB_qam_mvptr 78
+typedef struct _qam_mvptr_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t fileid;
+ db_recno_t old_first;
+ db_recno_t new_first;
+ db_recno_t old_cur;
+ db_recno_t new_cur;
+ DB_LSN metalsn;
+} __qam_mvptr_args;
+
+#define DB_qam_del 79
+typedef struct _qam_del_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN lsn;
+ db_pgno_t pgno;
+ u_int32_t indx;
+ db_recno_t recno;
+} __qam_del_args;
+
+#define DB_qam_add 80
+typedef struct _qam_add_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN lsn;
+ db_pgno_t pgno;
+ u_int32_t indx;
+ db_recno_t recno;
+ DBT data;
+ u_int32_t vflag;
+ DBT olddata;
+} __qam_add_args;
+
+#define DB_qam_delete 81
+typedef struct _qam_delete_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DBT name;
+ DB_LSN lsn;
+} __qam_delete_args;
+
+#define DB_qam_rename 82
+typedef struct _qam_rename_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DBT name;
+ DBT newname;
+} __qam_rename_args;
+
+#define DB_qam_delext 83
+typedef struct _qam_delext_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ int32_t fileid;
+ DB_LSN lsn;
+ db_pgno_t pgno;
+ u_int32_t indx;
+ db_recno_t recno;
+ DBT data;
+} __qam_delext_args;
+
+#endif
diff --git a/db/include_auto/qam_ext.h b/db/include_auto/qam_ext.h
new file mode 100644
index 000000000..35c886d44
--- /dev/null
+++ b/db/include_auto/qam_ext.h
@@ -0,0 +1,70 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _qam_ext_h_
+#define _qam_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __qam_position __P((DBC *, db_recno_t *, qam_position_mode, int *));
+int __qam_pitem __P((DBC *, QPAGE *, u_int32_t, db_recno_t, DBT *));
+int __qam_append __P((DBC *, DBT *, DBT *));
+int __qam_c_dup __P((DBC *, DBC *));
+int __qam_c_init __P((DBC *));
+int __qam_truncate __P((DB *, DB_TXN *, u_int32_t *));
+int __qam_inc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *));
+int __qam_inc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_inc_read __P((DB_ENV *, void *, __qam_inc_args **));
+int __qam_incfirst_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_recno_t));
+int __qam_incfirst_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_incfirst_read __P((DB_ENV *, void *, __qam_incfirst_args **));
+int __qam_mvptr_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_recno_t, db_recno_t, db_recno_t, db_recno_t, DB_LSN *));
+int __qam_mvptr_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_mvptr_read __P((DB_ENV *, void *, __qam_mvptr_args **));
+int __qam_del_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t));
+int __qam_del_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_del_read __P((DB_ENV *, void *, __qam_del_args **));
+int __qam_add_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *, u_int32_t, const DBT *));
+int __qam_add_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_add_read __P((DB_ENV *, void *, __qam_add_args **));
+int __qam_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, DB_LSN *));
+int __qam_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_delete_read __P((DB_ENV *, void *, __qam_delete_args **));
+int __qam_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *));
+int __qam_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_rename_read __P((DB_ENV *, void *, __qam_rename_args **));
+int __qam_delext_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *));
+int __qam_delext_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_delext_read __P((DB_ENV *, void *, __qam_delext_args **));
+int __qam_init_print __P((DB_ENV *));
+int __qam_init_recover __P((DB_ENV *));
+int __qam_mswap __P((PAGE *));
+int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
+int __qam_fprobe __P((DB *, db_pgno_t, void *, qam_probe_mode, int));
+int __qam_fclose __P((DB *, db_pgno_t));
+int __qam_fremove __P((DB *, db_pgno_t));
+int __qam_sync __P((DB *, u_int32_t));
+int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
+int __qam_db_create __P((DB *));
+int __qam_db_close __P((DB *));
+int __db_prqueue __P((DB *, u_int32_t));
+int __qam_remove __P((DB *, const char *, const char *, DB_LSN *, int (**)(DB *, void*), void **));
+int __qam_rename __P((DB *, const char *, const char *, const char *));
+int __qam_open __P((DB *, const char *, db_pgno_t, int, u_int32_t));
+int __qam_metachk __P((DB *, const char *, QMETA *));
+int __qam_inc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_incfirst_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_mvptr_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_del_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_delext_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_add_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __qam_stat __P((DB *, void *, u_int32_t));
+int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
+int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
+int __qam_vrfy_meta __P((DB *, VRFY_DBINFO *, QMETA *, db_pgno_t, u_int32_t));
+int __qam_vrfy_data __P((DB *, VRFY_DBINFO *, QPAGE *, db_pgno_t, u_int32_t));
+int __qam_vrfy_structure __P((DB *, VRFY_DBINFO *, u_int32_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _qam_ext_h_ */
diff --git a/db/include_auto/qam_ext.in b/db/include_auto/qam_ext.in
new file mode 100644
index 000000000..5e221ead9
--- /dev/null
+++ b/db/include_auto/qam_ext.in
@@ -0,0 +1,130 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _qam_ext_h_
+#define _qam_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __qam_position __qam_position@DB_VERSION_UNIQUE_NAME@
+int __qam_position __P((DBC *, db_recno_t *, qam_position_mode, int *));
+#define __qam_pitem __qam_pitem@DB_VERSION_UNIQUE_NAME@
+int __qam_pitem __P((DBC *, QPAGE *, u_int32_t, db_recno_t, DBT *));
+#define __qam_append __qam_append@DB_VERSION_UNIQUE_NAME@
+int __qam_append __P((DBC *, DBT *, DBT *));
+#define __qam_c_dup __qam_c_dup@DB_VERSION_UNIQUE_NAME@
+int __qam_c_dup __P((DBC *, DBC *));
+#define __qam_c_init __qam_c_init@DB_VERSION_UNIQUE_NAME@
+int __qam_c_init __P((DBC *));
+#define __qam_truncate __qam_truncate@DB_VERSION_UNIQUE_NAME@
+int __qam_truncate __P((DB *, DB_TXN *, u_int32_t *));
+#define __qam_inc_log __qam_inc_log@DB_VERSION_UNIQUE_NAME@
+int __qam_inc_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *));
+#define __qam_inc_print __qam_inc_print@DB_VERSION_UNIQUE_NAME@
+int __qam_inc_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_inc_read __qam_inc_read@DB_VERSION_UNIQUE_NAME@
+int __qam_inc_read __P((DB_ENV *, void *, __qam_inc_args **));
+#define __qam_incfirst_log __qam_incfirst_log@DB_VERSION_UNIQUE_NAME@
+int __qam_incfirst_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, db_recno_t));
+#define __qam_incfirst_print __qam_incfirst_print@DB_VERSION_UNIQUE_NAME@
+int __qam_incfirst_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_incfirst_read __qam_incfirst_read@DB_VERSION_UNIQUE_NAME@
+int __qam_incfirst_read __P((DB_ENV *, void *, __qam_incfirst_args **));
+#define __qam_mvptr_log __qam_mvptr_log@DB_VERSION_UNIQUE_NAME@
+int __qam_mvptr_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t, db_recno_t, db_recno_t, db_recno_t, db_recno_t, DB_LSN *));
+#define __qam_mvptr_print __qam_mvptr_print@DB_VERSION_UNIQUE_NAME@
+int __qam_mvptr_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_mvptr_read __qam_mvptr_read@DB_VERSION_UNIQUE_NAME@
+int __qam_mvptr_read __P((DB_ENV *, void *, __qam_mvptr_args **));
+#define __qam_del_log __qam_del_log@DB_VERSION_UNIQUE_NAME@
+int __qam_del_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t));
+#define __qam_del_print __qam_del_print@DB_VERSION_UNIQUE_NAME@
+int __qam_del_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_del_read __qam_del_read@DB_VERSION_UNIQUE_NAME@
+int __qam_del_read __P((DB_ENV *, void *, __qam_del_args **));
+#define __qam_add_log __qam_add_log@DB_VERSION_UNIQUE_NAME@
+int __qam_add_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *, u_int32_t, const DBT *));
+#define __qam_add_print __qam_add_print@DB_VERSION_UNIQUE_NAME@
+int __qam_add_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_add_read __qam_add_read@DB_VERSION_UNIQUE_NAME@
+int __qam_add_read __P((DB_ENV *, void *, __qam_add_args **));
+#define __qam_delete_log __qam_delete_log@DB_VERSION_UNIQUE_NAME@
+int __qam_delete_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, DB_LSN *));
+#define __qam_delete_print __qam_delete_print@DB_VERSION_UNIQUE_NAME@
+int __qam_delete_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_delete_read __qam_delete_read@DB_VERSION_UNIQUE_NAME@
+int __qam_delete_read __P((DB_ENV *, void *, __qam_delete_args **));
+#define __qam_rename_log __qam_rename_log@DB_VERSION_UNIQUE_NAME@
+int __qam_rename_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, const DBT *, const DBT *));
+#define __qam_rename_print __qam_rename_print@DB_VERSION_UNIQUE_NAME@
+int __qam_rename_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_rename_read __qam_rename_read@DB_VERSION_UNIQUE_NAME@
+int __qam_rename_read __P((DB_ENV *, void *, __qam_rename_args **));
+#define __qam_delext_log __qam_delext_log@DB_VERSION_UNIQUE_NAME@
+int __qam_delext_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, int32_t, DB_LSN *, db_pgno_t, u_int32_t, db_recno_t, const DBT *));
+#define __qam_delext_print __qam_delext_print@DB_VERSION_UNIQUE_NAME@
+int __qam_delext_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_delext_read __qam_delext_read@DB_VERSION_UNIQUE_NAME@
+int __qam_delext_read __P((DB_ENV *, void *, __qam_delext_args **));
+#define __qam_init_print __qam_init_print@DB_VERSION_UNIQUE_NAME@
+int __qam_init_print __P((DB_ENV *));
+#define __qam_init_recover __qam_init_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_init_recover __P((DB_ENV *));
+#define __qam_mswap __qam_mswap@DB_VERSION_UNIQUE_NAME@
+int __qam_mswap __P((PAGE *));
+#define __qam_pgin_out __qam_pgin_out@DB_VERSION_UNIQUE_NAME@
+int __qam_pgin_out __P((DB_ENV *, db_pgno_t, void *, DBT *));
+#define __qam_fprobe __qam_fprobe@DB_VERSION_UNIQUE_NAME@
+int __qam_fprobe __P((DB *, db_pgno_t, void *, qam_probe_mode, int));
+#define __qam_fclose __qam_fclose@DB_VERSION_UNIQUE_NAME@
+int __qam_fclose __P((DB *, db_pgno_t));
+#define __qam_fremove __qam_fremove@DB_VERSION_UNIQUE_NAME@
+int __qam_fremove __P((DB *, db_pgno_t));
+#define __qam_sync __qam_sync@DB_VERSION_UNIQUE_NAME@
+int __qam_sync __P((DB *, u_int32_t));
+#define __qam_gen_filelist __qam_gen_filelist@DB_VERSION_UNIQUE_NAME@
+int __qam_gen_filelist __P(( DB *, QUEUE_FILELIST **));
+#define __qam_db_create __qam_db_create@DB_VERSION_UNIQUE_NAME@
+int __qam_db_create __P((DB *));
+#define __qam_db_close __qam_db_close@DB_VERSION_UNIQUE_NAME@
+int __qam_db_close __P((DB *));
+#define __db_prqueue __db_prqueue@DB_VERSION_UNIQUE_NAME@
+int __db_prqueue __P((DB *, u_int32_t));
+#define __qam_remove __qam_remove@DB_VERSION_UNIQUE_NAME@
+int __qam_remove __P((DB *, const char *, const char *, DB_LSN *, int (**)(DB *, void*), void **));
+#define __qam_rename __qam_rename@DB_VERSION_UNIQUE_NAME@
+int __qam_rename __P((DB *, const char *, const char *, const char *));
+#define __qam_open __qam_open@DB_VERSION_UNIQUE_NAME@
+int __qam_open __P((DB *, const char *, db_pgno_t, int, u_int32_t));
+#define __qam_metachk __qam_metachk@DB_VERSION_UNIQUE_NAME@
+int __qam_metachk __P((DB *, const char *, QMETA *));
+#define __qam_inc_recover __qam_inc_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_inc_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_incfirst_recover __qam_incfirst_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_incfirst_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_mvptr_recover __qam_mvptr_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_mvptr_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_del_recover __qam_del_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_del_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_delext_recover __qam_delext_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_delext_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_add_recover __qam_add_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_add_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_delete_recover __qam_delete_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_delete_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_rename_recover __qam_rename_recover@DB_VERSION_UNIQUE_NAME@
+int __qam_rename_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __qam_stat __qam_stat@DB_VERSION_UNIQUE_NAME@
+int __qam_stat __P((DB *, void *, u_int32_t));
+#define __qam_31_qammeta __qam_31_qammeta@DB_VERSION_UNIQUE_NAME@
+int __qam_31_qammeta __P((DB *, char *, u_int8_t *));
+#define __qam_32_qammeta __qam_32_qammeta@DB_VERSION_UNIQUE_NAME@
+int __qam_32_qammeta __P((DB *, char *, u_int8_t *));
+#define __qam_vrfy_meta __qam_vrfy_meta@DB_VERSION_UNIQUE_NAME@
+int __qam_vrfy_meta __P((DB *, VRFY_DBINFO *, QMETA *, db_pgno_t, u_int32_t));
+#define __qam_vrfy_data __qam_vrfy_data@DB_VERSION_UNIQUE_NAME@
+int __qam_vrfy_data __P((DB *, VRFY_DBINFO *, QPAGE *, db_pgno_t, u_int32_t));
+#define __qam_vrfy_structure __qam_vrfy_structure@DB_VERSION_UNIQUE_NAME@
+int __qam_vrfy_structure __P((DB *, VRFY_DBINFO *, u_int32_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _qam_ext_h_ */
diff --git a/db/include_auto/rpc_client_ext.h b/db/include_auto/rpc_client_ext.h
new file mode 100644
index 000000000..8908e5e26
--- /dev/null
+++ b/db/include_auto/rpc_client_ext.h
@@ -0,0 +1,153 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _rpc_client_ext_h_
+#define _rpc_client_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __dbcl_envrpcserver __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
+int __dbcl_envserver __P((DB_ENV *, const char *, long, long, u_int32_t));
+int __dbcl_env_open_wrap __P((DB_ENV *, const char *, u_int32_t, int));
+int __dbcl_refresh __P((DB_ENV *));
+void __dbcl_txn_end __P((DB_TXN *));
+void __dbcl_txn_setup __P((DB_ENV *, DB_TXN *, DB_TXN *, u_int32_t));
+void __dbcl_c_refresh __P((DBC *));
+int __dbcl_c_setup __P((long, DB *, DBC **));
+int __dbcl_retcopy __P((DB_ENV *, DBT *, void *, u_int32_t));
+int __dbcl_dbclose_common __P((DB *));
+int __dbcl_env_alloc __P((DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
+int __dbcl_env_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
+int __dbcl_env_close __P((DB_ENV *, u_int32_t));
+int __dbcl_env_create __P((DB_ENV *, long));
+int __dbcl_set_data_dir __P((DB_ENV *, const char *));
+int __dbcl_env_set_feedback __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
+int __dbcl_env_flags __P((DB_ENV *, u_int32_t, int));
+int __dbcl_set_lg_bsize __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lg_dir __P((DB_ENV *, const char *));
+int __dbcl_set_lg_max __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lg_regionmax __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lk_conflict __P((DB_ENV *, u_int8_t *, int));
+int __dbcl_set_lk_detect __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lk_max __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lk_max_locks __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
+int __dbcl_set_lk_max_objects __P((DB_ENV *, u_int32_t));
+int __dbcl_set_mp_mmapsize __P((DB_ENV *, size_t));
+int __dbcl_set_mutex_locks __P((DB_ENV *, int));
+int __dbcl_env_open __P((DB_ENV *, const char *, u_int32_t, int));
+int __dbcl_env_paniccall __P((DB_ENV *, void (*)(DB_ENV *, int)));
+int __dbcl_set_recovery_init __P((DB_ENV *, int (*)(DB_ENV *)));
+int __dbcl_env_remove __P((DB_ENV *, const char *, u_int32_t));
+int __dbcl_set_shm_key __P((DB_ENV *, long));
+int __dbcl_set_tmp_dir __P((DB_ENV *, const char *));
+int __dbcl_set_tx_recover __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
+int __dbcl_set_tx_max __P((DB_ENV *, u_int32_t));
+int __dbcl_set_tx_timestamp __P((DB_ENV *, time_t *));
+int __dbcl_set_verbose __P((DB_ENV *, u_int32_t, int));
+int __dbcl_txn_abort __P((DB_TXN *));
+int __dbcl_txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+int __dbcl_txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t));
+int __dbcl_txn_commit __P((DB_TXN *, u_int32_t));
+int __dbcl_txn_prepare __P((DB_TXN *, u_int8_t *));
+int __dbcl_txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+int __dbcl_txn_stat __P((DB_ENV *, DB_TXN_STAT **));
+int __dbcl_db_alloc __P((DB *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
+int __dbcl_db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+int __dbcl_db_bt_compare __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+int __dbcl_db_bt_maxkey __P((DB *, u_int32_t));
+int __dbcl_db_bt_minkey __P((DB *, u_int32_t));
+int __dbcl_db_bt_prefix __P((DB *, size_t(*)(DB *, const DBT *, const DBT *)));
+int __dbcl_db_set_append_recno __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
+int __dbcl_db_cachesize __P((DB *, u_int32_t, u_int32_t, int));
+int __dbcl_db_close __P((DB *, u_int32_t));
+int __dbcl_db_create __P((DB *, DB_ENV *, u_int32_t));
+int __dbcl_db_del __P((DB *, DB_TXN *, DBT *, u_int32_t));
+int __dbcl_db_extentsize __P((DB *, u_int32_t));
+int __dbcl_db_fd __P((DB *, int *));
+int __dbcl_db_feedback __P((DB *, void (*)(DB *, int, int)));
+int __dbcl_db_flags __P((DB *, u_int32_t));
+int __dbcl_db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+int __dbcl_db_h_ffactor __P((DB *, u_int32_t));
+int __dbcl_db_h_hash __P((DB *, u_int32_t(*)(DB *, const void *, u_int32_t)));
+int __dbcl_db_h_nelem __P((DB *, u_int32_t));
+int __dbcl_db_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+int __dbcl_db_lorder __P((DB *, int));
+int __dbcl_db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
+int __dbcl_db_pagesize __P((DB *, u_int32_t));
+int __dbcl_db_panic __P((DB *, void (*)(DB_ENV *, int)));
+int __dbcl_db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+int __dbcl_db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+int __dbcl_db_re_delim __P((DB *, int));
+int __dbcl_db_re_len __P((DB *, u_int32_t));
+int __dbcl_db_re_pad __P((DB *, int));
+int __dbcl_db_re_source __P((DB *, const char *));
+int __dbcl_db_remove __P((DB *, const char *, const char *, u_int32_t));
+int __dbcl_db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
+int __dbcl_db_stat __P((DB *, void *, u_int32_t));
+int __dbcl_db_sync __P((DB *, u_int32_t));
+int __dbcl_db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
+int __dbcl_db_upgrade __P((DB *, const char *, u_int32_t));
+int __dbcl_db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
+int __dbcl_db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
+int __dbcl_db_join __P((DB *, DBC **, DBC **, u_int32_t));
+int __dbcl_dbc_close __P((DBC *));
+int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
+int __dbcl_dbc_del __P((DBC *, u_int32_t));
+int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
+int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbcl_dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
+int __dbcl_lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+int __dbcl_lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+int __dbcl_lock_id __P((DB_ENV *, u_int32_t *));
+int __dbcl_lock_put __P((DB_ENV *, DB_LOCK *));
+int __dbcl_lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
+int __dbcl_lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+int __dbcl_log_archive __P((DB_ENV *, char ***, u_int32_t));
+int __dbcl_log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
+int __dbcl_log_flush __P((DB_ENV *, const DB_LSN *));
+int __dbcl_log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
+int __dbcl_log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+int __dbcl_log_register __P((DB_ENV *, DB *, const char *));
+int __dbcl_log_stat __P((DB_ENV *, DB_LOG_STAT **));
+int __dbcl_log_unregister __P((DB_ENV *, DB *));
+int __dbcl_memp_fclose __P((DB_MPOOLFILE *));
+int __dbcl_memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void **));
+int __dbcl_memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
+int __dbcl_memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
+int __dbcl_memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
+int __dbcl_memp_fsync __P((DB_MPOOLFILE *));
+int __dbcl_memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
+int __dbcl_memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
+int __dbcl_memp_sync __P((DB_ENV *, DB_LSN *));
+int __dbcl_memp_trickle __P((DB_ENV *, int, int *));
+int __dbcl_env_close_ret __P((DB_ENV *, u_int32_t, __env_close_reply *));
+int __dbcl_env_create_ret __P((DB_ENV *, long, __env_create_reply *));
+int __dbcl_env_open_ret __P((DB_ENV *, const char *, u_int32_t, int, __env_open_reply *));
+int __dbcl_env_remove_ret __P((DB_ENV *, const char *, u_int32_t, __env_remove_reply *));
+int __dbcl_txn_abort_ret __P((DB_TXN *, __txn_abort_reply *));
+int __dbcl_txn_begin_ret __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t, __txn_begin_reply *));
+int __dbcl_txn_commit_ret __P((DB_TXN *, u_int32_t, __txn_commit_reply *));
+int __dbcl_txn_recover_ret __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t, __txn_recover_reply *));
+int __dbcl_db_close_ret __P((DB *, u_int32_t, __db_close_reply *));
+int __dbcl_db_create_ret __P((DB *, DB_ENV *, u_int32_t, __db_create_reply *));
+int __dbcl_db_get_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_get_reply *));
+int __dbcl_db_key_range_ret __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t, __db_key_range_reply *));
+int __dbcl_db_open_ret __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int, __db_open_reply *));
+int __dbcl_db_pget_ret __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t, __db_pget_reply *));
+int __dbcl_db_put_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_put_reply *));
+int __dbcl_db_remove_ret __P((DB *, const char *, const char *, u_int32_t, __db_remove_reply *));
+int __dbcl_db_rename_ret __P((DB *, const char *, const char *, const char *, u_int32_t, __db_rename_reply *));
+int __dbcl_db_stat_ret __P((DB *, void *, u_int32_t, __db_stat_reply *));
+int __dbcl_db_truncate_ret __P((DB *, const char *, const char *, u_int32_t *, u_int32_t, __db_truncate_reply *));
+int __dbcl_db_cursor_ret __P((DB *, DB_TXN *, DBC **, u_int32_t, __db_cursor_reply *));
+int __dbcl_db_join_ret __P((DB *, DBC **, DBC **, u_int32_t, __db_join_reply *));
+int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
+int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
+int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
+int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
+int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t, __dbc_pget_reply *));
+int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _rpc_client_ext_h_ */
diff --git a/db/include_auto/rpc_client_ext.in b/db/include_auto/rpc_client_ext.in
new file mode 100644
index 000000000..4e0296aae
--- /dev/null
+++ b/db/include_auto/rpc_client_ext.in
@@ -0,0 +1,296 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _rpc_client_ext_h_
+#define _rpc_client_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __dbcl_envrpcserver __dbcl_envrpcserver@DB_VERSION_UNIQUE_NAME@
+int __dbcl_envrpcserver __P((DB_ENV *, void *, const char *, long, long, u_int32_t));
+#define __dbcl_envserver __dbcl_envserver@DB_VERSION_UNIQUE_NAME@
+int __dbcl_envserver __P((DB_ENV *, const char *, long, long, u_int32_t));
+#define __dbcl_env_open_wrap __dbcl_env_open_wrap@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_open_wrap __P((DB_ENV *, const char *, u_int32_t, int));
+#define __dbcl_refresh __dbcl_refresh@DB_VERSION_UNIQUE_NAME@
+int __dbcl_refresh __P((DB_ENV *));
+#define __dbcl_txn_end __dbcl_txn_end@DB_VERSION_UNIQUE_NAME@
+void __dbcl_txn_end __P((DB_TXN *));
+#define __dbcl_txn_setup __dbcl_txn_setup@DB_VERSION_UNIQUE_NAME@
+void __dbcl_txn_setup __P((DB_ENV *, DB_TXN *, DB_TXN *, u_int32_t));
+#define __dbcl_c_refresh __dbcl_c_refresh@DB_VERSION_UNIQUE_NAME@
+void __dbcl_c_refresh __P((DBC *));
+#define __dbcl_c_setup __dbcl_c_setup@DB_VERSION_UNIQUE_NAME@
+int __dbcl_c_setup __P((long, DB *, DBC **));
+#define __dbcl_retcopy __dbcl_retcopy@DB_VERSION_UNIQUE_NAME@
+int __dbcl_retcopy __P((DB_ENV *, DBT *, void *, u_int32_t));
+#define __dbcl_dbclose_common __dbcl_dbclose_common@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbclose_common __P((DB *));
+#define __dbcl_env_alloc __dbcl_env_alloc@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_alloc __P((DB_ENV *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
+#define __dbcl_env_cachesize __dbcl_env_cachesize@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_cachesize __P((DB_ENV *, u_int32_t, u_int32_t, int));
+#define __dbcl_env_close __dbcl_env_close@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_close __P((DB_ENV *, u_int32_t));
+#define __dbcl_env_create __dbcl_env_create@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_create __P((DB_ENV *, long));
+#define __dbcl_set_data_dir __dbcl_set_data_dir@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_data_dir __P((DB_ENV *, const char *));
+#define __dbcl_env_set_feedback __dbcl_env_set_feedback@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_set_feedback __P((DB_ENV *, void (*)(DB_ENV *, int, int)));
+#define __dbcl_env_flags __dbcl_env_flags@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_flags __P((DB_ENV *, u_int32_t, int));
+#define __dbcl_set_lg_bsize __dbcl_set_lg_bsize@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lg_bsize __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lg_dir __dbcl_set_lg_dir@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lg_dir __P((DB_ENV *, const char *));
+#define __dbcl_set_lg_max __dbcl_set_lg_max@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lg_max __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lg_regionmax __dbcl_set_lg_regionmax@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lg_regionmax __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lk_conflict __dbcl_set_lk_conflict@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lk_conflict __P((DB_ENV *, u_int8_t *, int));
+#define __dbcl_set_lk_detect __dbcl_set_lk_detect@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lk_detect __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lk_max __dbcl_set_lk_max@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lk_max __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lk_max_locks __dbcl_set_lk_max_locks@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lk_max_locks __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lk_max_lockers __dbcl_set_lk_max_lockers@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lk_max_lockers __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_lk_max_objects __dbcl_set_lk_max_objects@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_lk_max_objects __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_mp_mmapsize __dbcl_set_mp_mmapsize@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_mp_mmapsize __P((DB_ENV *, size_t));
+#define __dbcl_set_mutex_locks __dbcl_set_mutex_locks@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_mutex_locks __P((DB_ENV *, int));
+#define __dbcl_env_open __dbcl_env_open@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_open __P((DB_ENV *, const char *, u_int32_t, int));
+#define __dbcl_env_paniccall __dbcl_env_paniccall@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_paniccall __P((DB_ENV *, void (*)(DB_ENV *, int)));
+#define __dbcl_set_recovery_init __dbcl_set_recovery_init@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_recovery_init __P((DB_ENV *, int (*)(DB_ENV *)));
+#define __dbcl_env_remove __dbcl_env_remove@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_remove __P((DB_ENV *, const char *, u_int32_t));
+#define __dbcl_set_shm_key __dbcl_set_shm_key@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_shm_key __P((DB_ENV *, long));
+#define __dbcl_set_tmp_dir __dbcl_set_tmp_dir@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_tmp_dir __P((DB_ENV *, const char *));
+#define __dbcl_set_tx_recover __dbcl_set_tx_recover@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_tx_recover __P((DB_ENV *, int (*)(DB_ENV *, DBT *, DB_LSN *, db_recops)));
+#define __dbcl_set_tx_max __dbcl_set_tx_max@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_tx_max __P((DB_ENV *, u_int32_t));
+#define __dbcl_set_tx_timestamp __dbcl_set_tx_timestamp@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_tx_timestamp __P((DB_ENV *, time_t *));
+#define __dbcl_set_verbose __dbcl_set_verbose@DB_VERSION_UNIQUE_NAME@
+int __dbcl_set_verbose __P((DB_ENV *, u_int32_t, int));
+#define __dbcl_txn_abort __dbcl_txn_abort@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_abort __P((DB_TXN *));
+#define __dbcl_txn_begin __dbcl_txn_begin@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_begin __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t));
+#define __dbcl_txn_checkpoint __dbcl_txn_checkpoint@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_checkpoint __P((DB_ENV *, u_int32_t, u_int32_t));
+#define __dbcl_txn_commit __dbcl_txn_commit@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_commit __P((DB_TXN *, u_int32_t));
+#define __dbcl_txn_prepare __dbcl_txn_prepare@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_prepare __P((DB_TXN *, u_int8_t *));
+#define __dbcl_txn_recover __dbcl_txn_recover@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_recover __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+#define __dbcl_txn_stat __dbcl_txn_stat@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_stat __P((DB_ENV *, DB_TXN_STAT **));
+#define __dbcl_db_alloc __dbcl_db_alloc@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_alloc __P((DB *, void *(*)(size_t), void *(*)(void *, size_t), void (*)(void *)));
+#define __dbcl_db_associate __dbcl_db_associate@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_associate __P((DB *, DB *, int (*)(DB *, const DBT *, const DBT *, DBT *), u_int32_t));
+#define __dbcl_db_bt_compare __dbcl_db_bt_compare@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_bt_compare __P((DB *, int (*)(DB *, const DBT *, const DBT *)));
+#define __dbcl_db_bt_maxkey __dbcl_db_bt_maxkey@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_bt_maxkey __P((DB *, u_int32_t));
+#define __dbcl_db_bt_minkey __dbcl_db_bt_minkey@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_bt_minkey __P((DB *, u_int32_t));
+#define __dbcl_db_bt_prefix __dbcl_db_bt_prefix@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_bt_prefix __P((DB *, size_t(*)(DB *, const DBT *, const DBT *)));
+#define __dbcl_db_set_append_recno __dbcl_db_set_append_recno@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_set_append_recno __P((DB *, int (*)(DB *, DBT *, db_recno_t)));
+#define __dbcl_db_cachesize __dbcl_db_cachesize@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_cachesize __P((DB *, u_int32_t, u_int32_t, int));
+#define __dbcl_db_close __dbcl_db_close@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_close __P((DB *, u_int32_t));
+#define __dbcl_db_create __dbcl_db_create@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_create __P((DB *, DB_ENV *, u_int32_t));
+#define __dbcl_db_del __dbcl_db_del@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_del __P((DB *, DB_TXN *, DBT *, u_int32_t));
+#define __dbcl_db_extentsize __dbcl_db_extentsize@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_extentsize __P((DB *, u_int32_t));
+#define __dbcl_db_fd __dbcl_db_fd@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_fd __P((DB *, int *));
+#define __dbcl_db_feedback __dbcl_db_feedback@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_feedback __P((DB *, void (*)(DB *, int, int)));
+#define __dbcl_db_flags __dbcl_db_flags@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_flags __P((DB *, u_int32_t));
+#define __dbcl_db_get __dbcl_db_get@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+#define __dbcl_db_h_ffactor __dbcl_db_h_ffactor@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_h_ffactor __P((DB *, u_int32_t));
+#define __dbcl_db_h_hash __dbcl_db_h_hash@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_h_hash __P((DB *, u_int32_t(*)(DB *, const void *, u_int32_t)));
+#define __dbcl_db_h_nelem __dbcl_db_h_nelem@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_h_nelem __P((DB *, u_int32_t));
+#define __dbcl_db_key_range __dbcl_db_key_range@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_key_range __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t));
+#define __dbcl_db_lorder __dbcl_db_lorder@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_lorder __P((DB *, int));
+#define __dbcl_db_open __dbcl_db_open@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_open __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int));
+#define __dbcl_db_pagesize __dbcl_db_pagesize@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_pagesize __P((DB *, u_int32_t));
+#define __dbcl_db_panic __dbcl_db_panic@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_panic __P((DB *, void (*)(DB_ENV *, int)));
+#define __dbcl_db_pget __dbcl_db_pget@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_pget __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t));
+#define __dbcl_db_put __dbcl_db_put@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t));
+#define __dbcl_db_re_delim __dbcl_db_re_delim@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_re_delim __P((DB *, int));
+#define __dbcl_db_re_len __dbcl_db_re_len@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_re_len __P((DB *, u_int32_t));
+#define __dbcl_db_re_pad __dbcl_db_re_pad@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_re_pad __P((DB *, int));
+#define __dbcl_db_re_source __dbcl_db_re_source@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_re_source __P((DB *, const char *));
+#define __dbcl_db_remove __dbcl_db_remove@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_remove __P((DB *, const char *, const char *, u_int32_t));
+#define __dbcl_db_rename __dbcl_db_rename@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_rename __P((DB *, const char *, const char *, const char *, u_int32_t));
+#define __dbcl_db_stat __dbcl_db_stat@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_stat __P((DB *, void *, u_int32_t));
+#define __dbcl_db_sync __dbcl_db_sync@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_sync __P((DB *, u_int32_t));
+#define __dbcl_db_truncate __dbcl_db_truncate@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_truncate __P((DB *, const char *, const char *, u_int32_t *, u_int32_t));
+#define __dbcl_db_upgrade __dbcl_db_upgrade@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_upgrade __P((DB *, const char *, u_int32_t));
+#define __dbcl_db_verify __dbcl_db_verify@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_verify __P((DB *, const char *, const char *, FILE *, u_int32_t));
+#define __dbcl_db_cursor __dbcl_db_cursor@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_cursor __P((DB *, DB_TXN *, DBC **, u_int32_t));
+#define __dbcl_db_join __dbcl_db_join@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_join __P((DB *, DBC **, DBC **, u_int32_t));
+#define __dbcl_dbc_close __dbcl_dbc_close@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_close __P((DBC *));
+#define __dbcl_dbc_count __dbcl_dbc_count@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_count __P((DBC *, db_recno_t *, u_int32_t));
+#define __dbcl_dbc_del __dbcl_dbc_del@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_del __P((DBC *, u_int32_t));
+#define __dbcl_dbc_dup __dbcl_dbc_dup@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_dup __P((DBC *, DBC **, u_int32_t));
+#define __dbcl_dbc_get __dbcl_dbc_get@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_get __P((DBC *, DBT *, DBT *, u_int32_t));
+#define __dbcl_dbc_pget __dbcl_dbc_pget@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_pget __P((DBC *, DBT *, DBT *, DBT *, u_int32_t));
+#define __dbcl_dbc_put __dbcl_dbc_put@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_put __P((DBC *, DBT *, DBT *, u_int32_t));
+#define __dbcl_lock_detect __dbcl_lock_detect@DB_VERSION_UNIQUE_NAME@
+int __dbcl_lock_detect __P((DB_ENV *, u_int32_t, u_int32_t, int *));
+#define __dbcl_lock_get __dbcl_lock_get@DB_VERSION_UNIQUE_NAME@
+int __dbcl_lock_get __P((DB_ENV *, u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *));
+#define __dbcl_lock_id __dbcl_lock_id@DB_VERSION_UNIQUE_NAME@
+int __dbcl_lock_id __P((DB_ENV *, u_int32_t *));
+#define __dbcl_lock_put __dbcl_lock_put@DB_VERSION_UNIQUE_NAME@
+int __dbcl_lock_put __P((DB_ENV *, DB_LOCK *));
+#define __dbcl_lock_stat __dbcl_lock_stat@DB_VERSION_UNIQUE_NAME@
+int __dbcl_lock_stat __P((DB_ENV *, DB_LOCK_STAT **));
+#define __dbcl_lock_vec __dbcl_lock_vec@DB_VERSION_UNIQUE_NAME@
+int __dbcl_lock_vec __P((DB_ENV *, u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **));
+#define __dbcl_log_archive __dbcl_log_archive@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_archive __P((DB_ENV *, char ***, u_int32_t));
+#define __dbcl_log_file __dbcl_log_file@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_file __P((DB_ENV *, const DB_LSN *, char *, size_t));
+#define __dbcl_log_flush __dbcl_log_flush@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_flush __P((DB_ENV *, const DB_LSN *));
+#define __dbcl_log_get __dbcl_log_get@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_get __P((DB_ENV *, DB_LSN *, DBT *, u_int32_t));
+#define __dbcl_log_put __dbcl_log_put@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_put __P((DB_ENV *, DB_LSN *, const DBT *, u_int32_t));
+#define __dbcl_log_register __dbcl_log_register@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_register __P((DB_ENV *, DB *, const char *));
+#define __dbcl_log_stat __dbcl_log_stat@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_stat __P((DB_ENV *, DB_LOG_STAT **));
+#define __dbcl_log_unregister __dbcl_log_unregister@DB_VERSION_UNIQUE_NAME@
+int __dbcl_log_unregister __P((DB_ENV *, DB *));
+#define __dbcl_memp_fclose __dbcl_memp_fclose@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_fclose __P((DB_MPOOLFILE *));
+#define __dbcl_memp_fget __dbcl_memp_fget@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void **));
+#define __dbcl_memp_fopen __dbcl_memp_fopen@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_fopen __P((DB_ENV *, const char *, u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **));
+#define __dbcl_memp_fput __dbcl_memp_fput@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t));
+#define __dbcl_memp_fset __dbcl_memp_fset@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t));
+#define __dbcl_memp_fsync __dbcl_memp_fsync@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_fsync __P((DB_MPOOLFILE *));
+#define __dbcl_memp_register __dbcl_memp_register@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_register __P((DB_ENV *, int, int (*)(DB_ENV *, db_pgno_t, void *, DBT *), int (*)(DB_ENV *, db_pgno_t, void *, DBT *)));
+#define __dbcl_memp_stat __dbcl_memp_stat@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_stat __P((DB_ENV *, DB_MPOOL_STAT **, DB_MPOOL_FSTAT ***));
+#define __dbcl_memp_sync __dbcl_memp_sync@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_sync __P((DB_ENV *, DB_LSN *));
+#define __dbcl_memp_trickle __dbcl_memp_trickle@DB_VERSION_UNIQUE_NAME@
+int __dbcl_memp_trickle __P((DB_ENV *, int, int *));
+#define __dbcl_env_close_ret __dbcl_env_close_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_close_ret __P((DB_ENV *, u_int32_t, __env_close_reply *));
+#define __dbcl_env_create_ret __dbcl_env_create_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_create_ret __P((DB_ENV *, long, __env_create_reply *));
+#define __dbcl_env_open_ret __dbcl_env_open_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_open_ret __P((DB_ENV *, const char *, u_int32_t, int, __env_open_reply *));
+#define __dbcl_env_remove_ret __dbcl_env_remove_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_env_remove_ret __P((DB_ENV *, const char *, u_int32_t, __env_remove_reply *));
+#define __dbcl_txn_abort_ret __dbcl_txn_abort_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_abort_ret __P((DB_TXN *, __txn_abort_reply *));
+#define __dbcl_txn_begin_ret __dbcl_txn_begin_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_begin_ret __P((DB_ENV *, DB_TXN *, DB_TXN **, u_int32_t, __txn_begin_reply *));
+#define __dbcl_txn_commit_ret __dbcl_txn_commit_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_commit_ret __P((DB_TXN *, u_int32_t, __txn_commit_reply *));
+#define __dbcl_txn_recover_ret __dbcl_txn_recover_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_txn_recover_ret __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t, __txn_recover_reply *));
+#define __dbcl_db_close_ret __dbcl_db_close_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_close_ret __P((DB *, u_int32_t, __db_close_reply *));
+#define __dbcl_db_create_ret __dbcl_db_create_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_create_ret __P((DB *, DB_ENV *, u_int32_t, __db_create_reply *));
+#define __dbcl_db_get_ret __dbcl_db_get_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_get_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_get_reply *));
+#define __dbcl_db_key_range_ret __dbcl_db_key_range_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_key_range_ret __P((DB *, DB_TXN *, DBT *, DB_KEY_RANGE *, u_int32_t, __db_key_range_reply *));
+#define __dbcl_db_open_ret __dbcl_db_open_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_open_ret __P((DB *, const char *, const char *, DBTYPE, u_int32_t, int, __db_open_reply *));
+#define __dbcl_db_pget_ret __dbcl_db_pget_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_pget_ret __P((DB *, DB_TXN *, DBT *, DBT *, DBT *, u_int32_t, __db_pget_reply *));
+#define __dbcl_db_put_ret __dbcl_db_put_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_put_ret __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t, __db_put_reply *));
+#define __dbcl_db_remove_ret __dbcl_db_remove_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_remove_ret __P((DB *, const char *, const char *, u_int32_t, __db_remove_reply *));
+#define __dbcl_db_rename_ret __dbcl_db_rename_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_rename_ret __P((DB *, const char *, const char *, const char *, u_int32_t, __db_rename_reply *));
+#define __dbcl_db_stat_ret __dbcl_db_stat_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_stat_ret __P((DB *, void *, u_int32_t, __db_stat_reply *));
+#define __dbcl_db_truncate_ret __dbcl_db_truncate_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_truncate_ret __P((DB *, const char *, const char *, u_int32_t *, u_int32_t, __db_truncate_reply *));
+#define __dbcl_db_cursor_ret __dbcl_db_cursor_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_cursor_ret __P((DB *, DB_TXN *, DBC **, u_int32_t, __db_cursor_reply *));
+#define __dbcl_db_join_ret __dbcl_db_join_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_db_join_ret __P((DB *, DBC **, DBC **, u_int32_t, __db_join_reply *));
+#define __dbcl_dbc_close_ret __dbcl_dbc_close_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_close_ret __P((DBC *, __dbc_close_reply *));
+#define __dbcl_dbc_count_ret __dbcl_dbc_count_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_count_ret __P((DBC *, db_recno_t *, u_int32_t, __dbc_count_reply *));
+#define __dbcl_dbc_dup_ret __dbcl_dbc_dup_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_dup_ret __P((DBC *, DBC **, u_int32_t, __dbc_dup_reply *));
+#define __dbcl_dbc_get_ret __dbcl_dbc_get_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_get_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_get_reply *));
+#define __dbcl_dbc_pget_ret __dbcl_dbc_pget_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_pget_ret __P((DBC *, DBT *, DBT *, DBT *, u_int32_t, __dbc_pget_reply *));
+#define __dbcl_dbc_put_ret __dbcl_dbc_put_ret@DB_VERSION_UNIQUE_NAME@
+int __dbcl_dbc_put_ret __P((DBC *, DBT *, DBT *, u_int32_t, __dbc_put_reply *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _rpc_client_ext_h_ */
diff --git a/db/include_auto/rpc_defs.in b/db/include_auto/rpc_defs.in
new file mode 100644
index 000000000..daf1949f2
--- /dev/null
+++ b/db/include_auto/rpc_defs.in
@@ -0,0 +1,4 @@
+
+/* DO NOT EDIT: automatically built by dist/s_rpc. */
+#define DB_RPC_SERVERPROG ((unsigned long)(351457))
+#define DB_RPC_SERVERVERS ((unsigned long)(3003))
diff --git a/db/include_auto/rpc_server_ext.h b/db/include_auto/rpc_server_ext.h
new file mode 100644
index 000000000..c26355db8
--- /dev/null
+++ b/db/include_auto/rpc_server_ext.h
@@ -0,0 +1,110 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _rpc_server_ext_h_
+#define _rpc_server_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+void __env_cachesize_proc __P((long, u_int32_t, u_int32_t, u_int32_t, __env_cachesize_reply *));
+void __env_close_proc __P((long, u_int32_t, __env_close_reply *));
+void __env_create_proc __P((u_int32_t, __env_create_reply *));
+void __env_flags_proc __P((long, u_int32_t, u_int32_t, __env_flags_reply *));
+void __env_open_proc __P((long, char *, u_int32_t, u_int32_t, __env_open_reply *));
+void __env_remove_proc __P((long, char *, u_int32_t, __env_remove_reply *));
+void __txn_abort_proc __P((long, __txn_abort_reply *));
+void __txn_begin_proc __P((long, long, u_int32_t, __txn_begin_reply *));
+void __txn_commit_proc __P((long, u_int32_t, __txn_commit_reply *));
+void __txn_prepare_proc __P((long, u_int8_t *, __txn_prepare_reply *));
+void __txn_recover_proc __P((long, u_int32_t, u_int32_t, __txn_recover_reply *, int *));
+void __db_bt_maxkey_proc __P((long, u_int32_t, __db_bt_maxkey_reply *));
+void __db_associate_proc __P((long, long, u_int32_t, __db_associate_reply *));
+void __db_bt_minkey_proc __P((long, u_int32_t, __db_bt_minkey_reply *));
+void __db_close_proc __P((long, u_int32_t, __db_close_reply *));
+void __db_create_proc __P((long, u_int32_t, __db_create_reply *));
+void __db_del_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_del_reply *));
+void __db_extentsize_proc __P((long, u_int32_t, __db_extentsize_reply *));
+void __db_flags_proc __P((long, u_int32_t, __db_flags_reply *));
+void __db_get_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_get_reply *, int *));
+void __db_h_ffactor_proc __P((long, u_int32_t, __db_h_ffactor_reply *));
+void __db_h_nelem_proc __P((long, u_int32_t, __db_h_nelem_reply *));
+void __db_key_range_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_key_range_reply *));
+void __db_lorder_proc __P((long, u_int32_t, __db_lorder_reply *));
+void __db_open_proc __P((long, char *, char *, u_int32_t, u_int32_t, u_int32_t, __db_open_reply *));
+void __db_pagesize_proc __P((long, u_int32_t, __db_pagesize_reply *));
+void __db_pget_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_pget_reply *, int *));
+void __db_put_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_put_reply *, int *));
+void __db_re_delim_proc __P((long, u_int32_t, __db_re_delim_reply *));
+void __db_re_len_proc __P((long, u_int32_t, __db_re_len_reply *));
+void __db_re_pad_proc __P((long, u_int32_t, __db_re_pad_reply *));
+void __db_remove_proc __P((long, char *, char *, u_int32_t, __db_remove_reply *));
+void __db_rename_proc __P((long, char *, char *, char *, u_int32_t, __db_rename_reply *));
+void __db_stat_proc __P((long, u_int32_t, __db_stat_reply *, int *));
+void __db_sync_proc __P((long, u_int32_t, __db_sync_reply *));
+void __db_truncate_proc __P((long, char *, char *, u_int32_t, __db_truncate_reply *));
+void __db_cursor_proc __P((long, long, u_int32_t, __db_cursor_reply *));
+void __db_join_proc __P((long, u_int32_t *, u_int32_t, u_int32_t, __db_join_reply *));
+void __dbc_close_proc __P((long, __dbc_close_reply *));
+void __dbc_count_proc __P((long, u_int32_t, __dbc_count_reply *));
+void __dbc_del_proc __P((long, u_int32_t, __dbc_del_reply *));
+void __dbc_dup_proc __P((long, u_int32_t, __dbc_dup_reply *));
+void __dbc_get_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_get_reply *, int *));
+void __dbc_pget_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_pget_reply *, int *));
+void __dbc_put_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_put_reply *, int *));
+void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
+void __dbsrv_timeout __P((int));
+void __dbclear_ctp __P((ct_entry *));
+void __dbdel_ctp __P((ct_entry *));
+ct_entry *new_ct_ent __P((int *));
+ct_entry *get_tableent __P((long));
+void __dbsrv_active __P((ct_entry *));
+int __dbc_close_int __P((ct_entry *));
+int __dbenv_close_int __P((long, int));
+char *get_home __P((char *));
+__env_cachesize_reply *__db_env_cachesize_3003 __P((__env_cachesize_msg *));
+__env_close_reply *__db_env_close_3003 __P((__env_close_msg *));
+__env_create_reply *__db_env_create_3003 __P((__env_create_msg *));
+__env_flags_reply *__db_env_flags_3003 __P((__env_flags_msg *));
+__env_open_reply *__db_env_open_3003 __P((__env_open_msg *));
+__env_remove_reply *__db_env_remove_3003 __P((__env_remove_msg *));
+__txn_abort_reply *__db_txn_abort_3003 __P((__txn_abort_msg *));
+__txn_begin_reply *__db_txn_begin_3003 __P((__txn_begin_msg *));
+__txn_commit_reply *__db_txn_commit_3003 __P((__txn_commit_msg *));
+__txn_prepare_reply *__db_txn_prepare_3003 __P((__txn_prepare_msg *));
+__txn_recover_reply *__db_txn_recover_3003 __P((__txn_recover_msg *));
+__db_associate_reply *__db_db_associate_3003 __P((__db_associate_msg *));
+__db_bt_maxkey_reply *__db_db_bt_maxkey_3003 __P((__db_bt_maxkey_msg *));
+__db_bt_minkey_reply *__db_db_bt_minkey_3003 __P((__db_bt_minkey_msg *));
+__db_close_reply *__db_db_close_3003 __P((__db_close_msg *));
+__db_create_reply *__db_db_create_3003 __P((__db_create_msg *));
+__db_del_reply *__db_db_del_3003 __P((__db_del_msg *));
+__db_extentsize_reply *__db_db_extentsize_3003 __P((__db_extentsize_msg *));
+__db_flags_reply *__db_db_flags_3003 __P((__db_flags_msg *));
+__db_get_reply *__db_db_get_3003 __P((__db_get_msg *));
+__db_h_ffactor_reply *__db_db_h_ffactor_3003 __P((__db_h_ffactor_msg *));
+__db_h_nelem_reply *__db_db_h_nelem_3003 __P((__db_h_nelem_msg *));
+__db_key_range_reply *__db_db_key_range_3003 __P((__db_key_range_msg *));
+__db_lorder_reply *__db_db_lorder_3003 __P((__db_lorder_msg *));
+__db_open_reply *__db_db_open_3003 __P((__db_open_msg *));
+__db_pagesize_reply *__db_db_pagesize_3003 __P((__db_pagesize_msg *));
+__db_pget_reply *__db_db_pget_3003 __P((__db_pget_msg *));
+__db_put_reply *__db_db_put_3003 __P((__db_put_msg *));
+__db_re_delim_reply *__db_db_re_delim_3003 __P((__db_re_delim_msg *));
+__db_re_len_reply *__db_db_re_len_3003 __P((__db_re_len_msg *));
+__db_re_pad_reply *__db_db_re_pad_3003 __P((__db_re_pad_msg *));
+__db_remove_reply *__db_db_remove_3003 __P((__db_remove_msg *));
+__db_rename_reply *__db_db_rename_3003 __P((__db_rename_msg *));
+__db_stat_reply *__db_db_stat_3003 __P((__db_stat_msg *));
+__db_sync_reply *__db_db_sync_3003 __P((__db_sync_msg *));
+__db_truncate_reply *__db_db_truncate_3003 __P((__db_truncate_msg *));
+__db_cursor_reply *__db_db_cursor_3003 __P((__db_cursor_msg *));
+__db_join_reply *__db_db_join_3003 __P((__db_join_msg *));
+__dbc_close_reply *__db_dbc_close_3003 __P((__dbc_close_msg *));
+__dbc_count_reply *__db_dbc_count_3003 __P((__dbc_count_msg *));
+__dbc_del_reply *__db_dbc_del_3003 __P((__dbc_del_msg *));
+__dbc_dup_reply *__db_dbc_dup_3003 __P((__dbc_dup_msg *));
+__dbc_get_reply *__db_dbc_get_3003 __P((__dbc_get_msg *));
+__dbc_pget_reply *__db_dbc_pget_3003 __P((__dbc_pget_msg *));
+__dbc_put_reply *__db_dbc_put_3003 __P((__dbc_put_msg *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _rpc_server_ext_h_ */
diff --git a/db/include_auto/rpc_server_ext.in b/db/include_auto/rpc_server_ext.in
new file mode 100644
index 000000000..898627ea4
--- /dev/null
+++ b/db/include_auto/rpc_server_ext.in
@@ -0,0 +1,165 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _rpc_server_ext_h_
+#define _rpc_server_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __env_cachesize_proc __env_cachesize_proc@DB_VERSION_UNIQUE_NAME@
+void __env_cachesize_proc __P((long, u_int32_t, u_int32_t, u_int32_t, __env_cachesize_reply *));
+#define __env_close_proc __env_close_proc@DB_VERSION_UNIQUE_NAME@
+void __env_close_proc __P((long, u_int32_t, __env_close_reply *));
+#define __env_create_proc __env_create_proc@DB_VERSION_UNIQUE_NAME@
+void __env_create_proc __P((u_int32_t, __env_create_reply *));
+#define __env_flags_proc __env_flags_proc@DB_VERSION_UNIQUE_NAME@
+void __env_flags_proc __P((long, u_int32_t, u_int32_t, __env_flags_reply *));
+#define __env_open_proc __env_open_proc@DB_VERSION_UNIQUE_NAME@
+void __env_open_proc __P((long, char *, u_int32_t, u_int32_t, __env_open_reply *));
+#define __env_remove_proc __env_remove_proc@DB_VERSION_UNIQUE_NAME@
+void __env_remove_proc __P((long, char *, u_int32_t, __env_remove_reply *));
+#define __txn_abort_proc __txn_abort_proc@DB_VERSION_UNIQUE_NAME@
+void __txn_abort_proc __P((long, __txn_abort_reply *));
+#define __txn_begin_proc __txn_begin_proc@DB_VERSION_UNIQUE_NAME@
+void __txn_begin_proc __P((long, long, u_int32_t, __txn_begin_reply *));
+#define __txn_commit_proc __txn_commit_proc@DB_VERSION_UNIQUE_NAME@
+void __txn_commit_proc __P((long, u_int32_t, __txn_commit_reply *));
+#define __txn_prepare_proc __txn_prepare_proc@DB_VERSION_UNIQUE_NAME@
+void __txn_prepare_proc __P((long, u_int8_t *, __txn_prepare_reply *));
+#define __txn_recover_proc __txn_recover_proc@DB_VERSION_UNIQUE_NAME@
+void __txn_recover_proc __P((long, u_int32_t, u_int32_t, __txn_recover_reply *, int *));
+#define __db_bt_maxkey_proc __db_bt_maxkey_proc@DB_VERSION_UNIQUE_NAME@
+void __db_bt_maxkey_proc __P((long, u_int32_t, __db_bt_maxkey_reply *));
+#define __db_associate_proc __db_associate_proc@DB_VERSION_UNIQUE_NAME@
+void __db_associate_proc __P((long, long, u_int32_t, __db_associate_reply *));
+#define __db_bt_minkey_proc __db_bt_minkey_proc@DB_VERSION_UNIQUE_NAME@
+void __db_bt_minkey_proc __P((long, u_int32_t, __db_bt_minkey_reply *));
+#define __db_close_proc __db_close_proc@DB_VERSION_UNIQUE_NAME@
+void __db_close_proc __P((long, u_int32_t, __db_close_reply *));
+#define __db_create_proc __db_create_proc@DB_VERSION_UNIQUE_NAME@
+void __db_create_proc __P((long, u_int32_t, __db_create_reply *));
+#define __db_del_proc __db_del_proc@DB_VERSION_UNIQUE_NAME@
+void __db_del_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_del_reply *));
+#define __db_extentsize_proc __db_extentsize_proc@DB_VERSION_UNIQUE_NAME@
+void __db_extentsize_proc __P((long, u_int32_t, __db_extentsize_reply *));
+#define __db_flags_proc __db_flags_proc@DB_VERSION_UNIQUE_NAME@
+void __db_flags_proc __P((long, u_int32_t, __db_flags_reply *));
+#define __db_get_proc __db_get_proc@DB_VERSION_UNIQUE_NAME@
+void __db_get_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_get_reply *, int *));
+#define __db_h_ffactor_proc __db_h_ffactor_proc@DB_VERSION_UNIQUE_NAME@
+void __db_h_ffactor_proc __P((long, u_int32_t, __db_h_ffactor_reply *));
+#define __db_h_nelem_proc __db_h_nelem_proc@DB_VERSION_UNIQUE_NAME@
+void __db_h_nelem_proc __P((long, u_int32_t, __db_h_nelem_reply *));
+#define __db_key_range_proc __db_key_range_proc@DB_VERSION_UNIQUE_NAME@
+void __db_key_range_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_key_range_reply *));
+#define __db_lorder_proc __db_lorder_proc@DB_VERSION_UNIQUE_NAME@
+void __db_lorder_proc __P((long, u_int32_t, __db_lorder_reply *));
+#define __db_open_proc __db_open_proc@DB_VERSION_UNIQUE_NAME@
+void __db_open_proc __P((long, char *, char *, u_int32_t, u_int32_t, u_int32_t, __db_open_reply *));
+#define __db_pagesize_proc __db_pagesize_proc@DB_VERSION_UNIQUE_NAME@
+void __db_pagesize_proc __P((long, u_int32_t, __db_pagesize_reply *));
+#define __db_pget_proc __db_pget_proc@DB_VERSION_UNIQUE_NAME@
+void __db_pget_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_pget_reply *, int *));
+#define __db_put_proc __db_put_proc@DB_VERSION_UNIQUE_NAME@
+void __db_put_proc __P((long, long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __db_put_reply *, int *));
+#define __db_re_delim_proc __db_re_delim_proc@DB_VERSION_UNIQUE_NAME@
+void __db_re_delim_proc __P((long, u_int32_t, __db_re_delim_reply *));
+#define __db_re_len_proc __db_re_len_proc@DB_VERSION_UNIQUE_NAME@
+void __db_re_len_proc __P((long, u_int32_t, __db_re_len_reply *));
+#define __db_re_pad_proc __db_re_pad_proc@DB_VERSION_UNIQUE_NAME@
+void __db_re_pad_proc __P((long, u_int32_t, __db_re_pad_reply *));
+#define __db_remove_proc __db_remove_proc@DB_VERSION_UNIQUE_NAME@
+void __db_remove_proc __P((long, char *, char *, u_int32_t, __db_remove_reply *));
+#define __db_rename_proc __db_rename_proc@DB_VERSION_UNIQUE_NAME@
+void __db_rename_proc __P((long, char *, char *, char *, u_int32_t, __db_rename_reply *));
+#define __db_stat_proc __db_stat_proc@DB_VERSION_UNIQUE_NAME@
+void __db_stat_proc __P((long, u_int32_t, __db_stat_reply *, int *));
+#define __db_sync_proc __db_sync_proc@DB_VERSION_UNIQUE_NAME@
+void __db_sync_proc __P((long, u_int32_t, __db_sync_reply *));
+#define __db_truncate_proc __db_truncate_proc@DB_VERSION_UNIQUE_NAME@
+void __db_truncate_proc __P((long, char *, char *, u_int32_t, __db_truncate_reply *));
+#define __db_cursor_proc __db_cursor_proc@DB_VERSION_UNIQUE_NAME@
+void __db_cursor_proc __P((long, long, u_int32_t, __db_cursor_reply *));
+#define __db_join_proc __db_join_proc@DB_VERSION_UNIQUE_NAME@
+void __db_join_proc __P((long, u_int32_t *, u_int32_t, u_int32_t, __db_join_reply *));
+#define __dbc_close_proc __dbc_close_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_close_proc __P((long, __dbc_close_reply *));
+#define __dbc_count_proc __dbc_count_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_count_proc __P((long, u_int32_t, __dbc_count_reply *));
+#define __dbc_del_proc __dbc_del_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_del_proc __P((long, u_int32_t, __dbc_del_reply *));
+#define __dbc_dup_proc __dbc_dup_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_dup_proc __P((long, u_int32_t, __dbc_dup_reply *));
+#define __dbc_get_proc __dbc_get_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_get_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_get_reply *, int *));
+#define __dbc_pget_proc __dbc_pget_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_pget_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_pget_reply *, int *));
+#define __dbc_put_proc __dbc_put_proc@DB_VERSION_UNIQUE_NAME@
+void __dbc_put_proc __P((long, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, u_int32_t, u_int32_t, void *, u_int32_t, u_int32_t, __dbc_put_reply *, int *));
+#define __dbsrv_settimeout __dbsrv_settimeout@DB_VERSION_UNIQUE_NAME@
+void __dbsrv_settimeout __P((ct_entry *, u_int32_t));
+#define __dbsrv_timeout __dbsrv_timeout@DB_VERSION_UNIQUE_NAME@
+void __dbsrv_timeout __P((int));
+#define __dbclear_ctp __dbclear_ctp@DB_VERSION_UNIQUE_NAME@
+void __dbclear_ctp __P((ct_entry *));
+#define __dbdel_ctp __dbdel_ctp@DB_VERSION_UNIQUE_NAME@
+void __dbdel_ctp __P((ct_entry *));
+#define new_ct_ent new_ct_ent@DB_VERSION_UNIQUE_NAME@
+ct_entry *new_ct_ent __P((int *));
+#define get_tableent get_tableent@DB_VERSION_UNIQUE_NAME@
+ct_entry *get_tableent __P((long));
+#define __dbsrv_active __dbsrv_active@DB_VERSION_UNIQUE_NAME@
+void __dbsrv_active __P((ct_entry *));
+#define __dbc_close_int __dbc_close_int@DB_VERSION_UNIQUE_NAME@
+int __dbc_close_int __P((ct_entry *));
+#define __dbenv_close_int __dbenv_close_int@DB_VERSION_UNIQUE_NAME@
+int __dbenv_close_int __P((long, int));
+#define get_home get_home@DB_VERSION_UNIQUE_NAME@
+char *get_home __P((char *));
+__env_cachesize_reply *__db_env_cachesize_3003 __P((__env_cachesize_msg *));
+__env_close_reply *__db_env_close_3003 __P((__env_close_msg *));
+__env_create_reply *__db_env_create_3003 __P((__env_create_msg *));
+__env_flags_reply *__db_env_flags_3003 __P((__env_flags_msg *));
+__env_open_reply *__db_env_open_3003 __P((__env_open_msg *));
+__env_remove_reply *__db_env_remove_3003 __P((__env_remove_msg *));
+__txn_abort_reply *__db_txn_abort_3003 __P((__txn_abort_msg *));
+__txn_begin_reply *__db_txn_begin_3003 __P((__txn_begin_msg *));
+__txn_commit_reply *__db_txn_commit_3003 __P((__txn_commit_msg *));
+__txn_prepare_reply *__db_txn_prepare_3003 __P((__txn_prepare_msg *));
+__txn_recover_reply *__db_txn_recover_3003 __P((__txn_recover_msg *));
+__db_associate_reply *__db_db_associate_3003 __P((__db_associate_msg *));
+__db_bt_maxkey_reply *__db_db_bt_maxkey_3003 __P((__db_bt_maxkey_msg *));
+__db_bt_minkey_reply *__db_db_bt_minkey_3003 __P((__db_bt_minkey_msg *));
+__db_close_reply *__db_db_close_3003 __P((__db_close_msg *));
+__db_create_reply *__db_db_create_3003 __P((__db_create_msg *));
+__db_del_reply *__db_db_del_3003 __P((__db_del_msg *));
+__db_extentsize_reply *__db_db_extentsize_3003 __P((__db_extentsize_msg *));
+__db_flags_reply *__db_db_flags_3003 __P((__db_flags_msg *));
+__db_get_reply *__db_db_get_3003 __P((__db_get_msg *));
+__db_h_ffactor_reply *__db_db_h_ffactor_3003 __P((__db_h_ffactor_msg *));
+__db_h_nelem_reply *__db_db_h_nelem_3003 __P((__db_h_nelem_msg *));
+__db_key_range_reply *__db_db_key_range_3003 __P((__db_key_range_msg *));
+__db_lorder_reply *__db_db_lorder_3003 __P((__db_lorder_msg *));
+__db_open_reply *__db_db_open_3003 __P((__db_open_msg *));
+__db_pagesize_reply *__db_db_pagesize_3003 __P((__db_pagesize_msg *));
+__db_pget_reply *__db_db_pget_3003 __P((__db_pget_msg *));
+__db_put_reply *__db_db_put_3003 __P((__db_put_msg *));
+__db_re_delim_reply *__db_db_re_delim_3003 __P((__db_re_delim_msg *));
+__db_re_len_reply *__db_db_re_len_3003 __P((__db_re_len_msg *));
+__db_re_pad_reply *__db_db_re_pad_3003 __P((__db_re_pad_msg *));
+__db_remove_reply *__db_db_remove_3003 __P((__db_remove_msg *));
+__db_rename_reply *__db_db_rename_3003 __P((__db_rename_msg *));
+__db_stat_reply *__db_db_stat_3003 __P((__db_stat_msg *));
+__db_sync_reply *__db_db_sync_3003 __P((__db_sync_msg *));
+__db_truncate_reply *__db_db_truncate_3003 __P((__db_truncate_msg *));
+__db_cursor_reply *__db_db_cursor_3003 __P((__db_cursor_msg *));
+__db_join_reply *__db_db_join_3003 __P((__db_join_msg *));
+__dbc_close_reply *__db_dbc_close_3003 __P((__dbc_close_msg *));
+__dbc_count_reply *__db_dbc_count_3003 __P((__dbc_count_msg *));
+__dbc_del_reply *__db_dbc_del_3003 __P((__dbc_del_msg *));
+__dbc_dup_reply *__db_dbc_dup_3003 __P((__dbc_dup_msg *));
+__dbc_get_reply *__db_dbc_get_3003 __P((__dbc_get_msg *));
+__dbc_pget_reply *__db_dbc_pget_3003 __P((__dbc_pget_msg *));
+__dbc_put_reply *__db_dbc_put_3003 __P((__dbc_put_msg *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _rpc_server_ext_h_ */
diff --git a/db/include_auto/tcl_ext.h b/db/include_auto/tcl_ext.h
new file mode 100644
index 000000000..228ecadd0
--- /dev/null
+++ b/db/include_auto/tcl_ext.h
@@ -0,0 +1,66 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _tcl_ext_h_
+#define _tcl_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int bdb_HCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
+#if DB_DBM_HSEARCH != 0
+int bdb_NdbmOpen __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DBM **));
+#endif
+#if DB_DBM_HSEARCH != 0
+int bdb_DbmCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*, int, DBM *));
+#endif
+int ndbm_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+int bdb_RandCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
+int tcl_Mutex __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+int db_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+int dbc_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+int env_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+int tcl_EnvRemove __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+int tcl_EnvVerbose __P((Tcl_Interp *, DB_ENV *, Tcl_Obj *, Tcl_Obj *));
+int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+DBTCL_INFO *_NewInfo __P((Tcl_Interp *, void *, char *, enum INFOTYPE));
+void *_NameToPtr __P((CONST char *));
+DBTCL_INFO *_PtrToInfo __P((CONST void *));
+DBTCL_INFO *_NameToInfo __P((CONST char *));
+void _SetInfoData __P((DBTCL_INFO *, void *));
+void _DeleteInfo __P((DBTCL_INFO *));
+int _SetListElem __P((Tcl_Interp *, Tcl_Obj *, void *, int, void *, int));
+int _SetListElemInt __P((Tcl_Interp *, Tcl_Obj *, void *, int));
+int _SetListRecnoElem __P((Tcl_Interp *, Tcl_Obj *, db_recno_t, u_char *, int));
+int _Set3DBTList __P((Tcl_Interp *, Tcl_Obj *, DBT *, int, DBT *, int, DBT *));
+int _SetMultiList __P((Tcl_Interp *, Tcl_Obj *, DBT *, DBT*, int, int));
+int _GetGlobPrefix __P((char *, char **));
+int _ReturnSetup __P((Tcl_Interp *, int, char *));
+int _ErrorSetup __P((Tcl_Interp *, int, char *));
+void _ErrorFunc __P((CONST char *, char *));
+int _GetLsn __P((Tcl_Interp *, Tcl_Obj *, DB_LSN *));
+void _debug_check __P((void));
+int tcl_LockDetect __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LockGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LockStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LockVec __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogArchive __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogCompare __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
+int tcl_LogFile __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogFlush __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogPut __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogRegister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_LogUnregister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+void _MpInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
+int tcl_MpSync __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_MpTrickle __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_Mp __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+int tcl_MpStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+void _TxnInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
+int tcl_TxnCheckpoint __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_Txn __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+int tcl_TxnStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+int tcl_TxnRecover __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _tcl_ext_h_ */
diff --git a/db/include_auto/tcl_ext.in b/db/include_auto/tcl_ext.in
new file mode 100644
index 000000000..d3fdfe976
--- /dev/null
+++ b/db/include_auto/tcl_ext.in
@@ -0,0 +1,118 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _tcl_ext_h_
+#define _tcl_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define bdb_HCommand bdb_HCommand@DB_VERSION_UNIQUE_NAME@
+int bdb_HCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
+#if DB_DBM_HSEARCH != 0
+#define bdb_NdbmOpen bdb_NdbmOpen@DB_VERSION_UNIQUE_NAME@
+int bdb_NdbmOpen __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DBM **));
+#endif
+#if DB_DBM_HSEARCH != 0
+#define bdb_DbmCommand bdb_DbmCommand@DB_VERSION_UNIQUE_NAME@
+int bdb_DbmCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*, int, DBM *));
+#endif
+#define ndbm_Cmd ndbm_Cmd@DB_VERSION_UNIQUE_NAME@
+int ndbm_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+#define bdb_RandCommand bdb_RandCommand@DB_VERSION_UNIQUE_NAME@
+int bdb_RandCommand __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
+#define tcl_Mutex tcl_Mutex@DB_VERSION_UNIQUE_NAME@
+int tcl_Mutex __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+#define db_Cmd db_Cmd@DB_VERSION_UNIQUE_NAME@
+int db_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+#define dbc_Cmd dbc_Cmd@DB_VERSION_UNIQUE_NAME@
+int dbc_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+#define env_Cmd env_Cmd@DB_VERSION_UNIQUE_NAME@
+int env_Cmd __P((ClientData, Tcl_Interp *, int, Tcl_Obj * CONST*));
+#define tcl_EnvRemove tcl_EnvRemove@DB_VERSION_UNIQUE_NAME@
+int tcl_EnvRemove __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+#define tcl_EnvVerbose tcl_EnvVerbose@DB_VERSION_UNIQUE_NAME@
+int tcl_EnvVerbose __P((Tcl_Interp *, DB_ENV *, Tcl_Obj *, Tcl_Obj *));
+#define tcl_EnvTest tcl_EnvTest@DB_VERSION_UNIQUE_NAME@
+int tcl_EnvTest __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define _NewInfo _NewInfo@DB_VERSION_UNIQUE_NAME@
+DBTCL_INFO *_NewInfo __P((Tcl_Interp *, void *, char *, enum INFOTYPE));
+#define _NameToPtr _NameToPtr@DB_VERSION_UNIQUE_NAME@
+void *_NameToPtr __P((CONST char *));
+#define _PtrToInfo _PtrToInfo@DB_VERSION_UNIQUE_NAME@
+DBTCL_INFO *_PtrToInfo __P((CONST void *));
+#define _NameToInfo _NameToInfo@DB_VERSION_UNIQUE_NAME@
+DBTCL_INFO *_NameToInfo __P((CONST char *));
+#define _SetInfoData _SetInfoData@DB_VERSION_UNIQUE_NAME@
+void _SetInfoData __P((DBTCL_INFO *, void *));
+#define _DeleteInfo _DeleteInfo@DB_VERSION_UNIQUE_NAME@
+void _DeleteInfo __P((DBTCL_INFO *));
+#define _SetListElem _SetListElem@DB_VERSION_UNIQUE_NAME@
+int _SetListElem __P((Tcl_Interp *, Tcl_Obj *, void *, int, void *, int));
+#define _SetListElemInt _SetListElemInt@DB_VERSION_UNIQUE_NAME@
+int _SetListElemInt __P((Tcl_Interp *, Tcl_Obj *, void *, int));
+#define _SetListRecnoElem _SetListRecnoElem@DB_VERSION_UNIQUE_NAME@
+int _SetListRecnoElem __P((Tcl_Interp *, Tcl_Obj *, db_recno_t, u_char *, int));
+#define _Set3DBTList _Set3DBTList@DB_VERSION_UNIQUE_NAME@
+int _Set3DBTList __P((Tcl_Interp *, Tcl_Obj *, DBT *, int, DBT *, int, DBT *));
+#define _SetMultiList _SetMultiList@DB_VERSION_UNIQUE_NAME@
+int _SetMultiList __P((Tcl_Interp *, Tcl_Obj *, DBT *, DBT*, int, int));
+#define _GetGlobPrefix _GetGlobPrefix@DB_VERSION_UNIQUE_NAME@
+int _GetGlobPrefix __P((char *, char **));
+#define _ReturnSetup _ReturnSetup@DB_VERSION_UNIQUE_NAME@
+int _ReturnSetup __P((Tcl_Interp *, int, char *));
+#define _ErrorSetup _ErrorSetup@DB_VERSION_UNIQUE_NAME@
+int _ErrorSetup __P((Tcl_Interp *, int, char *));
+#define _ErrorFunc _ErrorFunc@DB_VERSION_UNIQUE_NAME@
+void _ErrorFunc __P((CONST char *, char *));
+#define _GetLsn _GetLsn@DB_VERSION_UNIQUE_NAME@
+int _GetLsn __P((Tcl_Interp *, Tcl_Obj *, DB_LSN *));
+#define _debug_check _debug_check@DB_VERSION_UNIQUE_NAME@
+void _debug_check __P((void));
+#define tcl_LockDetect tcl_LockDetect@DB_VERSION_UNIQUE_NAME@
+int tcl_LockDetect __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LockGet tcl_LockGet@DB_VERSION_UNIQUE_NAME@
+int tcl_LockGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LockStat tcl_LockStat@DB_VERSION_UNIQUE_NAME@
+int tcl_LockStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LockVec tcl_LockVec@DB_VERSION_UNIQUE_NAME@
+int tcl_LockVec __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogArchive tcl_LogArchive@DB_VERSION_UNIQUE_NAME@
+int tcl_LogArchive __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogCompare tcl_LogCompare@DB_VERSION_UNIQUE_NAME@
+int tcl_LogCompare __P((Tcl_Interp *, int, Tcl_Obj * CONST*));
+#define tcl_LogFile tcl_LogFile@DB_VERSION_UNIQUE_NAME@
+int tcl_LogFile __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogFlush tcl_LogFlush@DB_VERSION_UNIQUE_NAME@
+int tcl_LogFlush __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogGet tcl_LogGet@DB_VERSION_UNIQUE_NAME@
+int tcl_LogGet __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogPut tcl_LogPut@DB_VERSION_UNIQUE_NAME@
+int tcl_LogPut __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogRegister tcl_LogRegister@DB_VERSION_UNIQUE_NAME@
+int tcl_LogRegister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogStat tcl_LogStat@DB_VERSION_UNIQUE_NAME@
+int tcl_LogStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_LogUnregister tcl_LogUnregister@DB_VERSION_UNIQUE_NAME@
+int tcl_LogUnregister __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define _MpInfoDelete _MpInfoDelete@DB_VERSION_UNIQUE_NAME@
+void _MpInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
+#define tcl_MpSync tcl_MpSync@DB_VERSION_UNIQUE_NAME@
+int tcl_MpSync __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_MpTrickle tcl_MpTrickle@DB_VERSION_UNIQUE_NAME@
+int tcl_MpTrickle __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_Mp tcl_Mp@DB_VERSION_UNIQUE_NAME@
+int tcl_Mp __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+#define tcl_MpStat tcl_MpStat@DB_VERSION_UNIQUE_NAME@
+int tcl_MpStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define _TxnInfoDelete _TxnInfoDelete@DB_VERSION_UNIQUE_NAME@
+void _TxnInfoDelete __P((Tcl_Interp *, DBTCL_INFO *));
+#define tcl_TxnCheckpoint tcl_TxnCheckpoint@DB_VERSION_UNIQUE_NAME@
+int tcl_TxnCheckpoint __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_Txn tcl_Txn@DB_VERSION_UNIQUE_NAME@
+int tcl_Txn __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+#define tcl_TxnStat tcl_TxnStat@DB_VERSION_UNIQUE_NAME@
+int tcl_TxnStat __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *));
+#define tcl_TxnRecover tcl_TxnRecover@DB_VERSION_UNIQUE_NAME@
+int tcl_TxnRecover __P((Tcl_Interp *, int, Tcl_Obj * CONST*, DB_ENV *, DBTCL_INFO *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _tcl_ext_h_ */
diff --git a/db/include_auto/txn_auto.h b/db/include_auto/txn_auto.h
new file mode 100644
index 000000000..9c13fa505
--- /dev/null
+++ b/db/include_auto/txn_auto.h
@@ -0,0 +1,84 @@
+/* Do not edit: automatically built by gen_rec.awk. */
+
+#ifndef txn_AUTO_H
+#define txn_AUTO_H
+#define DB_txn_old_regop 6
+typedef struct _txn_old_regop_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+} __txn_old_regop_args;
+
+#define DB_txn_regop 10
+typedef struct _txn_regop_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ int32_t timestamp;
+} __txn_regop_args;
+
+#define DB_txn_old_ckp 7
+typedef struct _txn_old_ckp_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DB_LSN ckp_lsn;
+ DB_LSN last_ckp;
+} __txn_old_ckp_args;
+
+#define DB_txn_ckp 11
+typedef struct _txn_ckp_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ DB_LSN ckp_lsn;
+ DB_LSN last_ckp;
+ int32_t timestamp;
+} __txn_ckp_args;
+
+#define DB_txn_xa_regop_old 8
+typedef struct _txn_xa_regop_old_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ DBT xid;
+ int32_t formatID;
+ u_int32_t gtrid;
+ u_int32_t bqual;
+} __txn_xa_regop_old_args;
+
+#define DB_txn_xa_regop 13
+typedef struct _txn_xa_regop_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ DBT xid;
+ int32_t formatID;
+ u_int32_t gtrid;
+ u_int32_t bqual;
+ DB_LSN begin_lsn;
+} __txn_xa_regop_args;
+
+#define DB_txn_child_old 9
+typedef struct _txn_child_old_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t opcode;
+ u_int32_t parent;
+} __txn_child_old_args;
+
+#define DB_txn_child 12
+typedef struct _txn_child_args {
+ u_int32_t type;
+ DB_TXN *txnid;
+ DB_LSN prev_lsn;
+ u_int32_t child;
+ DB_LSN c_lsn;
+} __txn_child_args;
+
+#endif
diff --git a/db/include_auto/txn_ext.h b/db/include_auto/txn_ext.h
new file mode 100644
index 000000000..7ddee10fd
--- /dev/null
+++ b/db/include_auto/txn_ext.h
@@ -0,0 +1,47 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _txn_ext_h_
+#define _txn_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __txn_xa_begin __P((DB_ENV *, DB_TXN *));
+int __txn_compensate_begin __P((DB_ENV *, DB_TXN **txnp));
+int __txn_activekids __P((DB_ENV *, u_int32_t, DB_TXN *));
+void __txn_force_abort __P((u_int8_t *));
+int __txn_old_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_old_regop_read __P((DB_ENV *, void *, __txn_old_regop_args **));
+int __txn_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t));
+int __txn_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_regop_read __P((DB_ENV *, void *, __txn_regop_args **));
+int __txn_old_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_old_ckp_read __P((DB_ENV *, void *, __txn_old_ckp_args **));
+int __txn_ckp_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, DB_LSN *, DB_LSN *, int32_t));
+int __txn_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_ckp_read __P((DB_ENV *, void *, __txn_ckp_args **));
+int __txn_xa_regop_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_xa_regop_old_read __P((DB_ENV *, void *, __txn_xa_regop_old_args **));
+int __txn_xa_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, int32_t, u_int32_t, u_int32_t, DB_LSN *));
+int __txn_xa_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_xa_regop_read __P((DB_ENV *, void *, __txn_xa_regop_args **));
+int __txn_child_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_child_old_read __P((DB_ENV *, void *, __txn_child_old_args **));
+int __txn_child_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, DB_LSN *));
+int __txn_child_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_child_read __P((DB_ENV *, void *, __txn_child_args **));
+int __txn_init_print __P((DB_ENV *));
+int __txn_init_recover __P((DB_ENV *));
+int __txn_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_xa_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_ckp_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+int __txn_child_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *, size_t));
+int __txn_map_gid __P((DB_ENV *, u_int8_t *, TXN_DETAIL **, size_t *));
+int __txn_get_prepared __P((DB_ENV *, XID *, DB_PREPLIST *, long, long *, u_int32_t));
+void __txn_dbenv_create __P((DB_ENV *));
+int __txn_open __P((DB_ENV *));
+int __txn_close __P((DB_ENV *));
+void __txn_region_destroy __P((DB_ENV *, REGINFO *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _txn_ext_h_ */
diff --git a/db/include_auto/txn_ext.in b/db/include_auto/txn_ext.in
new file mode 100644
index 000000000..ed3cf80b8
--- /dev/null
+++ b/db/include_auto/txn_ext.in
@@ -0,0 +1,84 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _txn_ext_h_
+#define _txn_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __txn_xa_begin __txn_xa_begin@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_begin __P((DB_ENV *, DB_TXN *));
+#define __txn_compensate_begin __txn_compensate_begin@DB_VERSION_UNIQUE_NAME@
+int __txn_compensate_begin __P((DB_ENV *, DB_TXN **txnp));
+#define __txn_activekids __txn_activekids@DB_VERSION_UNIQUE_NAME@
+int __txn_activekids __P((DB_ENV *, u_int32_t, DB_TXN *));
+#define __txn_force_abort __txn_force_abort@DB_VERSION_UNIQUE_NAME@
+void __txn_force_abort __P((u_int8_t *));
+#define __txn_old_regop_print __txn_old_regop_print@DB_VERSION_UNIQUE_NAME@
+int __txn_old_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_old_regop_read __txn_old_regop_read@DB_VERSION_UNIQUE_NAME@
+int __txn_old_regop_read __P((DB_ENV *, void *, __txn_old_regop_args **));
+#define __txn_regop_log __txn_regop_log@DB_VERSION_UNIQUE_NAME@
+int __txn_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, int32_t));
+#define __txn_regop_print __txn_regop_print@DB_VERSION_UNIQUE_NAME@
+int __txn_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_regop_read __txn_regop_read@DB_VERSION_UNIQUE_NAME@
+int __txn_regop_read __P((DB_ENV *, void *, __txn_regop_args **));
+#define __txn_old_ckp_print __txn_old_ckp_print@DB_VERSION_UNIQUE_NAME@
+int __txn_old_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_old_ckp_read __txn_old_ckp_read@DB_VERSION_UNIQUE_NAME@
+int __txn_old_ckp_read __P((DB_ENV *, void *, __txn_old_ckp_args **));
+#define __txn_ckp_log __txn_ckp_log@DB_VERSION_UNIQUE_NAME@
+int __txn_ckp_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, DB_LSN *, DB_LSN *, int32_t));
+#define __txn_ckp_print __txn_ckp_print@DB_VERSION_UNIQUE_NAME@
+int __txn_ckp_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_ckp_read __txn_ckp_read@DB_VERSION_UNIQUE_NAME@
+int __txn_ckp_read __P((DB_ENV *, void *, __txn_ckp_args **));
+#define __txn_xa_regop_old_print __txn_xa_regop_old_print@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_regop_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_xa_regop_old_read __txn_xa_regop_old_read@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_regop_old_read __P((DB_ENV *, void *, __txn_xa_regop_old_args **));
+#define __txn_xa_regop_log __txn_xa_regop_log@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_regop_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, const DBT *, int32_t, u_int32_t, u_int32_t, DB_LSN *));
+#define __txn_xa_regop_print __txn_xa_regop_print@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_regop_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_xa_regop_read __txn_xa_regop_read@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_regop_read __P((DB_ENV *, void *, __txn_xa_regop_args **));
+#define __txn_child_old_print __txn_child_old_print@DB_VERSION_UNIQUE_NAME@
+int __txn_child_old_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_child_old_read __txn_child_old_read@DB_VERSION_UNIQUE_NAME@
+int __txn_child_old_read __P((DB_ENV *, void *, __txn_child_old_args **));
+#define __txn_child_log __txn_child_log@DB_VERSION_UNIQUE_NAME@
+int __txn_child_log __P((DB_ENV *, DB_TXN *, DB_LSN *, u_int32_t, u_int32_t, DB_LSN *));
+#define __txn_child_print __txn_child_print@DB_VERSION_UNIQUE_NAME@
+int __txn_child_print __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_child_read __txn_child_read@DB_VERSION_UNIQUE_NAME@
+int __txn_child_read __P((DB_ENV *, void *, __txn_child_args **));
+#define __txn_init_print __txn_init_print@DB_VERSION_UNIQUE_NAME@
+int __txn_init_print __P((DB_ENV *));
+#define __txn_init_recover __txn_init_recover@DB_VERSION_UNIQUE_NAME@
+int __txn_init_recover __P((DB_ENV *));
+#define __txn_regop_recover __txn_regop_recover@DB_VERSION_UNIQUE_NAME@
+int __txn_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_xa_regop_recover __txn_xa_regop_recover@DB_VERSION_UNIQUE_NAME@
+int __txn_xa_regop_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_ckp_recover __txn_ckp_recover@DB_VERSION_UNIQUE_NAME@
+int __txn_ckp_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_child_recover __txn_child_recover@DB_VERSION_UNIQUE_NAME@
+int __txn_child_recover __P((DB_ENV *, DBT *, DB_LSN *, db_recops, void *));
+#define __txn_continue __txn_continue@DB_VERSION_UNIQUE_NAME@
+void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *, size_t));
+#define __txn_map_gid __txn_map_gid@DB_VERSION_UNIQUE_NAME@
+int __txn_map_gid __P((DB_ENV *, u_int8_t *, TXN_DETAIL **, size_t *));
+#define __txn_get_prepared __txn_get_prepared@DB_VERSION_UNIQUE_NAME@
+int __txn_get_prepared __P((DB_ENV *, XID *, DB_PREPLIST *, long, long *, u_int32_t));
+#define __txn_dbenv_create __txn_dbenv_create@DB_VERSION_UNIQUE_NAME@
+void __txn_dbenv_create __P((DB_ENV *));
+#define __txn_open __txn_open@DB_VERSION_UNIQUE_NAME@
+int __txn_open __P((DB_ENV *));
+#define __txn_close __txn_close@DB_VERSION_UNIQUE_NAME@
+int __txn_close __P((DB_ENV *));
+#define __txn_region_destroy __txn_region_destroy@DB_VERSION_UNIQUE_NAME@
+void __txn_region_destroy __P((DB_ENV *, REGINFO *));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _txn_ext_h_ */
diff --git a/db/include_auto/xa_ext.h b/db/include_auto/xa_ext.h
new file mode 100644
index 000000000..cc16ba183
--- /dev/null
+++ b/db/include_auto/xa_ext.h
@@ -0,0 +1,17 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _xa_ext_h_
+#define _xa_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+int __db_xa_create __P((DB *));
+int __db_rmid_to_env __P((int rmid, DB_ENV **envp));
+int __db_xid_to_txn __P((DB_ENV *, XID *, size_t *));
+int __db_map_rmid __P((int, DB_ENV *));
+int __db_unmap_rmid __P((int));
+int __db_map_xid __P((DB_ENV *, XID *, size_t));
+void __db_unmap_xid __P((DB_ENV *, XID *, size_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _xa_ext_h_ */
diff --git a/db/include_auto/xa_ext.in b/db/include_auto/xa_ext.in
new file mode 100644
index 000000000..873046dcb
--- /dev/null
+++ b/db/include_auto/xa_ext.in
@@ -0,0 +1,24 @@
+/* DO NOT EDIT: automatically built by dist/s_include. */
+#ifndef _xa_ext_h_
+#define _xa_ext_h_
+#if defined(__cplusplus)
+extern "C" {
+#endif
+#define __db_xa_create __db_xa_create@DB_VERSION_UNIQUE_NAME@
+int __db_xa_create __P((DB *));
+#define __db_rmid_to_env __db_rmid_to_env@DB_VERSION_UNIQUE_NAME@
+int __db_rmid_to_env __P((int rmid, DB_ENV **envp));
+#define __db_xid_to_txn __db_xid_to_txn@DB_VERSION_UNIQUE_NAME@
+int __db_xid_to_txn __P((DB_ENV *, XID *, size_t *));
+#define __db_map_rmid __db_map_rmid@DB_VERSION_UNIQUE_NAME@
+int __db_map_rmid __P((int, DB_ENV *));
+#define __db_unmap_rmid __db_unmap_rmid@DB_VERSION_UNIQUE_NAME@
+int __db_unmap_rmid __P((int));
+#define __db_map_xid __db_map_xid@DB_VERSION_UNIQUE_NAME@
+int __db_map_xid __P((DB_ENV *, XID *, size_t));
+#define __db_unmap_xid __db_unmap_xid@DB_VERSION_UNIQUE_NAME@
+void __db_unmap_xid __P((DB_ENV *, XID *, size_t));
+#if defined(__cplusplus)
+}
+#endif
+#endif /* _xa_ext_h_ */
diff --git a/db/java/src/com/sleepycat/db/DbClient.java b/db/java/src/com/sleepycat/db/DbClient.java
new file mode 100644
index 000000000..36b3f1552
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbClient.java
@@ -0,0 +1,21 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2000-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbClient.java,v 11.1 2001/05/01 02:35:52 dda Exp
+ */
+
+package com.sleepycat.db;
+
+/*
+ * This interface is used by DbEnv.set_rpc_server().
+ * It is a placeholder for a future capability.
+ *
+ */
+public interface DbClient
+{
+}
+
+// end of DbClient.java
diff --git a/db/java/src/com/sleepycat/db/DbMultipleDataIterator.java b/db/java/src/com/sleepycat/db/DbMultipleDataIterator.java
new file mode 100644
index 000000000..d77ce382b
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbMultipleDataIterator.java
@@ -0,0 +1,47 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbMultipleDataIterator.java,v 1.2 2001/05/01 01:44:52 krinsky Exp
+ */
+
+package com.sleepycat.db;
+
+/**
+ *
+ * @author David M. Krinsky
+ */
+public class DbMultipleDataIterator extends DbMultipleIterator
+{
+ // public methods
+ public DbMultipleDataIterator(Dbt data)
+ {
+ super(data);
+ }
+
+ public boolean next(Dbt data)
+ {
+ int dataoff = DbUtil.array2int(buf, pos);
+
+ // crack out the data offset and length.
+ if (dataoff < 0) {
+ return (false);
+ }
+
+ pos -= int32sz;
+ int datasz = DbUtil.array2int(buf, pos);
+
+ pos -= int32sz;
+
+ data.set_data(buf);
+ data.set_size(datasz);
+ data.set_offset(dataoff);
+
+ return (true);
+ }
+}
+
+
+// end of DbMultipleDataIterator.java
diff --git a/db/java/src/com/sleepycat/db/DbMultipleIterator.java b/db/java/src/com/sleepycat/db/DbMultipleIterator.java
new file mode 100644
index 000000000..177440a0c
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbMultipleIterator.java
@@ -0,0 +1,52 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbMultipleIterator.java,v 1.2 2001/05/01 01:44:53 krinsky Exp
+ */
+
+package com.sleepycat.db;
+
+/**
+ *
+ * @author David M. Krinsky
+ */
+// DbMultipleIterator is a shared package-private base class for the three
+// types of bulk-return Iterator; it should never be instantiated directly,
+// but it handles the functionality shared by its subclasses.
+class DbMultipleIterator
+{
+ // Package-private methods and members: used by our subclasses.
+
+ // Called implicitly by the subclass
+ DbMultipleIterator(Dbt data)
+ {
+ buf = data.get_data();
+ size = data.get_ulen();
+ // The offset will always be zero from the front of the buffer
+ // DB returns, and the buffer is opaque, so don't bother
+ // handling an offset.
+
+ // The initial position is pointing at the last u_int32_t
+ // in the buffer.
+ pos = size - int32sz;
+ }
+
+ // The C macros use sizeof(u_int32_t). Fortunately, java ints
+ // are always four bytes. Make this a constant just for form's sake.
+ static final int int32sz = 4;
+
+ // Current position within the buffer; equivalent to "pointer"
+ // in the DB_MULTIPLE macros.
+ int pos;
+
+ // A reference to the encoded buffer returned from the original
+ // Db/Dbc.get call on the data Dbt, and its size.
+ byte[] buf;
+ int size;
+}
+
+
+// end of DbMultipleIterator.java
diff --git a/db/java/src/com/sleepycat/db/DbMultipleKeyDataIterator.java b/db/java/src/com/sleepycat/db/DbMultipleKeyDataIterator.java
new file mode 100644
index 000000000..2ebc9fa79
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbMultipleKeyDataIterator.java
@@ -0,0 +1,57 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbMultipleKeyDataIterator.java,v 1.2 2001/05/01 01:44:53 krinsky Exp
+ */
+
+package com.sleepycat.db;
+
+/**
+ *
+ * @author David M. Krinsky
+ */
+public class DbMultipleKeyDataIterator extends DbMultipleIterator
+{
+ // public methods
+ public DbMultipleKeyDataIterator(Dbt data)
+ {
+ super(data);
+ }
+
+ public boolean next(Dbt key, Dbt data)
+ {
+ int keyoff = DbUtil.array2int(buf, pos);
+
+ // crack out the key and data offsets and lengths.
+ if (keyoff < 0) {
+ return (false);
+ }
+
+ pos -= int32sz;
+ int keysz = DbUtil.array2int(buf, pos);
+
+ pos -= int32sz;
+ int dataoff = DbUtil.array2int(buf, pos);
+
+ pos -= int32sz;
+ int datasz = DbUtil.array2int(buf, pos);
+
+ pos -= int32sz;
+
+ key.set_data(buf);
+ key.set_size(keysz);
+ key.set_offset(keyoff);
+
+ data.set_data(buf);
+ data.set_size(datasz);
+ data.set_offset(dataoff);
+
+ return (true);
+ }
+}
+
+
+// end of DbMultipleKeyDataIterator.java
diff --git a/db/java/src/com/sleepycat/db/DbMultipleRecnoDataIterator.java b/db/java/src/com/sleepycat/db/DbMultipleRecnoDataIterator.java
new file mode 100644
index 000000000..4ee2bfa36
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbMultipleRecnoDataIterator.java
@@ -0,0 +1,52 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbMultipleRecnoDataIterator.java,v 1.2 2001/05/01 01:44:53 krinsky Exp
+ */
+
+package com.sleepycat.db;
+
+/**
+ *
+ * @author David M. Krinsky
+ */
+public class DbMultipleRecnoDataIterator extends DbMultipleIterator
+{
+ // public methods
+ public DbMultipleRecnoDataIterator(Dbt data)
+ {
+ super(data);
+ }
+
+ public boolean next(Dbt key, Dbt data)
+ {
+ int keyoff = DbUtil.array2int(buf, pos);
+
+ // crack out the key offset and the data offset and length.
+ if (keyoff < 0) {
+ return (false);
+ }
+
+ pos -= int32sz;
+ int dataoff = DbUtil.array2int(buf, pos);
+
+ pos -= int32sz;
+ int datasz = DbUtil.array2int(buf, pos);
+
+ pos -= int32sz;
+
+ key.set_recno_key_from_buffer(buf, keyoff);
+
+ data.set_data(buf);
+ data.set_size(datasz);
+ data.set_offset(dataoff);
+
+ return (true);
+ }
+}
+
+
+// end of DbMultipleRecnoDataIterator.java
diff --git a/db/java/src/com/sleepycat/db/DbPreplist.java b/db/java/src/com/sleepycat/db/DbPreplist.java
new file mode 100644
index 000000000..63b3f53ef
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbPreplist.java
@@ -0,0 +1,22 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1999-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbPreplist.java,v 11.1 2001/04/15 15:36:30 dda Exp
+ */
+
+package com.sleepycat.db;
+
+/*
+ * This is filled in and returned by the
+ * DbEnv.txn_recover() method.
+ */
+public class DbPreplist
+{
+ public DbTxn txn;
+ public byte gid[];
+}
+
+// end of DbPreplist.java
diff --git a/db/java/src/com/sleepycat/db/DbSecondaryKeyCreate.java b/db/java/src/com/sleepycat/db/DbSecondaryKeyCreate.java
new file mode 100644
index 000000000..bfc8ecf44
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbSecondaryKeyCreate.java
@@ -0,0 +1,22 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1999-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbSecondaryKeyCreate.java,v 11.1 2001/04/25 14:51:11 dda Exp
+ */
+
+package com.sleepycat.db;
+
+/*
+ * This is used as a callback by Db.associate.
+ */
+public interface DbSecondaryKeyCreate
+{
+ public int secondary_key_create(Db secondary, Dbt key,
+ Dbt data, Dbt result)
+ throws DbException;
+}
+
+// end of DbSecondaryKeyCreate.java
diff --git a/db/java/src/com/sleepycat/db/DbUtil.java b/db/java/src/com/sleepycat/db/DbUtil.java
new file mode 100644
index 000000000..98ed016af
--- /dev/null
+++ b/db/java/src/com/sleepycat/db/DbUtil.java
@@ -0,0 +1,98 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: DbUtil.java,v 11.1 2001/05/01 01:44:53 krinsky Exp
+ */
+
+package com.sleepycat.db;
+
+/**
+ *
+ * @author David M. Krinsky
+ */
+
+// DbUtil is a simple, package-private wrapper class that holds a few
+// static utility functions other parts of the package share and that don't
+// have a good home elsewhere. (For now, that's limited to byte-array-to-int
+// conversion and back.)
+
+class DbUtil
+{
+ // Get the u_int32_t stored beginning at offset "offset" into
+ // array "arr". We have to do the conversion manually since it's
+ // a C-native int, and we're not really supposed to make this kind of
+ // cast in Java.
+ static int array2int(byte[] arr, int offset)
+ {
+ int b1, b2, b3, b4;
+ int pos = offset;
+
+ // Get the component bytes; b4 is most significant, b1 least.
+ if (big_endian) {
+ b4 = arr[pos++];
+ b3 = arr[pos++];
+ b2 = arr[pos++];
+ b1 = arr[pos];
+ } else {
+ b1 = arr[pos++];
+ b2 = arr[pos++];
+ b3 = arr[pos++];
+ b4 = arr[pos];
+ }
+
+ // Bytes are signed. Convert [-128, -1] to [128, 255].
+ if (b1 < 0) { b1 += 256; }
+ if (b2 < 0) { b2 += 256; }
+ if (b3 < 0) { b3 += 256; }
+ if (b4 < 0) { b4 += 256; }
+
+ // Put the bytes in their proper places in an int.
+ b2 <<= 8;
+ b3 <<= 16;
+ b4 <<= 24;
+
+ // Return their sum.
+ return (b1 + b2 + b3 + b4);
+ }
+
+ // Store the specified u_int32_t, with endianness appropriate
+ // to the platform we're running on, into four consecutive bytes of
+ // the specified byte array, starting from the specified offset.
+ static void int2array(int n, byte[] arr, int offset)
+ {
+ int b1, b2, b3, b4;
+ int pos = offset;
+
+ b1 = n & 0xff;
+ b2 = (n >> 8) & 0xff;
+ b3 = (n >> 16) & 0xff;
+ b4 = (n >> 24) & 0xff;
+
+ // Bytes are signed. Convert [128, 255] to [-128, -1].
+ if (b1 >= 128) { b1 -= 256; }
+ if (b2 >= 128) { b2 -= 256; }
+ if (b3 >= 128) { b3 -= 256; }
+ if (b4 >= 128) { b4 -= 256; }
+
+ // Put the bytes in the appropriate place in the array.
+ if (big_endian) {
+ arr[pos++] = (byte)b4;
+ arr[pos++] = (byte)b3;
+ arr[pos++] = (byte)b2;
+ arr[pos] = (byte)b1;
+ } else {
+ arr[pos++] = (byte)b1;
+ arr[pos++] = (byte)b2;
+ arr[pos++] = (byte)b3;
+ arr[pos] = (byte)b4;
+ }
+ }
+
+ private static final boolean big_endian = am_big_endian();
+ private static native boolean am_big_endian();
+}
+
+// end of DbUtil.java
diff --git a/db/java/src/com/sleepycat/examples/BulkAccessExample.java b/db/java/src/com/sleepycat/examples/BulkAccessExample.java
new file mode 100644
index 000000000..5986c5856
--- /dev/null
+++ b/db/java/src/com/sleepycat/examples/BulkAccessExample.java
@@ -0,0 +1,205 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1997-2001
+ * Sleepycat Software. All rights reserved.
+ *
+ * Id: BulkAccessExample.java,v 1.1 2001/04/30 18:06:15 krinsky Exp
+ */
+
+package com.sleepycat.examples;
+
+import com.sleepycat.db.*;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.InputStreamReader;
+import java.io.IOException;
+import java.io.PrintStream;
+
+class BulkAccessExample
+{
+ private static final String FileName = "access.db";
+
+ public BulkAccessExample()
+ {
+ }
+
+ private static void usage()
+ {
+ System.err.println("usage: BulkAccessExample\n");
+ System.exit(1);
+ }
+
+ public static void main(String argv[])
+ {
+ try
+ {
+ BulkAccessExample app = new BulkAccessExample();
+ app.run();
+ }
+ catch (DbException dbe)
+ {
+ System.err.println("BulkAccessExample: " + dbe.toString());
+ System.exit(1);
+ }
+ catch (FileNotFoundException fnfe)
+ {
+ System.err.println("BulkAccessExample: " + fnfe.toString());
+ System.exit(1);
+ }
+ System.exit(0);
+ }
+
+ // Prompts for a line, and keeps prompting until a non blank
+ // line is returned. Returns null on error.
+ //
+ static public String askForLine(InputStreamReader reader,
+ PrintStream out, String prompt)
+ {
+ String result = "";
+ while (result != null && result.length() == 0) {
+ out.print(prompt);
+ out.flush();
+ result = getLine(reader);
+ }
+ return result;
+ }
+
+ // Not terribly efficient, but does the job.
+ // Works for reading a line from stdin or a file.
+ // Returns null on EOF. If EOF appears in the middle
+ // of a line, returns that line, then null on next call.
+ //
+ static public String getLine(InputStreamReader reader)
+ {
+ StringBuffer b = new StringBuffer();
+ int c;
+ try {
+ while ((c = reader.read()) != -1 && c != '\n') {
+ if (c != '\r')
+ b.append((char)c);
+ }
+ }
+ catch (IOException ioe) {
+ c = -1;
+ }
+
+ if (c == -1 && b.length() == 0)
+ return null;
+ else
+ return b.toString();
+ }
+
+ public void run()
+ throws DbException, FileNotFoundException
+ {
+ // Remove the previous database.
+ new File(FileName).delete();
+
+ // Create the database object.
+ // There is no environment for this simple example.
+ Db table = new Db(null, 0);
+ table.set_error_stream(System.err);
+ table.set_errpfx("BulkAccessExample");
+ table.open(FileName, null, Db.DB_BTREE, Db.DB_CREATE, 0644);
+
+ //
+ // Insert records into the database, where the key is the user
+ // input and the data is the user input in reverse order.
+ //
+ InputStreamReader reader = new InputStreamReader(System.in);
+
+ for (;;) {
+ String line = askForLine(reader, System.out, "input> ");
+ if (line == null)
+ break;
+
+ String reversed = (new StringBuffer(line)).reverse().toString();
+
+ // See definition of StringDbt below
+ //
+ StringDbt key = new StringDbt(line);
+ StringDbt data = new StringDbt(reversed);
+
+ try
+ {
+ int err;
+ if ((err = table.put(null,
+ key, data, Db.DB_NOOVERWRITE)) == Db.DB_KEYEXIST) {
+ System.out.println("Key " + line + " already exists.");
+ }
+ }
+ catch (DbException dbe)
+ {
+ System.out.println(dbe.toString());
+ }
+ System.out.println("");
+ }
+
+ // Acquire a cursor for the table and two Dbts.
+ Dbc dbc = table.cursor(null, 0);
+ Dbt foo = new Dbt();
+ foo.set_flags(Db.DB_DBT_MALLOC);
+
+ Dbt bulk_data = new Dbt();
+
+ // Set Db.DB_DBT_USERMEM on the data Dbt; Db.DB_MULTIPLE_KEY requires
+ // it. Then allocate a byte array of a reasonable size; we'll
+ // go through the database in chunks this big.
+ bulk_data.set_flags(Db.DB_DBT_USERMEM);
+ bulk_data.set_data(new byte[1000000]);
+ bulk_data.set_ulen(1000000);
+
+
+ // Walk through the table, printing the key/data pairs.
+ //
+ while (dbc.get(foo, bulk_data, Db.DB_NEXT | Db.DB_MULTIPLE_KEY) == 0)
+ {
+
+ DbMultipleKeyDataIterator iterator;
+ iterator = new DbMultipleKeyDataIterator(bulk_data);
+
+ StringDbt key, data;
+ key = new StringDbt();
+ data = new StringDbt();
+
+ while (iterator.next(key, data)) {
+ System.out.println(key.getString() + " : " + data.getString());
+ }
+ }
+ dbc.close();
+ table.close(0);
+ }
+
+ // Here's an example of how you can extend a Dbt in a straightforward
+ // way to allow easy storage/retrieval of strings, or whatever
+ // kind of data you wish. We've declared it as a static inner
+ // class, but it need not be.
+ //
+ static /*inner*/
+ class StringDbt extends Dbt
+ {
+ StringDbt()
+ {
+ set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
+ }
+
+ StringDbt(String value)
+ {
+ setString(value);
+ set_flags(Db.DB_DBT_MALLOC); // tell Db to allocate on retrieval
+ }
+
+ void setString(String value)
+ {
+ set_data(value.getBytes());
+ set_offset(0);
+ set_size(value.length());
+ }
+
+ String getString()
+ {
+ return new String(get_data(), get_offset(), get_size());
+ }
+ }
+}
diff --git a/db/libdb_java/com_sleepycat_db_DbUtil.h b/db/libdb_java/com_sleepycat_db_DbUtil.h
new file mode 100644
index 000000000..645b6f925
--- /dev/null
+++ b/db/libdb_java/com_sleepycat_db_DbUtil.h
@@ -0,0 +1,22 @@
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class com_sleepycat_db_DbUtil */
+
+#ifndef _Included_com_sleepycat_db_DbUtil
+#define _Included_com_sleepycat_db_DbUtil
+#ifdef __cplusplus
+extern "C" {
+#endif
+/* Inaccessible static: big_endian */
+/*
+ * Class: com_sleepycat_db_DbUtil
+ * Method: am_big_endian
+ * Signature: ()Z
+ */
+JNIEXPORT jboolean JNICALL Java_com_sleepycat_db_DbUtil_am_1big_1endian
+ (JNIEnv *, jclass);
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/db/libdb_java/java_DbUtil.c b/db/libdb_java/java_DbUtil.c
new file mode 100644
index 000000000..95e6f2e04
--- /dev/null
+++ b/db/libdb_java/java_DbUtil.c
@@ -0,0 +1,31 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ */
+#include "db_config.h"
+
+#ifndef lint
+static const char revid[] = "Id: java_DbUtil.c,v 1.3 2001/05/08 19:00:31 bostic Exp ";
+#endif /* not lint */
+
+#include <jni.h>
+
+#include "db_int.h"
+#include "java_util.h"
+#include "com_sleepycat_db_DbUtil.h"
+
+JNIEXPORT jboolean JNICALL
+Java_com_sleepycat_db_DbUtil_am_1big_1endian (JNIEnv *jnienv,
+ jclass jthis_class)
+{
+ COMPQUIET(jnienv, NULL);
+ COMPQUIET(jthis_class, NULL);
+
+#if defined(WORDS_BIGENDIAN)
+ return (JNI_TRUE);
+#else
+ return (JNI_FALSE);
+#endif
+}
diff --git a/db/mutex/tm.c b/db/mutex/tm.c
new file mode 100644
index 000000000..e866981ec
--- /dev/null
+++ b/db/mutex/tm.c
@@ -0,0 +1,340 @@
+/*
+ * Standalone mutex tester for Berkeley DB mutexes.
+ */
+#include "db_config.h"
+
+#include <sys/types.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "db_int.h"
+
+void exec_one();
+void file_init();
+void map_file();
+void mutex_destroy();
+void mutex_init();
+void mutex_stats();
+void run_one();
+void unmap_file();
+
+int align; /* Mutex alignment in file. */
+DB_ENV dbenv; /* Fake out DB. */
+char *file = "mutex.file"; /* Backing file. */
+size_t len; /* Backing file size. */
+int maxlocks = 20; /* -l: Backing locks. */
+int nlocks = 10000; /* -n: Locks per processes. */
+int nprocs = 20; /* -p: Processes. */
+int child; /* -s: Slave. */
+int verbose; /* -v: Verbosity. */
+
+int
+main(argc, argv)
+ int argc;
+ char *argv[];
+{
+ extern int optind;
+ extern char *optarg;
+ pid_t pid;
+ int ch, i, status;
+
+ while ((ch = getopt(argc, argv, "l:n:p:sv")) != EOF)
+ switch(ch) {
+ case 'l':
+ maxlocks = atoi(optarg);
+ break;
+ case 'n':
+ nlocks = atoi(optarg);
+ break;
+ case 'p':
+ nprocs = atoi(optarg);
+ break;
+ case 's':
+ child = 1;
+ break;
+ case 'v':
+ verbose = 1;
+ break;
+ case '?':
+ default:
+ (void)fprintf(stderr,
+ "usage: %s [-l maxlocks] [-n locks] [-p procs]\n",
+ argv[0]);
+ exit(1);
+ }
+ argc -= optind;
+ argv += optind;
+
+ /*
+ * Needed to figure out the file layout.
+ */
+ align = ALIGN(sizeof(MUTEX) * 2, MUTEX_ALIGN);
+ len = align * maxlocks + sizeof(u_int32_t) * maxlocks;
+
+ /*
+ * Hack DBENV to work.
+ */
+ dbenv.db_mutexlocks = 1;
+
+ if (child) {
+ run_one();
+ exit(0);
+ }
+
+ file_init();
+ mutex_init();
+
+ printf("Run: %d processes (%d requests from %d locks):",
+ nprocs, nlocks, maxlocks);
+ for (i = 0; i < nprocs; ++i)
+ switch (pid = fork()) {
+ case -1:
+ perror("fork");
+ exit(1);
+ case 0:
+ exec_one();
+ break;
+ default:
+ printf(" %lu", (u_long)pid);
+ break;
+ }
+ printf("\n");
+
+ while ((pid = wait(&status)) != (pid_t)-1)
+ printf("%d: exited %d\n", pid, WEXITSTATUS(status));
+ fflush(stdout);
+
+ printf("Statistics...\n");
+ mutex_stats();
+
+ mutex_destroy();
+
+ exit(0);
+}
+
+void
+exec_one()
+{
+ char *argv[10], **ap, b_l[10], b_n[10];
+
+ ap = &argv[0];
+ *ap++ = "tm";
+ sprintf(b_l, "-l%d", maxlocks);
+ *ap++ = b_l;
+ sprintf(b_n, "-n%d", nlocks);
+ *ap++ = b_n;
+ *ap++ = "-s";
+ if (verbose)
+ *ap++ = "-v";
+ *ap = NULL;
+ execv("./tm", argv);
+
+ fprintf(stderr, "./tm: %s\n", strerror(errno));
+ exit(1);
+}
+
+void
+run_one()
+{
+ MUTEX *maddr, *mp;
+ pid_t pid, *pidlist;
+ int fd, i, lock, remap;
+ char buf[128];
+
+ __os_sleep(&dbenv, 3, 0); /* Let everyone catch up. */
+
+ pid = getpid();
+ srand((u_int)time(NULL) / pid);
+
+ for (maddr = NULL;;) {
+ if (maddr == NULL) {
+ map_file(&maddr, &fd);
+ pidlist =
+ (pid_t *)((u_int8_t *)maddr + align * maxlocks);
+ remap = (rand() % 100) + 35;
+
+ if (verbose)
+ printf("%lu: map @ %lx\n",
+ (u_long)pid, (u_long)maddr);
+ }
+
+ lock = rand() % maxlocks;
+ if (verbose) {
+ (void)sprintf(buf,
+ "%lu %lu:\n", (u_long)pid, (u_long)lock);
+ write(1, buf, strlen(buf));
+ }
+ mp = (MUTEX *)((u_int8_t *)maddr + lock * align);
+ if (__db_mutex_lock(&dbenv, mp, fd)) {
+ fprintf(stderr, "%lu: never got lock\n", (u_long)pid);
+ exit(1);
+ }
+ if (pidlist[lock] != 0) {
+ fprintf(stderr,
+ "RACE! (%lu granted lock %d held by %lu)\n",
+ (u_long)pid, lock, (u_long)pidlist[lock]);
+ exit(1);
+ }
+ pidlist[lock] = pid;
+ for (i = 0; i < 3; ++i) {
+ __os_sleep(&dbenv, 0, rand() % 50);
+ if (pidlist[lock] != pid) {
+ fprintf(stderr,
+ "RACE! (%lu stole lock %d from %lu)\n",
+ (u_long)pidlist[lock], lock, (u_long)pid);
+ exit(1);
+ }
+ }
+ pidlist[lock] = 0;
+ if (__db_mutex_unlock(&dbenv, mp)) {
+ fprintf(stderr, "%d: wakeup failed\n", pid);
+ exit(1);
+ }
+
+ if (--remap == 0 || --nlocks == 0) {
+ unmap_file(maddr, fd);
+ maddr = NULL;
+ if (verbose)
+ printf("%lu: unmap\n", (u_long)pid);
+
+ __os_sleep(&dbenv, rand() % 3, 0);
+
+ if (nlocks == 0)
+ break;
+ }
+
+ if (nlocks % 100 == 0)
+ write(1, ".", 1);
+ }
+
+ exit(0);
+}
+
+void
+file_init()
+{
+ int fd;
+
+ printf("Initialize the backing file...\n");
+
+ /*
+ * Initialize the backing file.
+ *
+ * Find out how much space we need to correctly align maxlocks locks
+ * plus maxlocks check words and create the file.
+ */
+ (void)unlink(file);
+ if ((fd = open(file, O_CREAT | O_RDWR | O_TRUNC,
+ S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH)) == -1) {
+ (void)fprintf(stderr, "%s: %s\n", file, strerror(errno));
+ exit(1);
+ }
+ if (lseek(fd, (off_t)len, SEEK_SET) != len || write(fd, &fd, 1) != 1) {
+ (void)fprintf(stderr,
+ "%s: seek/write: %s\n", file, strerror(errno));
+ exit(1);
+ }
+ (void)close(fd);
+}
+
+void
+mutex_init()
+{
+ MUTEX *maddr, *mp;
+ int fd, i;
+
+ printf("Initialize the mutexes...\n");
+ map_file(&maddr, &fd);
+ for (i = 0, mp = maddr;
+ i < maxlocks; ++i, mp = (MUTEX *)((u_int8_t *)mp + align))
+ if (__db_mutex_init(&dbenv, mp, 0, 0)) {
+ fprintf(stderr, "__db_mutex_init (%d): %s\n",
+ i + 1, strerror(errno));
+ exit(1);
+ }
+ unmap_file(maddr, fd);
+}
+
+void
+mutex_destroy()
+{
+ MUTEX *maddr, *mp;
+ int fd, i;
+
+ map_file(&maddr, &fd);
+ for (i = 0, mp = maddr;
+ i < maxlocks; ++i, mp = (MUTEX *)((u_int8_t *)mp + align))
+ if (__db_mutex_destroy(mp)) {
+ fprintf(stderr, "__db_mutex_destroy (%d): %s\n",
+ i + 1, strerror(errno));
+ exit(1);
+ }
+ unmap_file(maddr, fd);
+}
+
+void
+mutex_stats()
+{
+ MUTEX *maddr, *mp;
+ int fd, i;
+
+ map_file(&maddr, &fd);
+ for (i = 0, mp = maddr;
+ i < maxlocks; ++i, mp = (MUTEX *)((u_int8_t *)mp + align))
+ printf("mutex %2d: wait: %2lu; no wait %2lu\n", i,
+ (u_long)mp->mutex_set_wait, (u_long)mp->mutex_set_nowait);
+ unmap_file(maddr, fd);
+}
+
+void
+map_file(maddrp, fdp)
+ MUTEX **maddrp;
+ int *fdp;
+{
+ MUTEX *maddr;
+ int fd;
+
+#ifndef MAP_FAILED
+#define MAP_FAILED (MUTEX *)-1
+#endif
+#ifndef MAP_FILE
+#define MAP_FILE 0
+#endif
+ if ((fd = open(file, O_RDWR, 0)) == -1) {
+ fprintf(stderr, "%s: open %s\n", file, strerror(errno));
+ exit(1);
+ }
+
+ maddr = (MUTEX *)mmap(NULL, len,
+ PROT_READ | PROT_WRITE, MAP_FILE | MAP_SHARED, fd, (off_t)0);
+ if (maddr == MAP_FAILED) {
+ fprintf(stderr, "%s: mmap: %s\n", file, strerror(errno));
+ exit(1);
+ }
+
+ *maddrp = maddr;
+ *fdp = fd;
+}
+
+void
+unmap_file(maddr, fd)
+ MUTEX *maddr;
+ int fd;
+{
+ if (munmap(maddr, len) != 0) {
+ fprintf(stderr, "munmap: %s\n", strerror(errno));
+ exit(1);
+ }
+ if (close(fd) != 0) {
+ fprintf(stderr, "close: %s\n", strerror(errno));
+ exit(1);
+ }
+}
diff --git a/db/test/bigfile.tcl b/db/test/bigfile.tcl
new file mode 100644
index 000000000..0ffddd21e
--- /dev/null
+++ b/db/test/bigfile.tcl
@@ -0,0 +1,84 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: bigfile.tcl,v 11.1 2001/05/03 17:26:19 krinsky Exp
+#
+# Big file test.
+# Create a database greater than 4 GB in size. Close, verify. Grow
+# the database somewhat. Close, reverify. Lather, rinse, repeat.
+# Since it will not work on all systems, this test is not run by default.
+proc bigfile { method \
+ { itemsize 4096 } { nitems 1048576 } { growby 5000 } { growtms 2 } args } {
+ source ./include.tcl
+
+ set args [convert_args $method $args]
+ set omethod [convert_method $method]
+
+ puts "Bigfile: $method ($args) $nitems * $itemsize bytes of data"
+
+ env_cleanup $testdir
+
+ # Create the database. Use 64K pages; we want a good fill
+ # factor, and page size doesn't matter much. Use a 50MB
+ # cache; that should be manageable, and will help
+ # performance.
+ set dbname TESTDIR/big.db
+
+ set db [eval {berkdb_open -create} {-pagesize 65536 \
+ -cachesize {0 50000000 0}} $omethod $args $dbname]
+ error_check_good db_open [is_valid_db $db] TRUE
+
+ puts -nonewline "\tBigfile.a: Creating database...0%..."
+ flush stdout
+
+ set data [string repeat z $itemsize]
+
+ set more_than_ten_already 0
+ for { set i 0 } { $i < $nitems } { incr i } {
+ set key key[format %08u $i]
+
+ error_check_good db_put($i) [$db put $key $data] 0
+
+ if { $i % 5000 == 0 } {
+ set pct [expr 100 * $i / $nitems]
+ puts -nonewline "\b\b\b\b\b"
+ if { $pct >= 10 } {
+ if { $more_than_ten_already } {
+ puts -nonewline "\b"
+ } else {
+ set more_than_ten_already 1
+ }
+ }
+
+ puts -nonewline "$pct%..."
+ flush stdout
+ }
+ }
+ puts "\b\b\b\b\b\b100%..."
+ error_check_good db_close [$db close] 0
+
+ puts "\tBigfile.b: Verifying database..."
+ error_check_good verify \
+ [verify_dir $testdir "\t\t" 0 0 1 50000000] 0
+
+ puts "\tBigfile.c: Grow database $growtms times by $growby items"
+
+ for { set j 0 } { $j < $growtms } { incr j } {
+ set db [eval {berkdb_open} {-cachesize {0 50000000 0}} $dbname]
+ error_check_good db_open [is_valid_db $db] TRUE
+ puts -nonewline "\t\tBigfile.c.1: Adding $growby items..."
+ flush stdout
+ for { set i 0 } { $i < $growby } { incr i } {
+ set key key[format %08u $i].$j
+ error_check_good db_put($j.$i) [$db put $key $data] 0
+ }
+ error_check_good db_close [$db close] 0
+ puts "done."
+
+ puts "\t\tBigfile.c.2: Verifying database..."
+ error_check_good verify($j) \
+ [verify_dir $testdir "\t\t\t" 0 0 1 50000000] 0
+ }
+}
diff --git a/db/test/ddoyscript.tcl b/db/test/ddoyscript.tcl
new file mode 100644
index 000000000..4c2ad35d9
--- /dev/null
+++ b/db/test/ddoyscript.tcl
@@ -0,0 +1,165 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996, 1997, 1998, 1999, 2000
+# Sleepycat Software. All rights reserved.
+#
+# Id: ddoyscript.tcl,v 11.1 2001/03/29 15:51:05 margo Exp
+#
+# Deadlock detector script tester.
+# Usage: ddoyscript dir lockerid numprocs
+# dir: DBHOME directory
+# lockerid: Lock id for this locker
+# numprocs: Total number of processes running
+
+source ./include.tcl
+source $test_path/test.tcl
+source $test_path/testutils.tcl
+
+set usage "ddoyscript dir lockerid numprocs oldoryoung"
+
+# Verify usage
+if { $argc != 4 } {
+ puts stderr "FAIL:[timestamp] Usage: $usage"
+ exit
+}
+
+# Initialize arguments
+set dir [lindex $argv 0]
+set lockerid [ lindex $argv 1 ]
+set numprocs [ lindex $argv 2 ]
+set old_or_young [lindex $argv 3]
+
+set myenv [berkdb env -lock -home $dir -create -mode 0644]
+error_check_bad lock_open $myenv NULL
+error_check_good lock_open [is_substr $myenv "env"] 1
+
+# There are two cases here -- oldest/youngest or a ring locker.
+
+if { $lockerid == 0 || $lockerid == [expr $numprocs - 1] } {
+ set waitobj NULL
+ set ret 0
+
+ if { $lockerid == 0 } {
+ set objid 2
+ if { $old_or_young == "o" } {
+ set waitobj [expr $numprocs - 1]
+ }
+ } else {
+ if { $old_or_young == "y" } {
+ set waitobj 0
+ }
+ set objid 4
+ }
+
+ # Acquire own read lock
+ if {[catch {$myenv lock_get read $lockerid $lockerid} selflock] != 0} {
+ puts $errorInfo
+ } else {
+ error_check_good selfget:$objid [is_substr $selflock $myenv] 1
+ }
+
+ # Acquire read lock
+ if {[catch {$myenv lock_get read $lockerid $objid} lock1] != 0} {
+ puts $errorInfo
+ } else {
+ error_check_good lockget:$objid [is_substr $lock1 $myenv] 1
+ }
+
+ tclsleep 10
+
+ if { $waitobj == "NULL" } {
+ # Sleep for a good long while
+ tclsleep 90
+ } else {
+ # Acquire write lock
+ if {[catch {$myenv lock_get write $lockerid $waitobj} lock2]
+ != 0} {
+ puts $errorInfo
+ set ret ERROR
+ } else {
+ error_check_good lockget:$waitobj \
+ [is_substr $lock2 $myenv] 1
+
+ # Now release it
+ if {[catch {$lock2 put} err] != 0} {
+ puts $errorInfo
+ set ret ERROR
+ } else {
+ error_check_good lockput:oy:$objid $err 0
+ }
+ }
+
+ }
+
+ # Release self lock
+ if {[catch {$selflock put} err] != 0} {
+ puts $errorInfo
+ if { $ret == 0 } {
+ set ret ERROR
+ }
+ } else {
+ error_check_good selfput:oy:$lockerid $err 0
+ if { $ret == 0 } {
+ set ret 1
+ }
+ }
+
+ # Release first lock
+ if {[catch {$lock1 put} err] != 0} {
+ puts $errorInfo
+ if { $ret == 0 } {
+ set ret ERROR
+ }
+ } else {
+ error_check_good lockput:oy:$objid $err 0
+ if { $ret == 0 } {
+ set ret 1
+ }
+ }
+
+} else {
+ # Make sure that we succeed if we're locking the same object as
+ # oldest or youngest.
+ if { [expr $lockerid % 2] == 0 } {
+ set mode read
+ } else {
+ set mode write
+ }
+ # Obtain first lock (should always succeed).
+ if {[catch {$myenv lock_get $mode $lockerid $lockerid} lock1] != 0} {
+ puts $errorInfo
+ } else {
+ error_check_good lockget:$lockerid [is_substr $lock1 $myenv] 1
+ }
+
+ tclsleep 30
+
+ set nextobj [expr $lockerid + 1]
+ if { $nextobj == [expr $numprocs - 1] } {
+ set nextobj 1
+ }
+
+ set ret 1
+ if {[catch {$myenv lock_get write $lockerid $nextobj} lock2] != 0} {
+ if {[string match "*DEADLOCK*" $lock2] == 1} {
+ set ret DEADLOCK
+ } else {
+ set ret ERROR
+ }
+ } else {
+ error_check_good lockget:$nextobj [is_substr $lock2 $myenv] 1
+ }
+
+ # Now release the first lock
+ error_check_good lockput:$lock1 [$lock1 put] 0
+
+ if {$ret == 1} {
+ error_check_bad lockget:$nextobj $lock2 NULL
+ error_check_good lockget:$nextobj [is_substr $lock2 $myenv] 1
+ error_check_good lockput:$lock2 [$lock2 put] 0
+ }
+}
+
+puts $ret
+error_check_good envclose [$myenv close] 0
+exit
diff --git a/db/test/dead004.tcl b/db/test/dead004.tcl
new file mode 100644
index 000000000..f6b00e8c0
--- /dev/null
+++ b/db/test/dead004.tcl
@@ -0,0 +1,105 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996, 1997, 1998, 1999, 2000
+# Sleepycat Software. All rights reserved.
+#
+# Id: dead004.tcl,v 11.1 2001/03/29 15:51:05 margo Exp
+#
+# Deadlock Test 4.
+# This test is designed to make sure that we handle youngest and oldest
+# deadlock detection even when the youngest and oldest transactions in the
+# system are not involved in the deadlock (that is, we want to abort the
+# youngest/oldest which is actually involved in the deadlock, not simply
+# the youngest/oldest in the system).
+# Since this is used for transaction systems, the locker ID is what we
+# use to identify age (smaller number is older).
+#
+# The set up is that we have a total of 6 processes. The oldest (locker 0)
+# and the youngest (locker 5) simply acquire a lock, hold it for a long time
+# and then release it. The rest form a ring, obtaining lock N and requesting
+# a lock on (N+1) mod 4. The deadlock detector ought to pick locker 1 or 4
+# to abort and not 0 or 5.
+
+proc dead004 { } {
+ source ./include.tcl
+
+
+ foreach a { o y } {
+ puts "Dead004: Deadlock detector test -a $a"
+ env_cleanup $testdir
+
+ # Create the environment.
+ puts "\tDead004.a: creating environment"
+ set env [berkdb env -create -mode 0644 -lock -home $testdir]
+ error_check_good lock_env:open [is_valid_env $env] TRUE
+ error_check_good lock_env:close [$env close] 0
+
+
+ set dpid [exec $util_path/db_deadlock -v -t 5 -a $a \
+ -h $testdir >& $testdir/dd.out &]
+
+ set pidlist ""
+ set procs 6
+
+ foreach n $procs {
+
+ sentinel_init
+
+ # Fire off the tests
+ puts "\tDead004: $n procs"
+ for { set i 0 } { $i < $n } { incr i } {
+ puts "$tclsh_path $test_path/wrap.tcl \
+ $testdir/dead004.log.$i \
+ ddoyscript.tcl $testdir $i $n $a"
+ set p [exec $tclsh_path \
+ $test_path/wrap.tcl \
+ ddoyscript.tcl $testdir/dead004.log.$i \
+ $testdir $i $n $a &]
+ lappend pidlist $p
+ }
+ watch_procs 5
+
+ }
+ # Now check output
+ set dead 0
+ set clean 0
+ set other 0
+ for { set i 0 } { $i < $n } { incr i } {
+ set did [open $testdir/dead004.log.$i]
+ while { [gets $did val] != -1 } {
+ switch $val {
+ DEADLOCK { incr dead }
+ 1 { incr clean }
+ default { incr other }
+ }
+ }
+ close $did
+ }
+ puts "dead check..."
+ dead_check oldyoung $n $dead $clean $other
+
+ # Now verify that neither the oldest nor the
+ # youngest were the deadlock.
+ set did [open $testdir/dead004.log.0]
+ error_check_bad file:young [gets $did val] -1
+ error_check_good read:young $val 1
+ close $did
+
+ set did [open $testdir/dead004.log.[expr $procs - 1]]
+ error_check_bad file:old [gets $did val] -1
+ error_check_good read:old $val 1
+ close $did
+
+ exec $KILL $dpid
+
+ # Windows needs files closed before deleting files,
+ # so pause a little
+ tclsleep 2
+ fileremove -f $testdir/dd.out
+
+ # Remove log files
+ for { set i 0 } { $i < $n } { incr i } {
+ fileremove -f $testdir/dead004.log.$i
+ }
+ }
+}
diff --git a/db/test/dead005.tcl b/db/test/dead005.tcl
new file mode 100644
index 000000000..a5cab91d8
--- /dev/null
+++ b/db/test/dead005.tcl
@@ -0,0 +1,91 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: dead005.tcl,v 11.1 2001/03/30 21:39:04 margo Exp
+#
+# Deadlock Test 5.
+# Test out the minlocks, maxlocks, and minwrites options
+# to the deadlock detector.
+proc dead005 { { procs "4 6 10" } {tests "maxlocks minwrites minlocks" } } {
+ source ./include.tcl
+
+ puts "Dead005: minlocks, maxlocks, and minwrites deadlock detection tests"
+ foreach t $tests {
+ puts "Dead005.$t: creating environment"
+ env_cleanup $testdir
+
+ # Create the environment.
+ set env [berkdb env -create -mode 0644 -lock -home $testdir]
+ error_check_good lock_env:open [is_valid_env $env] TRUE
+
+ error_check_good lock_env:close [$env close] 0
+
+ case $t {
+ minlocks { set to n }
+ maxlocks { set to m }
+ minwrites { set to w }
+ }
+ set dpid [exec $util_path/db_deadlock -vw -h $testdir -a $to\
+ >& $testdir/dd.out &]
+
+ set pidlist ""
+ foreach n $procs {
+
+ sentinel_init
+
+ # Fire off the tests
+ puts "\tDead005: $t test with $n procs"
+ for { set i 0 } { $i < $n } { incr i } {
+ puts "$tclsh_path $test_path/wrap.tcl \
+ $testdir/dead005.log.$i \
+ ddscript.tcl $testdir $t $i $i $n"
+ set p [exec $tclsh_path \
+ $test_path/wrap.tcl \
+ ddscript.tcl $testdir/dead005.log.$i \
+ $testdir $t $i $i $n &]
+ lappend pidlist $p
+ }
+ watch_procs 5
+
+ # Now check output
+ set dead 0
+ set clean 0
+ set other 0
+ for { set i 0 } { $i < $n } { incr i } {
+ set did [open $testdir/dead005.log.$i]
+ while { [gets $did val] != -1 } {
+ switch $val {
+ DEADLOCK { incr dead }
+ 1 { incr clean }
+ default { incr other }
+ }
+ }
+ close $did
+ }
+ puts "dead check..."
+ dead_check $t $n $dead $clean $other
+ # Now verify that the correct participant
+ # got deadlocked.
+ switch $t {
+ minlocks {set f 0}
+ minwrites {set f 1}
+ maxlocks {set f [expr $n - 1]}
+ }
+ set did [open $testdir/dead005.log.$f]
+ error_check_bad file:$t [gets $did val] -1
+ error_check_good read($f):$t $val DEADLOCK
+ close $did
+ }
+ exec $KILL $dpid
+ # Windows needs files closed before deleting them, so pause
+ tclsleep 2
+ fileremove -f $testdir/dd.out
+ # Remove log files
+ for { set i 0 } { $i < $n } { incr i } {
+ fileremove -f $testdir/dead001.log.$i
+ }
+ }
+
+}
diff --git a/db/test/recd015.tcl b/db/test/recd015.tcl
new file mode 100644
index 000000000..91d496a2c
--- /dev/null
+++ b/db/test/recd015.tcl
@@ -0,0 +1,93 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1999-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: recd015.tcl,v 1.3 2001/05/05 14:08:14 margo Exp
+#
+# Recovery Test 15.
+# This is a recovery test for testing lots of prepared txns.
+# This test is to force the use of txn_recover to call with the
+# DB_FIRST flag and then DB_NEXT.
+proc recd015 { method args } {
+ source ./include.tcl
+
+ set args [convert_args $method $args]
+ set omethod [convert_method $method]
+
+ puts "Recd015: $method ($args) large number of prepared txns test"
+
+ # Create the database and environment.
+ env_cleanup $testdir
+
+ set numtxns 250
+ set testfile recd015.db
+ set txnmax [expr $numtxns + 5]
+
+ puts "\tRecd015.a: Executing child proc to prepare $numtxns txns"
+ set env_cmd "berkdb env -create -txn_max $txnmax -txn -home $testdir"
+ set env [eval $env_cmd]
+ error_check_good dbenv [is_valid_env $env] TRUE
+ set db [eval {berkdb_open -create} $omethod -env $env $args $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+ error_check_good dbclose [$db close] 0
+ error_check_good envclose [$env close] 0
+
+ set gidf $testdir/gidfile
+
+ fileremove -f $gidf
+ set proclist {}
+ set p [exec $tclsh_path $test_path/wrap.tcl recd15script.tcl \
+ $testdir/recdout $env_cmd $testfile $gidf $numtxns &]
+
+ lappend proclist $p
+ watch_procs 5
+ set f1 [open $testdir/recdout r]
+ set r [read $f1]
+ puts $r
+ close $f1
+ fileremove -f $testdir/recdout
+
+
+ berkdb debug_check
+ puts -nonewline "\tRecd15.d: Running recovery ... "
+ flush stdout
+ berkdb debug_check
+ set env_cmd \
+ "berkdb env -recover -create -txn_max $txnmax -txn -home $testdir"
+ set env [eval $env_cmd]
+ error_check_good dbenv-recover [is_valid_env $env] TRUE
+ puts "complete"
+
+ set txnlist [$env txn_recover]
+ set gfd [open $gidf r]
+ set i 0
+ while { [gets $gfd gid] != -1 } {
+ set gids($i) $gid
+ incr i
+ }
+ close $gfd
+ #
+ # Make sure we have as many as we expect
+ error_check_good num_gids $i $numtxns
+
+ #
+ # Note that this assumes the txn_recover gives them back to
+ # us in the order we prepared them. If that is an invalid
+ # assumption we can spit out the GIDs below to a new file,
+ # sort them both to temp files and compare that way.
+ set i 0
+ puts "\tRecd15.e: Comparing GIDs "
+ foreach tpair $txnlist {
+ set txn [lindex $tpair 0]
+ set gid [lindex $tpair 1]
+ error_check_good gidcompare $gid $gids($i)
+ error_check_good txnabort [$txn abort] 0
+ incr i
+ }
+ set stat [catch {exec $util_path/db_printlog -h $testdir \
+ > $testdir/LOG } ret]
+ error_check_good db_printlog $stat 0
+ fileremove $testdir/LOG
+}
+
diff --git a/db/test/recd15script.tcl b/db/test/recd15script.tcl
new file mode 100644
index 000000000..4d28d9452
--- /dev/null
+++ b/db/test/recd15script.tcl
@@ -0,0 +1,66 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: recd15script.tcl,v 1.2 2001/05/02 15:32:33 sue Exp
+#
+# Recd15 - lots of txns - txn prepare script
+# Usage: recd15script envcmd dbcmd gidf numtxns
+# envcmd: command to open env
+# dbfile: name of database file
+# gidf: name of global id file
+# numtxns: number of txns to start
+
+source ./include.tcl
+source $test_path/test.tcl
+source $test_path/testutils.tcl
+
+set usage "recd15script envcmd dbfile gidfile numtxns"
+
+# Verify usage
+if { $argc != 4 } {
+ puts stderr "FAIL:[timestamp] Usage: $usage"
+ exit
+}
+
+# Initialize arguments
+set envcmd [ lindex $argv 0 ]
+set dbfile [ lindex $argv 1 ]
+set gidfile [ lindex $argv 2 ]
+set numtxns [ lindex $argv 3 ]
+
+set txnmax [expr $numtxns + 5]
+set dbenv [eval $envcmd]
+error_check_good envopen [is_valid_env $dbenv] TRUE
+
+set db [berkdb_open -env $dbenv $dbfile]
+error_check_good dbopen [is_valid_db $db] TRUE
+
+puts "\tRecd015script.b: Begin $numtxns txns"
+for {set i 0} {$i < $numtxns} {incr i} {
+ set t [$dbenv txn]
+ error_check_good txnbegin($i) [is_valid_txn $t $dbenv] TRUE
+ set txns($i) $t
+# set dbc [$db cursor -txn $t]
+# error_check_good cursor($i) [is_valid_cursor $dbc $db] TRUE
+# set curs($i) $dbc
+}
+
+puts "\tRecd015script.c: Prepare $numtxns txns"
+set gfd [open $gidfile w+]
+for {set i 0} {$i < $numtxns} {incr i} {
+# set dbc $curs($i)
+# error_check_good dbc_close [$dbc close] 0
+ set t $txns($i)
+ set gid [make_gid recd015script:$t]
+ puts $gfd $gid
+ error_check_good txn_prepare:$t [$t prepare $gid] 0
+}
+close $gfd
+
+#
+# We do not close the db or env, but exit with the txns outstanding.
+#
+puts "\tRecd015script completed successfully"
+flush stdout
diff --git a/db/test/recdscript.tcl b/db/test/recdscript.tcl
new file mode 100644
index 000000000..8747ce003
--- /dev/null
+++ b/db/test/recdscript.tcl
@@ -0,0 +1,37 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: recdscript.tcl,v 11.3 2001/05/02 20:28:55 krinsky Exp
+#
+# Recovery txn prepare script
+# Usage: recdscript op dir envcmd dbfile cmd
+# op: primary txn operation
+# dir: test directory
+# envcmd: command to open env
+# dbfile: name of database file
+# gidf: name of global id file
+# cmd: db command to execute
+
+source ./include.tcl
+source $test_path/test.tcl
+
+set usage "recdscript op dir envcmd dbfile gidfile cmd"
+
+# Verify usage
+if { $argc != 6 } {
+ puts stderr "FAIL:[timestamp] Usage: $usage"
+ exit
+}
+
+# Initialize arguments
+set op [ lindex $argv 0 ]
+set dir [ lindex $argv 1 ]
+set envcmd [ lindex $argv 2 ]
+set dbfile [ lindex $argv 3 ]
+set gidfile [ lindex $argv 4 ]
+set cmd [ lindex $argv 5 ]
+
+op_recover_prep $op $dir $envcmd $dbfile $gidfile $cmd
+flush stdout
diff --git a/db/test/sdb011.tcl b/db/test/sdb011.tcl
new file mode 100644
index 000000000..a28019c4f
--- /dev/null
+++ b/db/test/sdb011.tcl
@@ -0,0 +1,98 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1999-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: sdb011.tcl,v 11.2 2001/05/02 17:22:56 krinsky Exp
+#
+# SubDB Test 11 {access method}
+# Create 1 db with many large subdbs.
+# Test subdatabases with overflow pages.
+proc subdb011 { method {ndups 13} {nsubdbs 10} args} {
+ global names
+ source ./include.tcl
+
+ set args [convert_args $method $args]
+ set omethod [convert_method $method]
+
+ if { [is_queue $method] == 1 || [is_fixed_length $method] == 1 } {
+ puts "Subdb011: skipping for method $method"
+ return
+ }
+
+ puts "Subdb011: $method ($args) overflow dups with \
+ filename=key filecontents=data pairs"
+
+ # Create the database and open the dictionary
+ set testfile $testdir/subdb011.db
+
+ cleanup $testdir NULL
+
+ # Here is the loop where we put and get each key/data pair
+ set file_list [glob ../*/*.c ./libdb.so.3.0 ./libtool ./libtool.exe]
+ puts "\tSubdb011.a: Create each subdb and dups"
+ set slist {}
+ set i 0
+ foreach f $file_list {
+ set i [expr $i % $nsubdbs]
+ if { [is_record_based $method] == 1 } {
+ set key [expr $count + 1]
+ set names([expr $count + 1]) $f
+ } else {
+ set key $f
+ }
+ # Should really catch errors
+ set fid [open $f r]
+ fconfigure $fid -translation binary
+ set filecont [read $fid]
+ set subdb subdb$i
+ lappend slist $subdb
+ close $fid
+ set db [eval {berkdb_open -create -mode 0644} \
+ $args {$omethod $testfile $subdb}]
+ error_check_good dbopen [is_valid_db $db] TRUE
+ for {set dup 0} {$dup < $ndups} {incr dup} {
+ set data $dup:$filecont
+ set ret [eval {$db put} {$key \
+ [chop_data $method $data]}]
+ error_check_good put $ret 0
+ }
+ error_check_good dbclose [$db close] 0
+ incr i
+ }
+
+ puts "\tSubdb011.b: Verify overflow pages"
+ foreach subdb $slist {
+ set db [eval {berkdb_open -create -mode 0644} \
+ $args {$omethod $testfile $subdb}]
+ error_check_good dbopen [is_valid_db $db] TRUE
+ set stat [$db stat]
+
+ # What everyone else calls overflow pages, hash calls "big
+ # pages", so we need to special-case hash here. (Hash
+ # overflow pages are additional pages after the first in a
+ # bucket.)
+ if { [string compare [$db get_type] hash] == 0 } {
+ error_check_bad overflow \
+ [is_substr $stat "{{Number of big pages} 0}"] 1
+ } else {
+ error_check_bad overflow \
+ [is_substr $stat "{{Overflow pages} 0}"] 1
+ }
+ error_check_good dbclose [$db close] 0
+ }
+
+ puts "\tSubdb011.c: Delete subdatabases"
+ for {set i $nsubdbs} {$i > 0} {set i [expr $i - 1]} {
+ #
+ # Randomly delete a subdatabase
+ set sindex [berkdb random_int 0 [expr $i - 1]]
+ set subdb [lindex $slist $sindex]
+ #
+ # Delete the one we did from the list
+ set slist [lreplace $slist $sindex $sindex]
+ error_check_good file_exists_before [file exists $testfile] 1
+ error_check_good db_remove [berkdb dbremove $testfile $subdb] 0
+ }
+}
+
diff --git a/db/test/si001.tcl b/db/test/si001.tcl
new file mode 100644
index 000000000..f0fcafdcd
--- /dev/null
+++ b/db/test/si001.tcl
@@ -0,0 +1,115 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: si001.tcl,v 1.1 2001/04/07 03:18:29 krinsky Exp
+#
+# Sindex001: Basic secondary index put/delete test.
+
+proc sindex001 { methods {nentries 200} {tnum 1} args } {
+ source ./include.tcl
+ global dict nsecondaries
+
+ # Primary method/args.
+ set pmethod [lindex $methods 0]
+ set pargs [convert_args $pmethod $args]
+ set pomethod [convert_method $pmethod]
+
+ # Method/args for all the secondaries. If only one method
+ # was specified, assume the same method and a standard N
+ # secondaries.
+ set methods [lrange $methods 1 end]
+ if { [llength $methods] == 0 } {
+ for { set i 0 } { $i < $nsecondaries } { incr i } {
+ lappend methods $pmethod
+ }
+ }
+
+ set argses [convert_argses $methods $args]
+ set omethods [convert_methods $methods]
+
+ puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
+ env_cleanup $testdir
+
+ set pname "primary00$tnum.db"
+ set snamebase "secondary00$tnum"
+
+ # Open an environment
+ # XXX if one is not supplied!
+ set env [berkdb env -create -home $testdir]
+ error_check_good env_open [is_valid_env $env] TRUE
+
+ # Open the primary.
+ set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
+ error_check_good primary_open [is_valid_db $pdb] TRUE
+
+ # Open and associate the secondaries
+ set sdbs {}
+ for { set i 0 } { $i < [llength $omethods] } { incr i } {
+ set sdb [eval {berkdb_open -create -env} $env \
+ [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
+ error_check_good second_open($i) [is_valid_db $sdb] TRUE
+
+ error_check_good db_associate($i) \
+ [$pdb associate [callback_n $i] $sdb] 0
+ lappend sdbs $sdb
+ }
+
+ puts "\tSindex00$tnum.a: Put loop"
+ set did [open $dict]
+ for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
+ if { [is_record_based $pmethod] == 1 } {
+ set key [expr $n + 1]
+ set datum $str
+ } else {
+ set key $str
+ gets $did datum
+ }
+ set keys($n) $key
+ set data($n) [pad_data $pmethod $datum]
+
+ set ret [eval {$pdb put} {$key [chop_data $pmethod $datum]}]
+ error_check_good put($n) $ret 0
+ }
+ close $did
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
+
+ puts "\tSindex00$tnum.b: Put/overwrite loop"
+ for { set n 0 } { $n < $nentries } { incr n } {
+ set newd $data($n).$keys($n)
+ set ret [eval {$pdb put} {$keys($n) [chop_data $pmethod $newd]}]
+ error_check_good put_overwrite($n) $ret 0
+ set data($n) [pad_data $pmethod $newd]
+ }
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
+
+ # Delete the second half of the entries through the primary.
+ # We do the second half so we can just pass keys(0..n/2)
+ # to check_secondaries.
+ set half [expr $nentries / 2]
+ puts "\tSindex00$tnum.c: Primary delete loop: deleting $half entries"
+ for { set n $half } { $n < $nentries } { incr n } {
+ set ret [$pdb del $keys($n)]
+ error_check_good pdel($n) $ret 0
+ }
+ check_secondaries $pdb $sdbs $half keys data "Sindex00$tnum.c"
+
+ # Delete half of what's left, through the first secondary.
+ set quar [expr $half / 2]
+ puts "\tSindex00$tnum.d: Secondary delete loop: deleting $quar entries"
+ set sdb [lindex $sdbs 0]
+ set callback [callback_n 0]
+ for { set n $quar } { $n < $half } { incr n } {
+ set skey [$callback $keys($n) [pad_data $pmethod $data($n)]]
+ set ret [$sdb del $skey]
+ error_check_good sdel($n) $ret 0
+ }
+ check_secondaries $pdb $sdbs $quar keys data "Sindex00$tnum.d"
+
+ foreach sdb $sdbs {
+ error_check_good secondary_close [$sdb close] 0
+ }
+ error_check_good primary_close [$pdb close] 0
+ error_check_good env_close [$env close] 0
+}
diff --git a/db/test/si002.tcl b/db/test/si002.tcl
new file mode 100644
index 000000000..7a1d8b05a
--- /dev/null
+++ b/db/test/si002.tcl
@@ -0,0 +1,167 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: si002.tcl,v 1.1 2001/04/07 03:18:30 krinsky Exp
+#
+# Sindex002: Basic cursor-based secondary index put/delete test.
+
+proc sindex002 { methods {nentries 200} {tnum 2} args } {
+ source ./include.tcl
+ global dict nsecondaries
+
+ # Primary method/args.
+ set pmethod [lindex $methods 0]
+ set pargs [convert_args $pmethod $args]
+ set pomethod [convert_method $pmethod]
+
+ # Method/args for all the secondaries. If only one method
+ # was specified, assume the same method and a standard N
+ # secondaries.
+ set methods [lrange $methods 1 end]
+ if { [llength $methods] == 0 } {
+ for { set i 0 } { $i < $nsecondaries } { incr i } {
+ lappend methods $pmethod
+ }
+ }
+
+ set argses [convert_argses $methods $args]
+ set omethods [convert_methods $methods]
+
+ puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
+ env_cleanup $testdir
+
+ set pname "primary00$tnum.db"
+ set snamebase "secondary00$tnum"
+
+ # Open an environment
+ # XXX if one is not supplied!
+ set env [berkdb env -create -home $testdir]
+ error_check_good env_open [is_valid_env $env] TRUE
+
+ # Open the primary.
+ set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
+ error_check_good primary_open [is_valid_db $pdb] TRUE
+
+ # Open and associate the secondaries
+ set sdbs {}
+ for { set i 0 } { $i < [llength $omethods] } { incr i } {
+ set sdb [eval {berkdb_open -create -env} $env \
+ [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
+ error_check_good second_open($i) [is_valid_db $sdb] TRUE
+
+ error_check_good db_associate($i) \
+ [$pdb associate [callback_n $i] $sdb] 0
+ lappend sdbs $sdb
+ }
+
+ puts "\tSindex00$tnum.a: Cursor put (-keyfirst/-keylast) loop"
+ set did [open $dict]
+ set pdbc [$pdb cursor]
+ error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
+ for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
+ if { [is_record_based $pmethod] == 1 } {
+ set key [expr $n + 1]
+ set datum $str
+ } else {
+ set key $str
+ gets $did datum
+ }
+ set ns($key) $n
+ set keys($n) $key
+ set data($n) [pad_data $pmethod $datum]
+
+ if { $n % 2 == 0 } {
+ set pflag " -keyfirst "
+ } else {
+ set pflag " -keylast "
+ }
+
+ set ret [eval {$pdbc put} $pflag \
+ {$key [chop_data $pmethod $datum]}]
+ error_check_good put($n) $ret 0
+ }
+ close $did
+ error_check_good pdbc_close [$pdbc close] 0
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
+
+ puts "\tSindex00$tnum.b: Cursor put overwrite (-current) loop"
+ set pdbc [$pdb cursor]
+ error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
+ for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
+ { set dbt [$pdbc get -next] } {
+ set key [lindex [lindex $dbt 0] 0]
+ set datum [lindex [lindex $dbt 0] 1]
+ set newd $datum.$key
+ set ret [eval {$pdbc put -current} [chop_data $pmethod $newd]]
+ error_check_good put_overwrite($key) $ret 0
+ set data($ns($key)) [pad_data $pmethod $newd]
+ }
+ error_check_good pdbc_close [$pdbc close] 0
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
+
+ puts "\tSindex00$tnum.c: Secondary c_pget/primary put overwrite loop"
+ # We walk the first secondary, then put-overwrite each primary key/data
+ # pair we find. This doubles as a DBC->c_pget test.
+ set sdb [lindex $sdbs 0]
+ set sdbc [$sdb cursor]
+ error_check_good sdb_cursor [is_valid_cursor $sdbc $sdb] TRUE
+ for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
+ { set dbt [$sdbc pget -next] } {
+ set pkey [lindex [lindex $dbt 0] 1]
+ set pdatum [lindex [lindex $dbt 0] 2]
+
+ # Extended entries will be showing up underneath us, in
+ # unpredictable places. Keep track of which pkeys
+ # we've extended, and don't extend them repeatedly.
+ if { [info exists pkeys_done($pkey)] == 1 } {
+ continue
+ } else {
+ set pkeys_done($pkey) 1
+ }
+
+ set newd $pdatum.[string range $pdatum 0 2]
+ set ret [eval {$pdb put} $pkey [chop_data $pmethod $newd]]
+ error_check_good pdb_put($pkey) $ret 0
+ set data($ns($pkey)) [pad_data $pmethod $newd]
+ }
+ error_check_good sdbc_close [$sdbc close] 0
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.c"
+
+ # Delete the second half of the entries through the primary.
+ # We do the second half so we can just pass keys(0..n/2)
+ # to check_secondaries.
+ set half [expr $nentries / 2]
+ puts "\tSindex00$tnum.d:\
+ Primary cursor delete loop: deleting $half entries"
+ set pdbc [$pdb cursor]
+ error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
+ set dbt [$pdbc get -first]
+ for { set i 0 } { [llength $dbt] > 0 && $i < $half } { incr i } {
+ error_check_good pdbc_del [$pdbc del] 0
+ set dbt [$pdbc get -next]
+ }
+ error_check_good pdbc_close [$pdbc close] 0
+ cursor_check_secondaries $pdb $sdbs $half "Sindex00$tnum.d"
+
+ # Delete half of what's left, through the first secondary.
+ set quar [expr $half / 2]
+ puts "\tSindex00$tnum.e:\
+ Secondary cursor delete loop: deleting $quar entries"
+ set sdb [lindex $sdbs 0]
+ set sdbc [$sdb cursor]
+ set dbt [$sdbc get -first]
+ for { set i 0 } { [llength $dbt] > 0 && $i < $quar } { incr i } {
+ error_check_good sdbc_del [$sdbc del] 0
+ set dbt [$sdbc get -next]
+ }
+ error_check_good sdbc_close [$sdbc close] 0
+ cursor_check_secondaries $pdb $sdbs $quar "Sindex00$tnum.e"
+
+ foreach sdb $sdbs {
+ error_check_good secondary_close [$sdb close] 0
+ }
+ error_check_good primary_close [$pdb close] 0
+ error_check_good env_close [$env close] 0
+}
diff --git a/db/test/si003.tcl b/db/test/si003.tcl
new file mode 100644
index 000000000..bf873db64
--- /dev/null
+++ b/db/test/si003.tcl
@@ -0,0 +1,142 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: si003.tcl,v 1.1 2001/04/07 03:18:30 krinsky Exp
+#
+# Sindex003: Basic secondary index put/delete test with secondaries
+# created mid-test.
+
+proc sindex003 { methods {nentries 200} {tnum 3} args } {
+ source ./include.tcl
+ global dict nsecondaries
+
+ # Primary method/args.
+ set pmethod [lindex $methods 0]
+ set pargs [convert_args $pmethod $args]
+ set pomethod [convert_method $pmethod]
+
+ # Method/args for all the secondaries. If only one method
+ # was specified, assume the same method and a standard N
+ # secondaries.
+ set methods [lrange $methods 1 end]
+ if { [llength $methods] == 0 } {
+ for { set i 0 } { $i < $nsecondaries } { incr i } {
+ lappend methods $pmethod
+ }
+ }
+
+ set argses [convert_argses $methods $args]
+ set omethods [convert_methods $methods]
+
+ puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
+ env_cleanup $testdir
+
+ set pname "primary00$tnum.db"
+ set snamebase "secondary00$tnum"
+
+ # Open an environment
+ # XXX if one is not supplied!
+ set env [eval {berkdb env -create -home $testdir}]
+ error_check_good env_open [is_valid_env $env] TRUE
+
+ # Open the primary.
+ set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
+ error_check_good primary_open [is_valid_db $pdb] TRUE
+
+ puts -nonewline "\tSindex00$tnum.a: Put loop ... "
+ set did [open $dict]
+ for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
+ if { [is_record_based $pmethod] == 1 } {
+ set key [expr $n + 1]
+ set datum $str
+ } else {
+ set key $str
+ gets $did datum
+ }
+ set keys($n) $key
+ set data($n) [pad_data $pmethod $datum]
+
+ set ret [eval {$pdb put} {$key [chop_data $pmethod $datum]}]
+ error_check_good put($n) $ret 0
+ }
+ close $did
+
+ # Open and associate the secondaries
+ set sdbs {}
+ puts "opening secondaries."
+ for { set i 0 } { $i < [llength $omethods] } { incr i } {
+ set sdb [eval {berkdb_open -create -env} $env \
+ [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
+ error_check_good second_open($i) [is_valid_db $sdb] TRUE
+
+ error_check_good db_associate($i) \
+ [$pdb associate -create [callback_n $i] $sdb] 0
+ lappend sdbs $sdb
+ }
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
+
+ puts -nonewline "\tSindex00$tnum.b: Put/overwrite loop ... "
+ for { set n 0 } { $n < $nentries } { incr n } {
+ set newd $data($n).$keys($n)
+ set ret [eval {$pdb put} {$keys($n) [chop_data $pmethod $newd]}]
+ error_check_good put_overwrite($n) $ret 0
+ set data($n) [pad_data $pmethod $newd]
+ }
+
+ # Close the secondaries again.
+ puts "closing secondaries."
+ for { set sdb [lindex $sdbs end] } { [string length $sdb] > 0 } \
+ { set sdb [lindex $sdbs end] } {
+ error_check_good second_close($sdb) [$sdb close] 0
+ set sdbs [lrange $sdbs 0 end-1]
+ check_secondaries \
+ $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
+ }
+
+
+ # Delete the second half of the entries through the primary.
+ # We do the second half so we can just pass keys(0..n/2)
+ # to check_secondaries.
+ set half [expr $nentries / 2]
+ puts -nonewline \
+ "\tSindex00$tnum.c: Primary delete loop: deleting $half entries ..."
+ for { set n $half } { $n < $nentries } { incr n } {
+ set ret [$pdb del $keys($n)]
+ error_check_good pdel($n) $ret 0
+ }
+
+ # Open and associate the secondaries
+ set sdbs {}
+ puts "\n\t\topening secondaries."
+ for { set i 0 } { $i < [llength $omethods] } { incr i } {
+ set sdb [eval {berkdb_open -create -env} $env \
+ [lindex $omethods $i] [lindex $argses $i] \
+ $snamebase.r2.$i.db]
+ error_check_good second_open($i) [is_valid_db $sdb] TRUE
+
+ error_check_good db_associate($i) \
+ [$pdb associate -create [callback_n $i] $sdb] 0
+ lappend sdbs $sdb
+ }
+ check_secondaries $pdb $sdbs $half keys data "Sindex00$tnum.c"
+
+ # Delete half of what's left, through the first secondary.
+ set quar [expr $half / 2]
+ puts "\tSindex00$tnum.d: Secondary delete loop: deleting $quar entries"
+ set sdb [lindex $sdbs 0]
+ set callback [callback_n 0]
+ for { set n $quar } { $n < $half } { incr n } {
+ set skey [$callback $keys($n) [pad_data $pmethod $data($n)]]
+ set ret [$sdb del $skey]
+ error_check_good sdel($n) $ret 0
+ }
+ check_secondaries $pdb $sdbs $quar keys data "Sindex00$tnum.d"
+
+ foreach sdb $sdbs {
+ error_check_good secondary_close [$sdb close] 0
+ }
+ error_check_good primary_close [$pdb close] 0
+ error_check_good env_close [$env close] 0
+}
diff --git a/db/test/si004.tcl b/db/test/si004.tcl
new file mode 100644
index 000000000..5bea69fd1
--- /dev/null
+++ b/db/test/si004.tcl
@@ -0,0 +1,193 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: si004.tcl,v 1.1 2001/04/07 03:18:30 krinsky Exp
+#
+# Sindex004: Basic cursor-based secondary index put/delete test, with
+# secondaries created mid-test.
+
+proc sindex004 { methods {nentries 200} {tnum 4} args } {
+ source ./include.tcl
+ global dict nsecondaries
+
+ # Primary method/args.
+ set pmethod [lindex $methods 0]
+ set pargs [convert_args $pmethod $args]
+ set pomethod [convert_method $pmethod]
+
+ # Method/args for all the secondaries. If only one method
+ # was specified, assume the same method and a standard N
+ # secondaries.
+ set methods [lrange $methods 1 end]
+ if { [llength $methods] == 0 } {
+ for { set i 0 } { $i < $nsecondaries } { incr i } {
+ lappend methods $pmethod
+ }
+ }
+
+ set argses [convert_argses $methods $args]
+ set omethods [convert_methods $methods]
+
+ puts "Sindex00$tnum ($pmethod/$methods) $nentries equal key/data pairs"
+ env_cleanup $testdir
+
+ set pname "primary00$tnum.db"
+ set snamebase "secondary00$tnum"
+
+ # Open an environment
+ # XXX if one is not supplied!
+ set env [berkdb env -create -home $testdir]
+ error_check_good env_open [is_valid_env $env] TRUE
+
+ # Open the primary.
+ set pdb [eval {berkdb_open -create -env} $env $pomethod $pargs $pname]
+ error_check_good primary_open [is_valid_db $pdb] TRUE
+
+ puts -nonewline \
+ "\tSindex00$tnum.a: Cursor put (-keyfirst/-keylast) loop ... "
+ set did [open $dict]
+ set pdbc [$pdb cursor]
+ error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
+ for { set n 0 } { [gets $did str] != -1 && $n < $nentries } { incr n } {
+ if { [is_record_based $pmethod] == 1 } {
+ set key [expr $n + 1]
+ set datum $str
+ } else {
+ set key $str
+ gets $did datum
+ }
+ set ns($key) $n
+ set keys($n) $key
+ set data($n) [pad_data $pmethod $datum]
+
+ if { $n % 2 == 0 } {
+ set pflag " -keyfirst "
+ } else {
+ set pflag " -keylast "
+ }
+
+ set ret [eval {$pdbc put} $pflag \
+ {$key [chop_data $pmethod $datum]}]
+ error_check_good put($n) $ret 0
+ }
+ close $did
+ error_check_good pdbc_close [$pdbc close] 0
+
+ # Open and associate the secondaries
+ set sdbs {}
+ puts "\n\t\topening secondaries."
+ for { set i 0 } { $i < [llength $omethods] } { incr i } {
+ set sdb [eval {berkdb_open -create -env} $env \
+ [lindex $omethods $i] [lindex $argses $i] $snamebase.$i.db]
+ error_check_good second_open($i) [is_valid_db $sdb] TRUE
+
+ error_check_good db_associate($i) \
+ [$pdb associate -create [callback_n $i] $sdb] 0
+ lappend sdbs $sdb
+ }
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.a"
+
+ puts "\tSindex00$tnum.b: Cursor put overwrite (-current) loop"
+ set pdbc [$pdb cursor]
+ error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
+ for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
+ { set dbt [$pdbc get -next] } {
+ set key [lindex [lindex $dbt 0] 0]
+ set datum [lindex [lindex $dbt 0] 1]
+ set newd $datum.$key
+ set ret [eval {$pdbc put -current} [chop_data $pmethod $newd]]
+ error_check_good put_overwrite($key) $ret 0
+ set data($ns($key)) [pad_data $pmethod $newd]
+ }
+ error_check_good pdbc_close [$pdbc close] 0
+ check_secondaries $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
+
+ puts -nonewline "\tSindex00$tnum.c:\
+ Secondary c_pget/primary put overwrite loop ... "
+ # We walk the first secondary, then put-overwrite each primary key/data
+ # pair we find. This doubles as a DBC->c_pget test.
+ set sdb [lindex $sdbs 0]
+ set sdbc [$sdb cursor]
+ error_check_good sdb_cursor [is_valid_cursor $sdbc $sdb] TRUE
+ for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
+ { set dbt [$sdbc pget -next] } {
+ set pkey [lindex [lindex $dbt 0] 1]
+ set pdatum [lindex [lindex $dbt 0] 2]
+
+ # Extended entries will be showing up underneath us, in
+ # unpredictable places. Keep track of which pkeys
+ # we've extended, and don't extend them repeatedly.
+ if { [info exists pkeys_done($pkey)] == 1 } {
+ continue
+ } else {
+ set pkeys_done($pkey) 1
+ }
+
+ set newd $pdatum.[string range $pdatum 0 2]
+ set ret [eval {$pdb put} $pkey [chop_data $pmethod $newd]]
+ error_check_good pdb_put($pkey) $ret 0
+ set data($ns($pkey)) [pad_data $pmethod $newd]
+ }
+ error_check_good sdbc_close [$sdbc close] 0
+
+ # Close the secondaries again.
+ puts "\n\t\tclosing secondaries."
+ for { set sdb [lindex $sdbs end] } { [string length $sdb] > 0 } \
+ { set sdb [lindex $sdbs end] } {
+ error_check_good second_close($sdb) [$sdb close] 0
+ set sdbs [lrange $sdbs 0 end-1]
+ check_secondaries \
+ $pdb $sdbs $nentries keys data "Sindex00$tnum.b"
+ }
+
+ # Delete the second half of the entries through the primary.
+ # We do the second half so we can just pass keys(0..n/2)
+ # to check_secondaries.
+ set half [expr $nentries / 2]
+ puts -nonewline "\tSindex00$tnum.d:\
+ Primary cursor delete loop: deleting $half entries ... "
+ set pdbc [$pdb cursor]
+ error_check_good pdb_cursor [is_valid_cursor $pdbc $pdb] TRUE
+ set dbt [$pdbc get -first]
+ for { set i 0 } { [llength $dbt] > 0 && $i < $half } { incr i } {
+ error_check_good pdbc_del [$pdbc del] 0
+ set dbt [$pdbc get -next]
+ }
+ error_check_good pdbc_close [$pdbc close] 0
+
+ set sdbs {}
+ puts "\n\t\topening secondaries."
+ for { set i 0 } { $i < [llength $omethods] } { incr i } {
+ set sdb [eval {berkdb_open -create -env} $env \
+ [lindex $omethods $i] [lindex $argses $i] \
+ $snamebase.r2.$i.db]
+ error_check_good second_open($i) [is_valid_db $sdb] TRUE
+
+ error_check_good db_associate($i) \
+ [$pdb associate -create [callback_n $i] $sdb] 0
+ lappend sdbs $sdb
+ }
+ cursor_check_secondaries $pdb $sdbs $half "Sindex00$tnum.d"
+
+ # Delete half of what's left, through the first secondary.
+ set quar [expr $half / 2]
+ puts "\tSindex00$tnum.e:\
+ Secondary cursor delete loop: deleting $quar entries"
+ set sdb [lindex $sdbs 0]
+ set sdbc [$sdb cursor]
+ set dbt [$sdbc get -first]
+ for { set i 0 } { [llength $dbt] > 0 && $i < $quar } { incr i } {
+ error_check_good sdbc_del [$sdbc del] 0
+ set dbt [$sdbc get -next]
+ }
+ error_check_good sdbc_close [$sdbc close] 0
+ cursor_check_secondaries $pdb $sdbs $quar "Sindex00$tnum.e"
+
+ foreach sdb $sdbs {
+ error_check_good secondary_close [$sdb close] 0
+ }
+ error_check_good primary_close [$pdb close] 0
+ error_check_good env_close [$env close] 0
+}
diff --git a/db/test/sindex.tcl b/db/test/sindex.tcl
new file mode 100644
index 000000000..bb0effd4c
--- /dev/null
+++ b/db/test/sindex.tcl
@@ -0,0 +1,247 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: sindex.tcl,v 1.1 2001/04/07 03:18:30 krinsky Exp
+#
+# Secondary index test driver and maintenance routines.
+#
+# Breaking from the usual convention, we put the driver function
+# for the secondary index tests here, in its own file. The reason
+# for this is that it's something which compartmentalizes nicely,
+# has little in common with other driver functions, and
+# is likely to be run on its own from time to time.
+#
+# The secondary index tests themselves live in si0*.tcl.
+
+# Standard number of secondary indices to create if a single-element
+# list of methods is passed into the secondary index tests.
+global nsecondaries
+set nsecondaries 2
+
+# Run the secondary index tests.
+proc sindex { {verbose 1} args } {
+ global verbose_check_secondaries
+ set verbose_check_secondaries $verbose
+
+ # Run basic tests with a single secondary index and a small number
+ # of keys, then again with a larger number of keys. (Note that
+ # we can't go above 5000, since we use two items from our
+ # 10K-word list for each key/data pair.)
+ foreach n { 200 5000 } {
+ foreach pm { btree hash recno frecno queue queueext } {
+ # XXX: ddhash currently does not work due to #3726
+ foreach sm { dbtree dhash ddbtree btree hash } {
+ sindex001 [list $pm $sm $sm] $n
+ sindex002 [list $pm $sm $sm] $n
+ # Skip tests 3 & 4 for large lists;
+ # they're not that interesting.
+ if { $n < 1000 } {
+ sindex003 [list $pm $sm $sm] $n
+ sindex004 [list $pm $sm $sm] $n
+ }
+ }
+ }
+ }
+
+ # Run test with 50 secondaries.
+ foreach pm { btree hash } {
+ set methlist [list $pm]
+ for { set i 0 } { $i < 50 } { incr i } {
+ # XXX this should incorporate hash after #3726
+ if { $i % 2 == 0 } {
+ lappend methlist "dbtree"
+ } else {
+ lappend methlist "ddbtree"
+ }
+ }
+ sindex001 $methlist 500
+ sindex002 $methlist 500
+ sindex003 $methlist 500
+ sindex004 $methlist 500
+ }
+}
+
+
+# The callback function we use for each given secondary in most tests
+# is a simple function of its place in the list of secondaries (0-based)
+# and the access method (since recnos may need different callbacks).
+#
+# !!!
+# Note that callbacks 0-3 return unique secondary keys if the input data
+# are unique; callbacks 4 and higher may not, so don't use them with
+# the normal wordlist and secondaries that don't support dups.
+# The callbacks that incorporate a key don't work properly with recno
+# access methods, at least not in the current test framework (the
+# error_check_good lines test for e.g. 1foo, when the database has
+# e.g. 0x010x000x000x00foo).
+proc callback_n { n } {
+ switch $n {
+ 0 { return _s_reversedata }
+ 1 { return _s_noop }
+ 2 { return _s_concatkeydata }
+ 3 { return _s_concatdatakey }
+ 4 { return _s_reverseconcat }
+ 5 { return _s_truncdata }
+ 6 { return _s_alwayscocacola }
+ }
+ return _s_noop
+}
+
+proc _s_reversedata { a b } { return [reverse $b] }
+proc _s_truncdata { a b } { return [string range $b 1 end] }
+proc _s_concatkeydata { a b } { return $a$b }
+proc _s_concatdatakey { a b } { return $b$a }
+proc _s_reverseconcat { a b } { return [reverse $a$b] }
+proc _s_alwayscocacola { a b } { return "Coca-Cola" }
+proc _s_noop { a b } { return $b }
+
+# Should the check_secondary routines print lots of output?
+set verbose_check_secondaries 0
+
+# Given a primary database handle, a list of secondary handles, a
+# number of entries, and arrays of keys and data, verify that all
+# databases have what they ought to.
+proc check_secondaries { pdb sdbs nentries keyarr dataarr {pref "Check"} } {
+ upvar $keyarr keys
+ upvar $dataarr data
+ global verbose_check_secondaries
+
+ # Make sure each key/data pair is in the primary.
+ if { $verbose_check_secondaries } {
+ puts "\t\t$pref.1: Each key/data pair is in the primary"
+ }
+ for { set i 0 } { $i < $nentries } { incr i } {
+ error_check_good pdb_get($i) [$pdb get $keys($i)] \
+ [list [list $keys($i) $data($i)]]
+ }
+
+ for { set j 0 } { $j < [llength $sdbs] } { incr j } {
+ # Make sure each key/data pair is in this secondary.
+ if { $verbose_check_secondaries } {
+ puts "\t\t$pref.2:\
+ Each skey/key/data tuple is in secondary #$j"
+ }
+ for { set i 0 } { $i < $nentries } { incr i } {
+ set sdb [lindex $sdbs $j]
+ set skey [[callback_n $j] $keys($i) $data($i)]
+ error_check_good sdb($j)_pget($i) \
+ [$sdb pget -get_both $skey $keys($i)] \
+ [list [list $skey $keys($i) $data($i)]]
+ }
+
+ # Make sure this secondary contains only $nentries
+ # items.
+ if { $verbose_check_secondaries } {
+ puts "\t\t$pref.3: Secondary #$j has $nentries items"
+ }
+ set dbc [$sdb cursor]
+ error_check_good dbc($i) \
+ [is_valid_cursor $dbc $sdb] TRUE
+ for { set k 0 } { [llength [$dbc get -next]] > 0 } \
+ { incr k } { }
+ error_check_good numitems($i) $k $nentries
+ error_check_good dbc($i)_close [$dbc close] 0
+ }
+
+ if { $verbose_check_secondaries } {
+ puts "\t\t$pref.4: Primary has $nentries items"
+ }
+ set dbc [$pdb cursor]
+ error_check_good pdbc [is_valid_cursor $dbc $pdb] TRUE
+ for { set k 0 } { [llength [$dbc get -next]] > 0 } { incr k } { }
+ error_check_good numitems $k $nentries
+ error_check_good pdbc_close [$dbc close] 0
+}
+
+# Given a primary database handle and a list of secondary handles, walk
+# through the primary and make sure all the secondaries are correct,
+# then walk through the secondaries and make sure the primary is correct.
+#
+# This is slightly less rigorous than the normal check_secondaries--we
+# use it whenever we don't have up-to-date "keys" and "data" arrays.
+proc cursor_check_secondaries { pdb sdbs nentries { pref "Check" } } {
+ global verbose_check_secondaries
+
+ # Make sure each key/data pair in the primary is in each secondary.
+ set pdbc [$pdb cursor]
+ error_check_good ccs_pdbc [is_valid_cursor $pdbc $pdb] TRUE
+ set i 0
+ if { $verbose_check_secondaries } {
+ puts "\t\t$pref.1:\
+ Key/data in primary => key/data in secondaries"
+ }
+
+ for { set dbt [$pdbc get -first] } { [llength $dbt] > 0 } \
+ { set dbt [$pdbc get -next] } {
+ incr i
+ set pkey [lindex [lindex $dbt 0] 0]
+ set pdata [lindex [lindex $dbt 0] 1]
+ for { set j 0 } { $j < [llength $sdbs] } { incr j } {
+ set sdb [lindex $sdbs $j]
+ set sdbt [$sdb pget -get_both \
+ [[callback_n $j] $pkey $pdata] $pkey]
+ error_check_good pkey($pkey,$j) \
+ [lindex [lindex $sdbt 0] 1] $pkey
+ error_check_good pdata($pdata,$j) \
+ [lindex [lindex $sdbt 0] 2] $pdata
+ }
+ }
+ error_check_good ccs_pdbc_close [$pdbc close] 0
+ error_check_good primary_has_nentries $i $nentries
+
+ for { set j 0 } { $j < [llength $sdbs] } { incr j } {
+ if { $verbose_check_secondaries } {
+ puts "\t\t$pref.2:\
+ Key/data in secondary #$j => key/data in primary"
+ }
+ set sdb [lindex $sdbs $j]
+ set sdbc [$sdb cursor]
+ error_check_good ccs_sdbc($j) [is_valid_cursor $sdbc $sdb] TRUE
+ set i 0
+ for { set dbt [$sdbc pget -first] } { [llength $dbt] > 0 } \
+ { set dbt [$sdbc pget -next] } {
+ incr i
+ set pkey [lindex [lindex $dbt 0] 1]
+ set pdata [lindex [lindex $dbt 0] 2]
+ error_check_good pdb_get($pkey/$pdata,$j) \
+ [$pdb get -get_both $pkey $pdata] \
+ [list [list $pkey $pdata]]
+ }
+ error_check_good secondary($j)_has_nentries $i $nentries
+
+ # To exercise pget -last/pget -prev, we do it backwards too.
+ set i 0
+ for { set dbt [$sdbc pget -last] } { [llength $dbt] > 0 } \
+ { set dbt [$sdbc pget -prev] } {
+ incr i
+ set pkey [lindex [lindex $dbt 0] 1]
+ set pdata [lindex [lindex $dbt 0] 2]
+ error_check_good pdb_get_bkwds($pkey/$pdata,$j) \
+ [$pdb get -get_both $pkey $pdata] \
+ [list [list $pkey $pdata]]
+ }
+ error_check_good secondary($j)_has_nentries_bkwds $i $nentries
+
+ error_check_good ccs_sdbc_close($j) [$sdbc close] 0
+ }
+}
+
+# The secondary index tests take a list of the access methods that
+# each array ought to use. Convert at one blow into a list of converted
+# argses and omethods for each method in the list.
+proc convert_argses { methods largs } {
+ set ret {}
+ foreach m $methods {
+ lappend ret [convert_args $m $largs]
+ }
+ return $ret
+}
+proc convert_methods { methods } {
+ set ret {}
+ foreach m $methods {
+ lappend ret [convert_method $m]
+ }
+ return $ret
+}
diff --git a/db/test/test092.tcl b/db/test/test092.tcl
new file mode 100644
index 000000000..5c35aaa2b
--- /dev/null
+++ b/db/test/test092.tcl
@@ -0,0 +1,238 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: test092.tcl,v 11.2 2001/05/04 19:14:05 sue Exp
+#
+# DB Test 92 {access method}
+#
+# Test DB_DIRTY_READ
+# We set up a database with nentries in it. We then open the database
+# read-only twice. One with dirty read and one without. We open the
+# database for writing and update some entries in it. Then read those
+# new entries via db->get (clean and dirty), and via cursors (clean and
+# dirty).
+proc test092 { method {nentries 1000} args } {
+ source ./include.tcl
+ #
+ # If we are using an env, then skip this test. It needs its own.
+ set eindex [lsearch -exact $args "-env"]
+ if { $eindex != -1 } {
+ incr eindex
+ set env [lindex $args $eindex]
+ puts "Test092 skipping for env $env"
+ return
+ }
+ set args [convert_args $method $args]
+ set omethod [convert_method $method]
+
+ puts "Test092: Dirty Read Test $method $nentries"
+
+ # Create the database and open the dictionary
+ set testfile test092.db
+ set t1 $testdir/t1
+ set t2 $testdir/t2
+ set t3 $testdir/t3
+
+ env_cleanup $testdir
+
+ set lmax [expr $nentries * 2]
+ set env [berkdb env -create -lock_max_locks $lmax -txn -home $testdir]
+ error_check_good dbenv [is_valid_env $env] TRUE
+
+ set db [eval {berkdb_open -env $env -create \
+ -mode 0644 $omethod} {$testfile}]
+ error_check_good dbopen [is_valid_db $db] TRUE
+
+ # Here is the loop where we put each key/data pair.
+ # Key is entry, data is entry also.
+ puts "\tTest092.a: put loop"
+ set count 0
+ set did [open $dict]
+ while { [gets $did str] != -1 && $count < $nentries } {
+ if { [is_record_based $method] == 1 } {
+ global kvals
+
+ set key [expr $count + 1]
+ set kvals($key) [pad_data $method $str]
+ } else {
+ set key $str
+ }
+ set ret [eval {$db put} {$key [chop_data $method $str]}]
+ error_check_good put:$db $ret 0
+ incr count
+ }
+ close $did
+ error_check_good close:$db [$db close] 0
+
+ puts "\tTest092.b: Opening all the handles"
+ #
+ # Open all of our handles.
+ # We need:
+ # 1. Our main txn (t).
+ # 2. A txn that can read dirty data (tdr).
+ # 3. A db handle for writing via txn (dbtxn).
+ # 4. A db handle for clean data (dbcl).
+ # 5. A db handle for dirty data (dbdr).
+ # 6. A cursor handle for dirty txn data (clean db handle using
+ # the dirty txn handle on the cursor call) (dbccl1).
+ # 7. A cursor handle for dirty data (dirty on get call) (dbcdr0).
+ # 8. A cursor handle for dirty data (dirty on cursor call) (dbcdr1).
+ set t [$env txn]
+ error_check_good txnbegin [is_valid_txn $t $env] TRUE
+
+ set tdr [$env txn -dirty]
+ error_check_good txnbegin:dr [is_valid_txn $tdr $env] TRUE
+
+ set dbtxn [eval {berkdb_open -env $env -dirty \
+ -mode 0644 $omethod} {$testfile}]
+ error_check_good dbopen:dbtxn [is_valid_db $dbtxn] TRUE
+
+ set dbcl [eval {berkdb_open -env $env \
+ -rdonly -mode 0644 $omethod} {$testfile}]
+ error_check_good dbopen:dbcl [is_valid_db $dbcl] TRUE
+
+ set dbdr [eval {berkdb_open -env $env -dirty \
+ -rdonly -mode 0644 $omethod} {$testfile}]
+ error_check_good dbopen:dbdr [is_valid_db $dbdr] TRUE
+
+ set dbccl [$dbcl cursor -txn $tdr]
+ error_check_good dbcurs:dbcl [is_valid_cursor $dbccl $dbcl] TRUE
+
+ set dbcdr0 [$dbdr cursor]
+ error_check_good dbcurs:dbdr0 [is_valid_cursor $dbcdr0 $dbdr] TRUE
+
+ set dbcdr1 [$dbdr cursor -dirty]
+ error_check_good dbcurs:dbdr1 [is_valid_cursor $dbcdr1 $dbdr] TRUE
+
+ #
+ # Now that we have all of our handles, change all the data in there
+ # to be the key and data the same, but data is capitalized.
+ puts "\tTest092.c: put/get data within a txn"
+ set gflags ""
+ if { [is_record_based $method] == 1 } {
+ set checkfunc test092dr_recno.check
+ append gflags " -recno"
+ } else {
+ set checkfunc test092dr.check
+ }
+ set count 0
+ set did [open $dict]
+ while { [gets $did str] != -1 && $count < $nentries } {
+ if { [is_record_based $method] == 1 } {
+ set key [expr $count + 1]
+ } else {
+ set key $str
+ }
+ set ustr [string toupper $str]
+ set clret [list [list $key [pad_data $method $str]]]
+ set drret [list [list $key [pad_data $method $ustr]]]
+ #
+ # Put the data in the txn.
+ #
+ set ret [eval {$dbtxn put} -txn $t \
+ {$key [chop_data $method $ustr]}]
+ error_check_good put:$dbtxn $ret 0
+
+ #
+ # Now get the data using the different db handles and
+ # make sure it is dirty or clean data.
+ #
+ # Using the dirty txn should show us dirty data
+ set ret [eval {$dbcl get -txn $tdr} $gflags {$key}]
+ error_check_good dbdr2:get $ret $drret
+
+ set ret [eval {$dbdr get -dirty} $gflags {$key}]
+ error_check_good dbdr1:get $ret $drret
+
+ set ret [eval {$dbdr get -txn $tdr} $gflags {$key}]
+ error_check_good dbdr2:get $ret $drret
+
+ incr count
+ }
+ close $did
+
+ puts "\tTest092.d: Check dirty data using dirty txn and clean db/cursor"
+ dump_file_walk $dbccl $t1 $checkfunc "-first" "-next"
+
+ puts "\tTest092.e: Check dirty data using -dirty cget flag"
+ dump_file_walk $dbcdr0 $t2 $checkfunc "-first" "-next" "-dirty"
+
+ puts "\tTest092.f: Check dirty data using -dirty cursor"
+ dump_file_walk $dbcdr1 $t3 $checkfunc "-first" "-next"
+
+ #
+ # We must close these before aborting the real txn
+ # because they all hold read locks on the pages.
+ #
+ error_check_good dbccl:close [$dbccl close] 0
+ error_check_good dbcdr0:close [$dbcdr0 close] 0
+ error_check_good dbcdr1:close [$dbcdr1 close] 0
+
+ #
+ # Now abort the modifying transaction and rerun the data checks.
+ #
+ puts "\tTest092.g: Aborting the write-txn"
+ error_check_good txnabort [$t abort] 0
+
+ set dbccl [$dbcl cursor -txn $tdr]
+ error_check_good dbcurs:dbcl [is_valid_cursor $dbccl $dbcl] TRUE
+
+ set dbcdr0 [$dbdr cursor]
+ error_check_good dbcurs:dbdr0 [is_valid_cursor $dbcdr0 $dbdr] TRUE
+
+ set dbcdr1 [$dbdr cursor -dirty]
+ error_check_good dbcurs:dbdr1 [is_valid_cursor $dbcdr1 $dbdr] TRUE
+
+ if { [is_record_based $method] == 1 } {
+ set checkfunc test092cl_recno.check
+ } else {
+ set checkfunc test092cl.check
+ }
+ puts "\tTest092.h: Check clean data using -dirty cget flag"
+ dump_file_walk $dbccl $t1 $checkfunc "-first" "-next"
+
+ puts "\tTest092.i: Check clean data using -dirty cget flag"
+ dump_file_walk $dbcdr0 $t2 $checkfunc "-first" "-next" "-dirty"
+
+ puts "\tTest092.j: Check clean data using -dirty cursor"
+ dump_file_walk $dbcdr1 $t3 $checkfunc "-first" "-next"
+
+ # Clean up our handles
+ error_check_good dbccl:close [$dbccl close] 0
+ error_check_good tdrcommit [$tdr commit] 0
+ error_check_good dbcdr0:close [$dbcdr0 close] 0
+ error_check_good dbcdr1:close [$dbcdr1 close] 0
+ error_check_good dbclose [$dbcl close] 0
+ error_check_good dbclose [$dbdr close] 0
+ error_check_good dbclose [$dbtxn close] 0
+ error_check_good envclose [$env close] 0
+}
+
+# Check functions for test092; keys and data are identical
+# Clean checks mean keys and data are identical.
+# Dirty checks mean data are uppercase versions of keys.
+proc test092cl.check { key data } {
+ error_check_good "key/data mismatch" $key $data
+}
+
+proc test092cl_recno.check { key data } {
+ global kvals
+
+ error_check_good key"$key"_exists [info exists kvals($key)] 1
+ error_check_good "key/data mismatch, key $key" $data $kvals($key)
+}
+
+proc test092dr.check { key data } {
+ error_check_good "key/data mismatch" $key [string tolower $data]
+}
+
+proc test092dr_recno.check { key data } {
+ global kvals
+
+ error_check_good key"$key"_exists [info exists kvals($key)] 1
+ error_check_good "key/data mismatch, key $key" $data \
+ [string touppper $kvals($key)]
+}
+
diff --git a/db/test/test093.tcl b/db/test/test093.tcl
new file mode 100644
index 000000000..2168f9977
--- /dev/null
+++ b/db/test/test093.tcl
@@ -0,0 +1,306 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: test093.tcl,v 11.6 2001/05/07 13:42:41 krinsky Exp
+#
+# DB Test 93 {access method}
+# Test bt comparison proc.
+# Use the first 10,000 entries from the dictionary.
+# Insert each with self as key and data; retrieve each.
+# After all are entered, retrieve all; compare output to original.
+# Close file, reopen, do retrieve and re-verify.
+proc test093 { method {nentries 10000} {tnum "93"} args} {
+ source ./include.tcl
+ global btvals
+ global btvalsck
+
+ set dbargs [convert_args $method $args]
+ set omethod [convert_method $method]
+
+ puts "Test0$tnum: $method ($args) $nentries using btcompare"
+
+ if { [is_btree $method] != 1 } {
+ puts "Skipping for method $method."
+ return
+ }
+
+ test093_run $omethod $dbargs $nentries $tnum test093_cmp1 test093_sort1
+ test093_runbig $omethod $dbargs $nentries $tnum \
+ test093_cmp1 test093_sort1
+ test093_run $omethod $dbargs $nentries $tnum test093_cmp2 test093_sort2
+ #
+ # Don't bother running the second, really slow, comparison
+ # function on test093_runbig (file contents).
+
+ # Clean up so verification doesn't fail. (There's currently
+ # no way to specify a comparison function to berkdb dbverify.)
+ # If we are using an env, then testfile should just be the db name.
+ # Otherwise it is the test directory and the name.
+ set eindex [lsearch -exact $dbargs "-env"]
+ if { $eindex == -1 } {
+ set env NULL
+ } else {
+ set env [lindex $dbargs $eindex]
+ }
+ cleanup $testdir $env
+}
+
+proc test093_run { method dbargs nentries tnum cmpfunc sortfunc } {
+ source ./include.tcl
+ global btvals
+ global btvalsck
+
+
+ # Create the database and open the dictionary
+ set eindex [lsearch -exact $dbargs "-env"]
+ #
+ # If we are using an env, then testfile should just be the db name.
+ # Otherwise it is the test directory and the name.
+ if { $eindex == -1 } {
+ set testfile $testdir/test0$tnum.db
+ set env NULL
+ } else {
+ set testfile test0$tnum.db
+ incr eindex
+ set env [lindex $dbargs $eindex]
+ }
+ cleanup $testdir $env
+
+ set db [eval {berkdb_open -btcompare $cmpfunc \
+ -create -truncate -mode 0644} $method $dbargs $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+ set did [open $dict]
+
+ set t1 $testdir/t1
+ set t2 $testdir/t2
+ set t3 $testdir/t3
+ set pflags ""
+ set gflags ""
+ set txn ""
+ set btvals {}
+ set btvalsck {}
+ set checkfunc test093_check
+ puts "\tTest0$tnum.a: put/get loop"
+ # Here is the loop where we put and get each key/data pair
+ set count 0
+ while { [gets $did str] != -1 && $count < $nentries } {
+ set key $str
+ set str [reverse $str]
+ set ret [eval \
+ {$db put} $txn $pflags {$key [chop_data $method $str]}]
+ error_check_good put $ret 0
+
+ lappend btvals $key
+
+ set ret [eval {$db get} $gflags {$key}]
+ error_check_good \
+ get $ret [list [list $key [pad_data $method $str]]]
+
+ incr count
+ }
+ close $did
+ # Now we will get each key from the DB and compare the results
+ # to the original.
+ puts "\tTest0$tnum.b: dump file"
+ dump_file $db $txn $t1 $checkfunc
+ error_check_good db_close [$db close] 0
+
+ # Now compare the keys to see if they match the dictionary (or ints)
+ set q q
+ filehead $nentries $dict $t2
+ filesort $t2 $t3
+ file rename -force $t3 $t2
+ filesort $t1 $t3
+
+ error_check_good Test0$tnum:diff($t3,$t2) \
+ [filecmp $t3 $t2] 0
+
+ puts "\tTest0$tnum.c: dump file in order"
+ # Now, reopen the file and run the last test again.
+ # We open it here, ourselves, because all uses of the db
+ # need to have the correct comparison func set. Then
+ # call dump_file_direction directly.
+ set btvalsck {}
+ set db [eval {berkdb_open -btcompare $cmpfunc -rdonly} \
+ $dbargs $method $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+ dump_file_direction $db $txn $t1 $checkfunc "-first" "-next"
+ error_check_good db_close [$db close] 0
+
+ #
+ # We need to sort btvals according to the comparison function.
+ # Once that is done, btvalsck and btvals should be the same.
+ puts "\tTest0$tnum.d: check file order"
+
+ $sortfunc
+
+ error_check_good btvals:len [llength $btvals] [llength $btvalsck]
+ for {set i 0} {$i < $nentries} {incr i} {
+ error_check_good vals:$i [lindex $btvals $i] \
+ [lindex $btvalsck $i]
+ }
+}
+
+proc test093_runbig { method dbargs nentries tnum cmpfunc sortfunc } {
+ source ./include.tcl
+ global btvals
+ global btvalsck
+
+
+ # Create the database and open the dictionary
+ set eindex [lsearch -exact $dbargs "-env"]
+ #
+ # If we are using an env, then testfile should just be the db name.
+ # Otherwise it is the test directory and the name.
+ if { $eindex == -1 } {
+ set testfile $testdir/test0$tnum.db
+ set env NULL
+ } else {
+ set testfile test0$tnum.db
+ incr eindex
+ set env [lindex $dbargs $eindex]
+ }
+ cleanup $testdir $env
+
+ set db [eval {berkdb_open -btcompare $cmpfunc \
+ -create -truncate -mode 0644} $method $dbargs $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+
+ set t1 $testdir/t1
+ set t2 $testdir/t2
+ set t3 $testdir/t3
+ set t4 $testdir/t4
+ set pflags ""
+ set gflags ""
+ set txn ""
+ set btvals {}
+ set btvalsck {}
+ set checkfunc test093_checkbig
+ puts "\tTest0$tnum.e: big key put/get loop key=filecontents data=filename"
+ # Here is the loop where we put and get each key/data pair
+ set file_list [glob ../*/*.c ./libdb.so.3.0 ./libtool ./libtool.exe]
+
+ set count 0
+ foreach f $file_list {
+ set fid [open $f r]
+ fconfigure $fid -translation binary
+ set key [read $fid]
+ close $fid
+
+ set ret [eval {$db put} $txn $pflags {$key \
+ [chop_data $method $f]}]
+ error_check_good put_file $ret 0
+
+ lappend btvals $key
+
+ # Should really catch errors
+ set fid [open $t4 w]
+ fconfigure $fid -translation binary
+ if [catch {eval {$db get} $gflags {$key}} data] {
+ puts -nonewline $fid $data
+ } else {
+ # Data looks like {{key data}}
+ set key [lindex [lindex $data 0] 0]
+ puts -nonewline $fid $key
+ }
+ close $fid
+ error_check_good \
+ Test093:diff($f,$t4) [filecmp $f $t4] 0
+
+ incr count
+ }
+
+ # Now we will get each key from the DB and compare the results
+ # to the original.
+ puts "\tTest0$tnum.f: big dump file"
+ dump_file $db $txn $t1 $checkfunc
+ error_check_good db_close [$db close] 0
+
+ puts "\tTest0$tnum.g: dump file in order"
+ # Now, reopen the file and run the last test again.
+ # We open it here, ourselves, because all uses of the db
+ # need to have the correct comparison func set. Then
+ # call dump_file_direction directly.
+
+ set btvalsck {}
+ set db [eval {berkdb_open -btcompare $cmpfunc -rdonly} \
+ $dbargs $method $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+ dump_file_direction $db $txn $t1 $checkfunc "-first" "-next"
+ error_check_good db_close [$db close] 0
+
+ #
+ # We need to sort btvals according to the comparison function.
+ # Once that is done, btvalsck and btvals should be the same.
+ puts "\tTest0$tnum.h: check file order"
+
+ $sortfunc
+ error_check_good btvals:len [llength $btvals] [llength $btvalsck]
+
+ set end [llength $btvals]
+ for {set i 0} {$i < $end} {incr i} {
+ error_check_good vals:$i [lindex $btvals $i] \
+ [lindex $btvalsck $i]
+ }
+}
+
+# Simple bt comparison.
+proc test093_cmp1 { a b } {
+ return [string compare $b $a]
+}
+
+# Simple bt sorting.
+proc test093_sort1 {} {
+ global btvals
+ #
+ # This one is easy, just sort in reverse.
+ #
+ set btvals [lsort -decreasing $btvals]
+}
+
+proc test093_cmp2 { a b } {
+ set arev [reverse $a]
+ set brev [reverse $b]
+ return [string compare $arev $brev]
+}
+
+proc test093_sort2 {} {
+ global btvals
+
+ # We have to reverse them, then sorts them.
+ # Then reverse them back to real words.
+ set rbtvals {}
+ foreach i $btvals {
+ lappend rbtvals [reverse $i]
+ }
+ set rbtvals [lsort -increasing $rbtvals]
+ set newbtvals {}
+ foreach i $rbtvals {
+ lappend newbtvals [reverse $i]
+ }
+ set btvals $newbtvals
+}
+
+# Check function for test093; keys and data are identical
+proc test093_check { key data } {
+ global btvalsck
+
+ error_check_good "key/data mismatch" $data [reverse $key]
+ lappend btvalsck $key
+}
+
+# Check function for test093 big keys;
+proc test093_checkbig { key data } {
+ source ./include.tcl
+ global btvalsck
+
+ set fid [open $data r]
+ fconfigure $fid -translation binary
+ set cont [read $fid]
+ close $fid
+ error_check_good "key/data mismatch" $key $cont
+ lappend btvalsck $key
+}
+
diff --git a/db/test/test094.tcl b/db/test/test094.tcl
new file mode 100644
index 000000000..a673bb182
--- /dev/null
+++ b/db/test/test094.tcl
@@ -0,0 +1,184 @@
+# See the file LICENSE for redistribution information.
+#
+# Copyright (c) 1996-2001
+# Sleepycat Software. All rights reserved.
+#
+# Id: test094.tcl,v 11.2 2001/05/07 13:42:41 krinsky Exp
+#
+# DB Test 94 {access method}
+# Test bt comparison proc.
+# Use the first 10,000 entries from the dictionary.
+# Insert each with self as key and data; retrieve each.
+# After all are entered, retrieve all; compare output to original.
+# Close file, reopen, do retrieve and re-verify.
+proc test094 { method {nentries 10000} {ndups 10} {tnum "94"} args} {
+ source ./include.tcl
+
+ set dbargs [convert_args $method $args]
+ set omethod [convert_method $method]
+
+ puts "Test0$tnum: $method ($args) $ndups dups using dupcompare"
+
+ if { [is_btree $method] != 1 && [is_hash $method] != 1 } {
+ puts "Skipping for method $method."
+ return
+ }
+
+ # Create the database and open the dictionary
+ set eindex [lsearch -exact $dbargs "-env"]
+ #
+ # If we are using an env, then testfile should just be the db name.
+ # Otherwise it is the test directory and the name.
+ if { $eindex == -1 } {
+ set testfile $testdir/test0$tnum.db
+ set env NULL
+ } else {
+ set testfile test0$tnum.db
+ incr eindex
+ set env [lindex $dbargs $eindex]
+ }
+ cleanup $testdir $env
+
+ set db [eval {berkdb_open -dupcompare test094_cmp -dup -dupsort \
+ -create -truncate -mode 0644} $omethod $dbargs $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+
+ set did [open $dict]
+ set t1 $testdir/t1
+ set pflags ""
+ set gflags ""
+ set txn ""
+ puts "\tTest0$tnum.a: $nentries put/get duplicates loop"
+ # Here is the loop where we put and get each key/data pair
+ set count 0
+ set dlist {}
+ for {set i 0} {$i < $ndups} {incr i} {
+ set dlist [linsert $dlist 0 $i]
+ }
+ while { [gets $did str] != -1 && $count < $nentries } {
+ set key $str
+ for {set i 0} {$i < $ndups} {incr i} {
+ set data $i:$str
+ set ret [eval {$db put} \
+ $txn $pflags {$key [chop_data $omethod $data]}]
+ error_check_good put $ret 0
+ }
+
+ set ret [eval {$db get} $gflags {$key}]
+ error_check_good get [llength $ret] $ndups
+ incr count
+ }
+ close $did
+ # Now we will get each key from the DB and compare the results
+ # to the original.
+ puts "\tTest0$tnum.b: traverse checking duplicates before close"
+ dup_check $db $txn $t1 $dlist
+ error_check_good db_close [$db close] 0
+
+ #
+ # Test dupcompare with data items big enough to force offpage dups.
+ #
+ puts "\tTest0$tnum.c: big key put/get dup loop key=filename data=filecontents"
+ set db [eval {berkdb_open -dupcompare test094_cmp -dup -dupsort \
+ -create -truncate -mode 0644} $omethod $dbargs $testfile]
+ error_check_good dbopen [is_valid_db $db] TRUE
+
+ # Here is the loop where we put and get each key/data pair
+ set file_list [glob ../*/*.c ./libdb.so.3.0 ./libtool ./libtool.exe]
+
+ set count 0
+ foreach f $file_list {
+ set fid [open $f r]
+ fconfigure $fid -translation binary
+ set cont [read $fid]
+ close $fid
+
+ set key $f
+ for {set i 0} {$i < $ndups} {incr i} {
+ set data $i:$cont
+ set ret [eval {$db put} \
+ $txn $pflags {$key [chop_data $omethod $data]}]
+ error_check_good put $ret 0
+ }
+
+ set ret [eval {$db get} $gflags {$key}]
+ error_check_good get [llength $ret] $ndups
+ incr count
+ }
+
+ puts "\tTest0$tnum.d: traverse checking duplicates before close"
+ dup_file_check $db $txn $t1 $dlist
+ error_check_good db_close [$db close] 0
+
+ # Clean up the test directory, since there's currently
+ # no way to specify a dup_compare function to berkdb dbverify
+ # and without one it will fail.
+ cleanup $testdir $env
+}
+
+# Simple dup comparison.
+proc test094_cmp { a b } {
+ return [string compare $b $a]
+}
+
+# Check if each key appears exactly [llength dlist] times in the file with
+# the duplicate tags matching those that appear in dlist.
+proc test094_dup_big { db txn tmpfile dlist {extra 0}} {
+ source ./include.tcl
+
+ set outf [open $tmpfile w]
+ # Now we will get each key from the DB and dump to outfile
+ set c [eval {$db cursor} $txn]
+ set lastkey ""
+ set done 0
+ while { $done != 1} {
+ foreach did $dlist {
+ set rec [$c get "-next"]
+ if { [string length $rec] == 0 } {
+ set done 1
+ break
+ }
+ set key [lindex [lindex $rec 0] 0]
+ set fulldata [lindex [lindex $rec 0] 1]
+ set id [id_of $fulldata]
+ set d [data_of $fulldata]
+ if { [string compare $key $lastkey] != 0 && \
+ $id != [lindex $dlist 0] } {
+ set e [lindex $dlist 0]
+ error "FAIL: \tKey \
+ $key, expected dup id $e, got $id"
+ }
+ error_check_good dupget.data $d $key
+ error_check_good dupget.id $id $did
+ set lastkey $key
+ }
+ #
+ # Some tests add an extra dup (like overflow entries)
+ # Check id if it exists.
+ if { $extra != 0} {
+ set okey $key
+ set rec [$c get "-next"]
+ if { [string length $rec] != 0 } {
+ set key [lindex [lindex $rec 0] 0]
+ #
+ # If this key has no extras, go back for
+ # next iteration.
+ if { [string compare $key $lastkey] != 0 } {
+ set key $okey
+ set rec [$c get "-prev"]
+ } else {
+ set fulldata [lindex [lindex $rec 0] 1]
+ set id [id_of $fulldata]
+ set d [data_of $fulldata]
+ error_check_bad dupget.data1 $d $key
+ error_check_good dupget.id1 $id $extra
+ }
+ }
+ }
+ if { $done != 1 } {
+ puts $outf $key
+ }
+ }
+ close $outf
+ error_check_good curs_close [$c close] 0
+}
diff --git a/db/txn/txn_recover.c b/db/txn/txn_recover.c
new file mode 100644
index 000000000..8f02264c0
--- /dev/null
+++ b/db/txn/txn_recover.c
@@ -0,0 +1,283 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 2001
+ * Sleepycat Software. All rights reserved.
+ */
+
+#include "db_config.h"
+
+#ifndef lint
+static const char revid[] = "Id: txn_recover.c,v 1.12 2001/04/27 15:48:16 bostic Exp ";
+#endif /* not lint */
+
+#ifndef NO_SYSTEM_INCLUDES
+#include <sys/types.h>
+
+#include <string.h>
+#endif
+
+#ifdef HAVE_RPC
+#include "db_server.h"
+#endif
+
+#include "db_int.h"
+#include "txn.h"
+#include "db_page.h"
+#include "log.h"
+#include "db_auto.h"
+#include "crdel_auto.h"
+#include "db_ext.h"
+
+#ifdef HAVE_RPC
+#include "rpc_client_ext.h"
+#endif
+
+/*
+ * __txn_continue
+ * Fill in the fields of the local transaction structure given
+ * the detail transaction structure.
+ * XXX I'm not sure that we work correctly with nested txns.
+ *
+ * PUBLIC: void __txn_continue __P((DB_ENV *, DB_TXN *, TXN_DETAIL *, size_t));
+ */
+void
+__txn_continue(env, txnp, td, off)
+ DB_ENV *env;
+ DB_TXN *txnp;
+ TXN_DETAIL *td;
+ size_t off;
+{
+ txnp->mgrp = env->tx_handle;
+ txnp->parent = NULL;
+ txnp->last_lsn = td->last_lsn;
+ txnp->txnid = td->txnid;
+ txnp->off = off;
+ txnp->flags = 0;
+}
+
+/*
+ * __txn_map_gid
+ * Return the txn that corresponds to this global ID.
+ *
+ * PUBLIC: int __txn_map_gid __P((DB_ENV *,
+ * PUBLIC: u_int8_t *, TXN_DETAIL **, size_t *));
+ */
+int
+__txn_map_gid(dbenv, gid, tdp, offp)
+ DB_ENV *dbenv;
+ u_int8_t *gid;
+ TXN_DETAIL **tdp;
+ size_t *offp;
+{
+ DB_TXNMGR *mgr;
+ DB_TXNREGION *tmr;
+
+ mgr = dbenv->tx_handle;
+ tmr = mgr->reginfo.primary;
+
+ /*
+ * Search the internal active transaction table to find the
+ * matching xid. If this is a performance hit, then we
+ * can create a hash table, but I doubt it's worth it.
+ */
+ R_LOCK(dbenv, &mgr->reginfo);
+ for (*tdp = SH_TAILQ_FIRST(&tmr->active_txn, __txn_detail);
+ *tdp != NULL;
+ *tdp = SH_TAILQ_NEXT(*tdp, links, __txn_detail))
+ if (memcmp(gid, (*tdp)->xid, sizeof((*tdp)->xid)) == 0)
+ break;
+ R_UNLOCK(dbenv, &mgr->reginfo);
+
+ if (*tdp == NULL)
+ return (EINVAL);
+
+ *offp = R_OFFSET(&mgr->reginfo, *tdp);
+ return (0);
+}
+
+/*
+ * txn_recover --
+ * Public interface to retrieve the list of prepared, but not yet
+ * commited transactions. See __txn_get_prepared for details. This
+ * function and __db_xa_recover both wrap that one.
+ *
+ * EXTERN: int txn_recover
+ * EXTERN: __P((DB_ENV *, DB_PREPLIST *, long, long *, u_int32_t));
+ */
+int
+txn_recover(dbenv, preplist, count, retp, flags)
+ DB_ENV *dbenv;
+ DB_PREPLIST *preplist;
+ long count, *retp;
+ u_int32_t flags;
+{
+#ifdef HAVE_RPC
+ if (F_ISSET(dbenv, DB_ENV_RPCCLIENT))
+ return (__dbcl_txn_recover(dbenv,
+ preplist, count, retp, flags));
+#endif
+ return (__txn_get_prepared(dbenv, NULL, preplist, count, retp, flags));
+}
+
+/*
+ * __txn_get_prepared --
+ * Returns a list of prepared (and for XA, heuristically completed)
+ * transactions (less than or equal to the count parameter). One of
+ * xids or txns must be set to point to an array of the appropriate type.
+ * The count parameter indicates the number of entries in the xids and/or
+ * txns array. The retp parameter will be set to indicate the number of
+ * entries returned in the xids/txns array. Flags indicates the operation,
+ * one of DB_FIRST or DB_NEXT.
+ *
+ * PUBLIC: int __txn_get_prepared __P((DB_ENV *,
+ * PUBLIC: XID *, DB_PREPLIST *, long, long *, u_int32_t));
+ */
+int
+__txn_get_prepared(dbenv, xids, txns, count, retp, flags)
+ DB_ENV *dbenv;
+ XID *xids;
+ DB_PREPLIST *txns;
+ long count; /* This is long for XA compatibility. */
+ long *retp;
+ u_int32_t flags;
+{
+ XID *xidp;
+ DB_PREPLIST *prepp;
+ TXN_DETAIL *td;
+ DB_TXNMGR *mgr;
+ DB_TXNREGION *tmr;
+ DB_LSN min, open_lsn;
+ DBT data;
+ __txn_ckp_args *ckp_args;
+ int nrestores, open_files, ret;
+ void *txninfo;
+
+ ret = 0;
+ *retp = 0;
+ xidp = xids;
+ prepp = txns;
+ open_files = 1;
+ nrestores = 0;
+ MAX_LSN(min);
+
+ /*
+ * If we are starting a scan, then we traverse the active transaction
+ * list once making sure that all transactions are marked as not having
+ * been collected. Then on each pass, we mark the ones we collected
+ * so that if we cannot collect them all at once, we can finish up
+ * next time with a continue.
+ */
+
+ mgr = dbenv->tx_handle;
+ tmr = mgr->reginfo.primary;
+
+ /*
+ * During this pass we need to figure out if we are going to need
+ * to open files. We need to open files if we've never collected
+ * before (in which case, none of the COLLECTED bits will be set)
+ * and the ones that we are collecting are restored (if they aren't
+ * restored, then we never crashed; just the main server did).
+ */
+ R_LOCK(dbenv, &mgr->reginfo);
+ if (flags == DB_FIRST) {
+ for (td = SH_TAILQ_FIRST(&tmr->active_txn, __txn_detail);
+ td != NULL;
+ td = SH_TAILQ_NEXT(td, links, __txn_detail)) {
+ if (F_ISSET(td, TXN_RESTORED))
+ nrestores++;
+ if (F_ISSET(td, TXN_COLLECTED))
+ open_files = 0;
+ F_CLR(td, TXN_COLLECTED);
+ }
+
+ } else
+ open_files = 0;
+
+ /* Now begin collecting active transactions. */
+ for (td = SH_TAILQ_FIRST(&tmr->active_txn, __txn_detail);
+ td != NULL && *retp < count;
+ td = SH_TAILQ_NEXT(td, links, __txn_detail)) {
+ if (td->status != TXN_PREPARED || F_ISSET(td, TXN_COLLECTED))
+ continue;
+
+ if (xids != NULL) {
+ xidp->formatID = td->format;
+ xidp->gtrid_length = td->gtrid;
+ xidp->bqual_length = td->bqual;
+ memcpy(xidp->data, td->xid, sizeof(td->xid));
+ xidp++;
+ }
+
+ if (txns != NULL) {
+ if ((ret = __os_calloc(dbenv,
+ 1, sizeof(DB_TXN), &prepp->txn)) != 0)
+ break;
+ __txn_continue(dbenv,
+ prepp->txn, td, R_OFFSET(&mgr->reginfo, td));
+ memcpy(prepp->gid, td->xid, sizeof(td->xid));
+ prepp++;
+ }
+
+ if (log_compare(&td->begin_lsn, &min) < 0)
+ min = td->begin_lsn;
+
+ (*retp)++;
+ F_SET(td, TXN_COLLECTED);
+ }
+ R_UNLOCK(dbenv, &mgr->reginfo);
+
+ if (open_files && nrestores &&
+ ret == 0 && *retp != 0 && !IS_MAX_LSN(min)) {
+ /*
+ * Figure out the last checkpoint before the smallest
+ * start_lsn in the region.
+ */
+ F_SET((DB_LOG *)dbenv->lg_handle, DBLOG_RECOVER);
+ memset(&data, 0, sizeof(data));
+ for (ret = log_get(dbenv, &open_lsn, &data, DB_CHECKPOINT);
+ ret == 0 && log_compare(&min, &open_lsn) < 0;
+ ret = log_get(dbenv, &open_lsn, &data, DB_SET)) {
+
+ /* Format the log record. */
+ if ((ret = __txn_ckp_read(dbenv,
+ data.data, &ckp_args)) != 0) {
+ __db_err(dbenv,
+ "Invalid checkpoint record at [%ld][%ld]\n",
+ (u_long)open_lsn.file,
+ (u_long)open_lsn.offset);
+ goto out;
+ }
+ open_lsn = ckp_args->last_ckp;
+ __os_free(dbenv, ckp_args, sizeof(*ckp_args));
+ }
+
+ /*
+ * There are three ways we got here.
+ * We got a DB_NOTFOUND -- we need to read the first log record.
+ * We found a checkpoint before min. We're done.
+ * We found a checkpoint after min who's last_ckp is 0. We
+ * need to start at the beginning of the log.
+ */
+
+ if ((ret == DB_NOTFOUND || IS_ZERO_LSN(open_lsn)) &&
+ (ret = log_get(dbenv, &open_lsn, &data, DB_FIRST)) != 0) {
+ __db_err(dbenv, "No log records.");
+ goto out;
+ }
+
+ if ((ret = __db_txnlist_init(dbenv, &txninfo)) != 0)
+ goto out;
+ ret = __env_openfiles(dbenv,
+ txninfo, &data, &open_lsn, NULL, 0, 0);
+ if (txninfo != NULL)
+ __db_txnlist_end(dbenv, txninfo);
+ F_CLR((DB_LOG *)dbenv->lg_handle, DBLOG_RECOVER);
+ }
+ if (0) {
+out: F_CLR((DB_LOG *)dbenv->lg_handle, DBLOG_RECOVER);
+ }
+ return (ret);
+
+}
+
diff --git a/db/txn/txn_stat.c b/db/txn/txn_stat.c
new file mode 100644
index 000000000..9b6157a3b
--- /dev/null
+++ b/db/txn/txn_stat.c
@@ -0,0 +1,110 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996-2001
+ * Sleepycat Software. All rights reserved.
+ */
+
+#include "db_config.h"
+
+#ifndef lint
+static const char revid[] = "Id: txn_stat.c,v 11.7 2001/04/20 17:35:52 bostic Exp ";
+#endif /* not lint */
+
+#ifndef NO_SYSTEM_INCLUDES
+#include <sys/types.h>
+
+#include <string.h>
+#endif
+
+#ifdef HAVE_RPC
+#include "db_server.h"
+#endif
+
+#include "db_int.h"
+#include "txn.h"
+
+#ifdef HAVE_RPC
+#include "rpc_client_ext.h"
+#endif
+
+/*
+ * txn_stat --
+ *
+ * EXTERN: int txn_stat __P((DB_ENV *, DB_TXN_STAT **));
+ */
+int
+txn_stat(dbenv, statp)
+ DB_ENV *dbenv;
+ DB_TXN_STAT **statp;
+{
+ DB_TXNMGR *mgr;
+ DB_TXNREGION *region;
+ DB_TXN_STAT *stats;
+ TXN_DETAIL *txnp;
+ size_t nbytes;
+ u_int32_t ndx;
+ int ret;
+
+#ifdef HAVE_RPC
+ if (F_ISSET(dbenv, DB_ENV_RPCCLIENT))
+ return (__dbcl_txn_stat(dbenv, statp));
+#endif
+
+ PANIC_CHECK(dbenv);
+ ENV_REQUIRES_CONFIG(dbenv, dbenv->tx_handle, "txn_stat", DB_INIT_TXN);
+
+ *statp = NULL;
+
+ mgr = dbenv->tx_handle;
+ region = mgr->reginfo.primary;
+
+ /*
+ * Allocate for the maximum active transactions -- the DB_TXN_ACTIVE
+ * struct is small and the maximum number of active transactions is
+ * not going to be that large. Don't have to lock anything to look
+ * at the region's maximum active transactions value, it's read-only
+ * and never changes after the region is created.
+ */
+ nbytes = sizeof(DB_TXN_STAT) + sizeof(DB_TXN_ACTIVE) * region->maxtxns;
+ if ((ret = __os_umalloc(dbenv, nbytes, &stats)) != 0)
+ return (ret);
+
+ R_LOCK(dbenv, &mgr->reginfo);
+ stats->st_last_txnid = region->last_txnid;
+ stats->st_last_ckp = region->last_ckp;
+ stats->st_maxtxns = region->maxtxns;
+ stats->st_naborts = region->naborts;
+ stats->st_nbegins = region->nbegins;
+ stats->st_ncommits = region->ncommits;
+ stats->st_nrestores = region->nrestores;
+ stats->st_pending_ckp = region->pending_ckp;
+ stats->st_time_ckp = region->time_ckp;
+ stats->st_nactive = region->nactive;
+ stats->st_maxnactive = region->maxnactive;
+ stats->st_txnarray = (DB_TXN_ACTIVE *)&stats[1];
+
+ ndx = 0;
+ for (txnp = SH_TAILQ_FIRST(&region->active_txn, __txn_detail);
+ txnp != NULL;
+ txnp = SH_TAILQ_NEXT(txnp, links, __txn_detail)) {
+ stats->st_txnarray[ndx].txnid = txnp->txnid;
+ if (txnp->parent == INVALID_ROFF)
+ stats->st_txnarray[ndx].parentid = TXN_INVALID_ID;
+ else
+ stats->st_txnarray[ndx].parentid =
+ ((TXN_DETAIL *)R_ADDR(&mgr->reginfo,
+ txnp->parent))->txnid;
+ stats->st_txnarray[ndx].lsn = txnp->begin_lsn;
+ ndx++;
+ }
+
+ stats->st_region_wait = mgr->reginfo.rp->mutex.mutex_set_wait;
+ stats->st_region_nowait = mgr->reginfo.rp->mutex.mutex_set_nowait;
+ stats->st_regsize = mgr->reginfo.rp->size;
+
+ R_UNLOCK(dbenv, &mgr->reginfo);
+
+ *statp = stats;
+ return (0);
+}