summaryrefslogtreecommitdiffstats
path: root/debian/htdig/htdig-3.2.0b6/db/db_am.h
diff options
context:
space:
mode:
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/db_am.h')
-rw-r--r--debian/htdig/htdig-3.2.0b6/db/db_am.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/db/db_am.h b/debian/htdig/htdig-3.2.0b6/db/db_am.h
new file mode 100644
index 00000000..416662db
--- /dev/null
+++ b/debian/htdig/htdig-3.2.0b6/db/db_am.h
@@ -0,0 +1,114 @@
+/*-
+ * See the file LICENSE for redistribution information.
+ *
+ * Copyright (c) 1996, 1997, 1998, 1999
+ * Sleepycat Software. All rights reserved.
+ *
+ * @(#)db_am.h 11.4 (Sleepycat) 9/19/99
+ */
+#ifndef _DB_AM_H
+#define _DB_AM_H
+
+#define DB_MINPAGECACHE 10 /* Min pages access methods cache. */
+
+#define DB_ISBIG 0x01 /* DB recovery operation codes. */
+#define DB_ISSUBDB 0x02
+#define DB_ADD_DUP 0x10
+#define DB_REM_DUP 0x20
+#define DB_ADD_BIG 0x30
+#define DB_REM_BIG 0x40
+#define DB_SPLITOLD 0x50
+#define DB_SPLITNEW 0x60
+#define DB_ADD_PAGE 0x70
+#define DB_REM_PAGE 0x80
+#define DB_LOG_CREATE 0x90
+#define DB_LOG_DELETE 0xa0
+
+/*
+ * This is a grotesque naming hack. We have modified the btree page
+ * allocation and freeing functions to be generic and have therefore
+ * moved them into the access-method independent portion of the code.
+ * However, since we didn't want to create new log records and routines
+ * for them, we left their logging and recovery functions over in btree.
+ * To make the code look prettier, we macro them, but this is sure to
+ * confuse the heck out of everyone.
+ */
+#define __db_pg_alloc_log CDB___bam_pg_alloc_log
+#define __db_pg_free_log CDB___bam_pg_free_log
+
+/*
+ * Standard initialization and shutdown macros for all recovery functions.
+ *
+ * Requires the following local variables:
+ *
+ * DB *file_dbp, *mdbp;
+ * DB_MPOOLFILE *mpf;
+ * int ret;
+ */
+#define REC_INTRO(func, inc_count) { \
+ file_dbp = NULL; \
+ dbc = NULL; \
+ if ((ret = func(dbtp->data, &argp)) != 0) \
+ goto out; \
+ if ((ret = CDB___db_fileid_to_db(dbenv, \
+ &file_dbp, argp->fileid, inc_count)) != 0) { \
+ if (ret == DB_DELETED) { \
+ ret = 0; \
+ goto done; \
+ } \
+ goto out; \
+ } \
+ if (file_dbp == NULL) \
+ goto out; \
+ if ((ret = file_dbp->cursor(file_dbp, NULL, &dbc, 0)) != 0) \
+ goto out; \
+ F_SET(dbc, DBC_RECOVER); \
+ mpf = file_dbp->mpf; \
+}
+
+#define REC_CLOSE \
+ if (argp != NULL) \
+ CDB___os_free(argp, sizeof(*argp)); \
+ if (dbc != NULL) \
+ dbc->c_close(dbc); \
+ return (ret);
+
+/*
+ * No-op versions of the same macros.
+ */
+#define REC_NOOP_INTRO(func) { \
+ if ((ret = func(dbtp->data, &argp)) != 0) \
+ return (ret); \
+}
+#define REC_NOOP_CLOSE \
+ if (argp != NULL) \
+ CDB___os_free(argp, sizeof(*argp)); \
+ return (ret); \
+
+/*
+ * Standard debugging macro for all recovery functions.
+ */
+#ifdef DEBUG_RECOVER
+#define REC_PRINT(func) \
+ (void)func(dbenv, dbtp, lsnp, redo, info);
+#else
+#define REC_PRINT(func)
+#endif
+
+/*
+ * If doing transactions we have to hold the locks associated with a data item
+ * from a page for the entire transaction. However, we don't have to hold the
+ * locks associated with walking the tree. Distinguish between the two so that
+ * we don't tie up the internal pages of the tree longer than necessary.
+ */
+#define __LPUT(dbc, lock) \
+ (F_ISSET((dbc)->dbp->dbenv, DB_ENV_LOCKING) ? \
+ CDB_lock_put((dbc)->dbp->dbenv, &(lock)) : 0)
+#define __TLPUT(dbc, lock) \
+ (F_ISSET((dbc)->dbp->dbenv, DB_ENV_LOCKING) && \
+ (dbc)->txn == NULL ? CDB_lock_put((dbc)->dbp->dbenv, &(lock)) : 0)
+
+#include "db_auto.h"
+#include "crdel_auto.h"
+#include "db_ext.h"
+#endif