diff options
Diffstat (limited to 'debian/htdig/htdig-3.2.0b6/db/bt_reclaim.c')
-rw-r--r-- | debian/htdig/htdig-3.2.0b6/db/bt_reclaim.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/debian/htdig/htdig-3.2.0b6/db/bt_reclaim.c b/debian/htdig/htdig-3.2.0b6/db/bt_reclaim.c new file mode 100644 index 00000000..ff44424a --- /dev/null +++ b/debian/htdig/htdig-3.2.0b6/db/bt_reclaim.c @@ -0,0 +1,55 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1998, 1999 + * Sleepycat Software. All rights reserved. + */ + +#include "db_config.h" + +#ifndef lint +static const char sccsid[] = "@(#)bt_reclaim.c 11.1 (Sleepycat) 7/24/99"; +#endif /* not lint */ + +#ifndef NO_SYSTEM_INCLUDES +#include <sys/types.h> + +#include <string.h> +#endif + +#include "db_int.h" +#include "db_page.h" +#include "db_shash.h" +#include "lock.h" +#include "btree.h" + +/* + * CDB___bam_reclaim -- + * Free a database. + * + * PUBLIC: int CDB___bam_reclaim __P((DB *, DB_TXN *)); + */ +int +CDB___bam_reclaim(dbp, txn) + DB *dbp; + DB_TXN *txn; +{ + BTREE *t; + DBC *dbc; + int ret, t_ret; + + /* Acquire a cursor. */ + if ((ret = dbp->cursor(dbp, txn, &dbc, 0)) != 0) + return (ret); + + /* Walk the tree, freeing pages. */ + t = dbp->bt_internal; + ret = CDB___bam_traverse(dbc, + DB_LOCK_WRITE, t->bt_root, CDB___db_reclaim_callback, dbc); + + /* Discard the cursor. */ + if ((t_ret = dbc->c_close(dbc)) != 0 && ret == 0) + ret = t_ret; + + return (ret); +} |