diff options
Diffstat (limited to 'bdb/common')
-rw-r--r-- | bdb/common/db_byteorder.c | 74 | ||||
-rw-r--r-- | bdb/common/db_err.c | 579 | ||||
-rw-r--r-- | bdb/common/db_getlong.c | 154 | ||||
-rw-r--r-- | bdb/common/db_idspace.c | 93 | ||||
-rw-r--r-- | bdb/common/db_log2.c | 64 | ||||
-rw-r--r-- | bdb/common/util_arg.c | 126 | ||||
-rw-r--r-- | bdb/common/util_cache.c | 92 | ||||
-rw-r--r-- | bdb/common/util_log.c | 64 | ||||
-rw-r--r-- | bdb/common/util_sig.c | 86 |
9 files changed, 0 insertions, 1332 deletions
diff --git a/bdb/common/db_byteorder.c b/bdb/common/db_byteorder.c deleted file mode 100644 index d42d8e6a958..00000000000 --- a/bdb/common/db_byteorder.c +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 1996-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: db_byteorder.c,v 11.8 2002/02/01 18:15:29 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> -#endif - -#include "db_int.h" - -/* - * __db_isbigendian -- - * Return 1 if big-endian (Motorola and Sparc), not little-endian - * (Intel and Vax). We do this work at run-time, rather than at - * configuration time so cross-compilation and general embedded - * system support is simpler. - * - * PUBLIC: int __db_isbigendian __P((void)); - */ -int -__db_isbigendian() -{ - union { /* From Harbison & Steele. */ - long l; - char c[sizeof(long)]; - } u; - - u.l = 1; - return (u.c[sizeof(long) - 1] == 1); -} - -/* - * __db_byteorder -- - * Return if we need to do byte swapping, checking for illegal - * values. - * - * PUBLIC: int __db_byteorder __P((DB_ENV *, int)); - */ -int -__db_byteorder(dbenv, lorder) - DB_ENV *dbenv; - int lorder; -{ - int is_bigendian; - - is_bigendian = __db_isbigendian(); - - switch (lorder) { - case 0: - break; - case 1234: - if (is_bigendian) - return (DB_SWAPBYTES); - break; - case 4321: - if (!is_bigendian) - return (DB_SWAPBYTES); - break; - default: - __db_err(dbenv, - "unsupported byte order, only big and little-endian supported"); - return (EINVAL); - } - return (0); -} diff --git a/bdb/common/db_err.c b/bdb/common/db_err.c deleted file mode 100644 index 7c9ee3c4fde..00000000000 --- a/bdb/common/db_err.c +++ /dev/null @@ -1,579 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 1996-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: db_err.c,v 11.80 2002/07/30 01:21:53 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#endif - -#include "db_int.h" -#include "dbinc/db_page.h" -#include "dbinc/db_am.h" -#include "dbinc/db_shash.h" -#include "dbinc/lock.h" -#include "dbinc/log.h" -#include "dbinc/txn.h" - -/* - * __db_fchk -- - * General flags checking routine. - * - * PUBLIC: int __db_fchk __P((DB_ENV *, const char *, u_int32_t, u_int32_t)); - */ -int -__db_fchk(dbenv, name, flags, ok_flags) - DB_ENV *dbenv; - const char *name; - u_int32_t flags, ok_flags; -{ - return (LF_ISSET(~ok_flags) ? __db_ferr(dbenv, name, 0) : 0); -} - -/* - * __db_fcchk -- - * General combination flags checking routine. - * - * PUBLIC: int __db_fcchk - * PUBLIC: __P((DB_ENV *, const char *, u_int32_t, u_int32_t, u_int32_t)); - */ -int -__db_fcchk(dbenv, name, flags, flag1, flag2) - DB_ENV *dbenv; - const char *name; - u_int32_t flags, flag1, flag2; -{ - return (LF_ISSET(flag1) && - LF_ISSET(flag2) ? __db_ferr(dbenv, name, 1) : 0); -} - -/* - * __db_ferr -- - * Common flag errors. - * - * PUBLIC: int __db_ferr __P((const DB_ENV *, const char *, int)); - */ -int -__db_ferr(dbenv, name, iscombo) - const DB_ENV *dbenv; - const char *name; - int iscombo; -{ - __db_err(dbenv, "illegal flag %sspecified to %s", - iscombo ? "combination " : "", name); - return (EINVAL); -} - -/* - * __db_pgerr -- - * Error when unable to retrieve a specified page. - * - * PUBLIC: void __db_pgerr __P((DB *, db_pgno_t, int)); - */ -void -__db_pgerr(dbp, pgno, errval) - DB *dbp; - db_pgno_t pgno; - int errval; -{ - /* - * Three things are certain: - * Death, taxes, and lost data. - * Guess which has occurred. - */ - __db_err(dbp->dbenv, - "unable to create/retrieve page %lu", (u_long)pgno); - (void)__db_panic(dbp->dbenv, errval); -} - -/* - * __db_pgfmt -- - * Error when a page has the wrong format. - * - * PUBLIC: int __db_pgfmt __P((DB_ENV *, db_pgno_t)); - */ -int -__db_pgfmt(dbenv, pgno) - DB_ENV *dbenv; - db_pgno_t pgno; -{ - __db_err(dbenv, "page %lu: illegal page type or format", (u_long)pgno); - return (__db_panic(dbenv, EINVAL)); -} - -/* - * __db_eopnotsup -- - * Common operation not supported message. - * - * PUBLIC: int __db_eopnotsup __P((const DB_ENV *)); - */ -int -__db_eopnotsup(dbenv) - const DB_ENV *dbenv; -{ - __db_err(dbenv, "operation not supported"); -#ifdef EOPNOTSUPP - return (EOPNOTSUPP); -#else - return (EINVAL); -#endif -} - -#ifdef DIAGNOSTIC -/* - * __db_assert -- - * Error when an assertion fails. Only checked if #DIAGNOSTIC defined. - * - * PUBLIC: #ifdef DIAGNOSTIC - * PUBLIC: void __db_assert __P((const char *, const char *, int)); - * PUBLIC: #endif - */ -void -__db_assert(failedexpr, file, line) - const char *failedexpr, *file; - int line; -{ - (void)fprintf(stderr, - "__db_assert: \"%s\" failed: file \"%s\", line %d\n", - failedexpr, file, line); - (void)fflush(stderr); - - /* We want a stack trace of how this could possibly happen. */ - abort(); - - /* NOTREACHED */ -} -#endif - -/* - * __db_panic_msg -- - * Just report that someone else paniced. - * - * PUBLIC: int __db_panic_msg __P((DB_ENV *)); - */ -int -__db_panic_msg(dbenv) - DB_ENV *dbenv; -{ - __db_err(dbenv, "fatal region error detected; run recovery"); - return (DB_RUNRECOVERY); -} - -/* - * __db_panic -- - * Lock out the tree due to unrecoverable error. - * - * PUBLIC: int __db_panic __P((DB_ENV *, int)); - */ -int -__db_panic(dbenv, errval) - DB_ENV *dbenv; - int errval; -{ - if (dbenv != NULL) { - PANIC_SET(dbenv, 1); - - dbenv->panic_errval = errval; - - __db_err(dbenv, "PANIC: %s", db_strerror(errval)); - - if (dbenv->db_paniccall != NULL) - dbenv->db_paniccall(dbenv, errval); - } - -#if defined(DIAGNOSTIC) && !defined(CONFIG_TEST) - /* - * We want a stack trace of how this could possibly happen. - * - * Don't drop core if it's the test suite -- it's reasonable for the - * test suite to check to make sure that DB_RUNRECOVERY is returned - * under certain conditions. - */ - abort(); -#endif - - /* - * Chaos reigns within. - * Reflect, repent, and reboot. - * Order shall return. - */ - return (DB_RUNRECOVERY); -} - -/* - * db_strerror -- - * ANSI C strerror(3) for DB. - * - * EXTERN: char *db_strerror __P((int)); - */ -char * -db_strerror(error) - int error; -{ - if (error == 0) - return ("Successful return: 0"); - if (error > 0) - return (strerror(error)); - - /* - * !!! - * The Tcl API requires that some of these return strings be compared - * against strings stored in application scripts. So, any of these - * errors that do not invariably result in a Tcl exception may not be - * altered. - */ - switch (error) { - case DB_DONOTINDEX: - return ("DB_DONOTINDEX: Secondary index callback returns null"); - case DB_KEYEMPTY: - return ("DB_KEYEMPTY: Non-existent key/data pair"); - case DB_KEYEXIST: - return ("DB_KEYEXIST: Key/data pair already exists"); - case DB_LOCK_DEADLOCK: - return - ("DB_LOCK_DEADLOCK: Locker killed to resolve a deadlock"); - case DB_LOCK_NOTGRANTED: - return ("DB_LOCK_NOTGRANTED: Lock not granted"); - case DB_NOSERVER: - return ("DB_NOSERVER: Fatal error, no server"); - case DB_NOSERVER_HOME: - return ("DB_NOSERVER_HOME: Home unrecognized at server"); - case DB_NOSERVER_ID: - return ("DB_NOSERVER_ID: Identifier unrecognized at server"); - case DB_NOTFOUND: - return ("DB_NOTFOUND: No matching key/data pair found"); - case DB_OLD_VERSION: - return ("DB_OLDVERSION: Database requires a version upgrade"); - case DB_PAGE_NOTFOUND: - return ("DB_PAGE_NOTFOUND: Requested page not found"); - case DB_REP_DUPMASTER: - return ("DB_REP_DUPMASTER: A second master site appeared"); - case DB_REP_HOLDELECTION: - return ("DB_REP_HOLDELECTION: Need to hold an election"); - case DB_REP_NEWMASTER: - return ("DB_REP_NEWMASTER: A new master has declared itself"); - case DB_REP_NEWSITE: - return ("DB_REP_NEWSITE: A new site has entered the system"); - case DB_REP_OUTDATED: - return - ("DB_REP_OUTDATED: Insufficient logs on master to recover"); - case DB_REP_UNAVAIL: - return ("DB_REP_UNAVAIL: Unable to elect a master"); - case DB_RUNRECOVERY: - return ("DB_RUNRECOVERY: Fatal error, run database recovery"); - case DB_SECONDARY_BAD: - return - ("DB_SECONDARY_BAD: Secondary index item missing from primary"); - case DB_VERIFY_BAD: - return ("DB_VERIFY_BAD: Database verification failed"); - default: { - /* - * !!! - * Room for a 64-bit number + slop. This buffer is only used - * if we're given an unknown error, which should never happen. - * Note, however, we're no longer thread-safe if it does. - */ - static char ebuf[40]; - - (void)snprintf(ebuf, sizeof(ebuf), "Unknown error: %d", error); - return (ebuf); - } - } -} - -/* - * __db_err -- - * Standard DB error routine. The same as errx, except we don't write - * to stderr if no output mechanism was specified. - * - * PUBLIC: void __db_err __P((const DB_ENV *, const char *, ...)); - */ -void -#ifdef __STDC__ -__db_err(const DB_ENV *dbenv, const char *fmt, ...) -#else -__db_err(dbenv, fmt, va_alist) - const DB_ENV *dbenv; - const char *fmt; - va_dcl -#endif -{ - DB_REAL_ERR(dbenv, 0, 0, 0, fmt); -} - -/* - * __db_errcall -- - * Do the error message work for callback functions. - * - * PUBLIC: void __db_errcall - * PUBLIC: __P((const DB_ENV *, int, int, const char *, va_list)); - */ -void -__db_errcall(dbenv, error, error_set, fmt, ap) - const DB_ENV *dbenv; - int error, error_set; - const char *fmt; - va_list ap; -{ - char *p; - char errbuf[2048]; /* !!!: END OF THE STACK DON'T TRUST SPRINTF. */ - - p = errbuf; - if (fmt != NULL) - p += vsnprintf(errbuf, sizeof(errbuf), fmt, ap); - if (error_set) - p += snprintf(p, - sizeof(errbuf) - (p - errbuf), ": %s", db_strerror(error)); - /* - * !!! - * We're potentially manipulating strings handed us by the application, - * and on systems without a real snprintf() the sprintf() calls could - * have overflowed the buffer. We can't do anything about it now, but - * we don't want to return control to the application, we might have - * overwritten the stack with a Trojan horse. We're not trying to do - * anything recoverable here because systems without snprintf support - * are pretty rare anymore. - */ - if ((size_t)(p - errbuf) > sizeof(errbuf)) { - (void)fprintf(stderr, - "Berkeley DB: error callback interface buffer overflow\n"); - (void)fflush(stderr); - - abort(); - /* NOTREACHED */ - } - - dbenv->db_errcall(dbenv->db_errpfx, errbuf); -} - -/* - * __db_errfile -- - * Do the error message work for FILE *s. - * - * PUBLIC: void __db_errfile - * PUBLIC: __P((const DB_ENV *, int, int, const char *, va_list)); - */ -void -__db_errfile(dbenv, error, error_set, fmt, ap) - const DB_ENV *dbenv; - int error, error_set; - const char *fmt; - va_list ap; -{ - FILE *fp; - - fp = dbenv == NULL || - dbenv->db_errfile == NULL ? stderr : dbenv->db_errfile; - - if (dbenv != NULL && dbenv->db_errpfx != NULL) - (void)fprintf(fp, "%s: ", dbenv->db_errpfx); - if (fmt != NULL) { - (void)vfprintf(fp, fmt, ap); - if (error_set) - (void)fprintf(fp, ": "); - } - if (error_set) - (void)fprintf(fp, "%s", db_strerror(error)); - (void)fprintf(fp, "\n"); - (void)fflush(fp); -} - -/* - * __db_logmsg -- - * Write information into the DB log. - * - * PUBLIC: void __db_logmsg __P((const DB_ENV *, - * PUBLIC: DB_TXN *, const char *, u_int32_t, const char *, ...)); - */ -void -#ifdef __STDC__ -__db_logmsg(const DB_ENV *dbenv, - DB_TXN *txnid, const char *opname, u_int32_t flags, const char *fmt, ...) -#else -__db_logmsg(dbenv, txnid, opname, flags, fmt, va_alist) - const DB_ENV *dbenv; - DB_TXN *txnid; - const char *opname, *fmt; - u_int32_t flags; - va_dcl -#endif -{ - DBT opdbt, msgdbt; - DB_LSN lsn; - va_list ap; - char __logbuf[2048]; /* !!!: END OF THE STACK DON'T TRUST SPRINTF. */ - - if (!LOGGING_ON(dbenv)) - return; - -#ifdef __STDC__ - va_start(ap, fmt); -#else - va_start(ap); -#endif - memset(&opdbt, 0, sizeof(opdbt)); - opdbt.data = (void *)opname; - opdbt.size = (u_int32_t)(strlen(opname) + 1); - - memset(&msgdbt, 0, sizeof(msgdbt)); - msgdbt.data = __logbuf; - msgdbt.size = vsnprintf(__logbuf, sizeof(__logbuf), fmt, ap); - - /* - * XXX - * Explicitly discard the const. Otherwise, we have to const DB_ENV - * references throughout the logging subsystem. - */ - __db_debug_log( - (DB_ENV *)dbenv, txnid, &lsn, flags, &opdbt, -1, &msgdbt, NULL, 0); - - va_end(ap); -} - -/* - * __db_unknown_flag -- report internal error - * - * PUBLIC: int __db_unknown_flag __P((DB_ENV *, char *, u_int32_t)); - */ -int -__db_unknown_flag(dbenv, routine, flag) - DB_ENV *dbenv; - char *routine; - u_int32_t flag; -{ - __db_err(dbenv, "%s: Unknown flag: 0x%x", routine, flag); - DB_ASSERT(0); - return (EINVAL); -} - -/* - * __db_unknown_type -- report internal error - * - * PUBLIC: int __db_unknown_type __P((DB_ENV *, char *, DBTYPE)); - */ -int -__db_unknown_type(dbenv, routine, type) - DB_ENV *dbenv; - char *routine; - DBTYPE type; -{ - __db_err(dbenv, "%s: Unknown db type: 0x%x", routine, type); - DB_ASSERT(0); - return (EINVAL); -} - -/* - * __db_check_txn -- - * Check for common transaction errors. - * - * PUBLIC: int __db_check_txn __P((DB *, DB_TXN *, u_int32_t, int)); - */ -int -__db_check_txn(dbp, txn, assoc_lid, read_op) - DB *dbp; - DB_TXN *txn; - u_int32_t assoc_lid; - int read_op; -{ - DB_ENV *dbenv; - - dbenv = dbp->dbenv; - - /* - * If we are in recovery or aborting a transaction, then we - * don't need to enforce the rules about dbp's not allowing - * transactional operations in non-transactional dbps and - * vica-versa. This happens all the time as the dbp during - * an abort may be transactional, but we undo operations - * outside a transaction since we're aborting. - */ - if (IS_RECOVERING(dbenv) || F_ISSET(dbp, DB_AM_RECOVER)) - return (0); - - /* - * Check for common transaction errors: - * Failure to pass a transaction handle to a DB operation - * Failure to configure the DB handle in a proper environment - * Operation on a handle whose open commit hasn't completed. - * - * Read operations don't require a txn even if we've used one before - * with this handle, although if they do have a txn, we'd better be - * prepared for it. - */ - if (txn == NULL) { - if (!read_op && F_ISSET(dbp, DB_AM_TXN)) { - __db_err(dbenv, - "DB handle previously used in transaction, missing transaction handle"); - return (EINVAL); - } - - if (dbp->cur_lid >= TXN_MINIMUM) - goto open_err; - } else { - if (dbp->cur_lid >= TXN_MINIMUM && dbp->cur_lid != txn->txnid) - goto open_err; - - if (!TXN_ON(dbenv)) - return (__db_not_txn_env(dbenv)); - - if (!F_ISSET(dbp, DB_AM_TXN)) { - __db_err(dbenv, - "Transaction specified for a DB handle opened outside a transaction"); - return (EINVAL); - } - } - - /* - * If dbp->associate_lid is not DB_LOCK_INVALIDID, that means we're in - * the middle of a DB->associate with DB_CREATE (i.e., a secondary index - * creation). - * - * In addition to the usual transaction rules, we need to lock out - * non-transactional updates that aren't part of the associate (and - * thus are using some other locker ID). - * - * Transactional updates should simply block; from the time we - * decide to build the secondary until commit, we'll hold a write - * lock on all of its pages, so it should be safe to attempt to update - * the secondary in another transaction (presumably by updating the - * primary). - */ - if (!read_op && dbp->associate_lid != DB_LOCK_INVALIDID && - txn != NULL && dbp->associate_lid != assoc_lid) { - __db_err(dbenv, - "Operation forbidden while secondary index is being created"); - return (EINVAL); - } - - return (0); -open_err: - __db_err(dbenv, - "Transaction that opened the DB handle is still active"); - return (EINVAL); -} - -/* - * __db_not_txn_env -- - * DB handle must be in an environment that supports transactions. - * - * PUBLIC: int __db_not_txn_env __P((DB_ENV *)); - */ -int -__db_not_txn_env(dbenv) - DB_ENV *dbenv; -{ - __db_err(dbenv, "DB environment not configured for transactions"); - return (EINVAL); -} diff --git a/bdb/common/db_getlong.c b/bdb/common/db_getlong.c deleted file mode 100644 index 6ba8ebfcdaa..00000000000 --- a/bdb/common/db_getlong.c +++ /dev/null @@ -1,154 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 1996-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: db_getlong.c,v 11.18 2002/03/28 20:13:33 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <limits.h> -#include <stdlib.h> -#include <string.h> -#endif - -#include "db_int.h" - -/* - * __db_getlong -- - * Return a long value inside of basic parameters. - * - * PUBLIC: int __db_getlong - * PUBLIC: __P((DB *, const char *, char *, long, long, long *)); - */ -int -__db_getlong(dbp, progname, p, min, max, storep) - DB *dbp; - const char *progname; - char *p; - long min, max, *storep; -{ - long val; - char *end; - - __os_set_errno(0); - val = strtol(p, &end, 10); - if ((val == LONG_MIN || val == LONG_MAX) && - __os_get_errno() == ERANGE) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: %s\n", progname, p, strerror(ERANGE)); - else - dbp->err(dbp, ERANGE, "%s", p); - return (1); - } - if (p[0] == '\0' || (end[0] != '\0' && end[0] != '\n')) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: Invalid numeric argument\n", progname, p); - else - dbp->errx(dbp, "%s: Invalid numeric argument", p); - return (1); - } - if (val < min) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: Less than minimum value (%ld)\n", - progname, p, min); - else - dbp->errx(dbp, - "%s: Less than minimum value (%ld)", p, min); - return (1); - } - if (val > max) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: Greater than maximum value (%ld)\n", - progname, p, max); - else - dbp->errx(dbp, - "%s: Greater than maximum value (%ld)", p, max); - return (1); - } - *storep = val; - return (0); -} - -/* - * __db_getulong -- - * Return an unsigned long value inside of basic parameters. - * - * PUBLIC: int __db_getulong - * PUBLIC: __P((DB *, const char *, char *, u_long, u_long, u_long *)); - */ -int -__db_getulong(dbp, progname, p, min, max, storep) - DB *dbp; - const char *progname; - char *p; - u_long min, max, *storep; -{ -#if !defined(HAVE_STRTOUL) - COMPQUIET(min, 0); - - return (__db_getlong(dbp, progname, p, 0, max, (long *)storep)); -#else - u_long val; - char *end; - - __os_set_errno(0); - val = strtoul(p, &end, 10); - if (val == ULONG_MAX && __os_get_errno() == ERANGE) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: %s\n", progname, p, strerror(ERANGE)); - else - dbp->err(dbp, ERANGE, "%s", p); - return (1); - } - if (p[0] == '\0' || (end[0] != '\0' && end[0] != '\n')) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: Invalid numeric argument\n", progname, p); - else - dbp->errx(dbp, "%s: Invalid numeric argument", p); - return (1); - } - if (val < min) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: Less than minimum value (%lu)\n", - progname, p, min); - else - dbp->errx(dbp, - "%s: Less than minimum value (%lu)", p, min); - return (1); - } - - /* - * We allow a 0 to substitute as a max value for ULONG_MAX because - * 1) accepting only a 0 value is unlikely to be necessary, and 2) - * we don't want callers to have to use ULONG_MAX explicitly, as it - * may not exist on all platforms. - */ - if (max != 0 && val > max) { - if (dbp == NULL) - fprintf(stderr, - "%s: %s: Greater than maximum value (%lu)\n", - progname, p, max); - else - dbp->errx(dbp, - "%s: Greater than maximum value (%lu)", p, max); - return (1); - } - *storep = val; - return (0); -#endif /* !defined(HAVE_STRTOUL) */ -} diff --git a/bdb/common/db_idspace.c b/bdb/common/db_idspace.c deleted file mode 100644 index 588ffd9fca9..00000000000 --- a/bdb/common/db_idspace.c +++ /dev/null @@ -1,93 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 2001-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: db_idspace.c,v 1.5 2002/02/01 18:15:29 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <stdlib.h> -#endif - -#include "db_int.h" - -static int __db_idcmp __P((const void *, const void *)); - -static int -__db_idcmp(a, b) - const void *a; - const void *b; -{ - u_int32_t i, j; - - i = *(u_int32_t *)a; - j = *(u_int32_t *)b; - - if (i < j) - return (-1); - else if (i > j) - return (1); - else - return (0); -} - -/* - * __db_idspace -- - * - * On input, minp and maxp contain the minimum and maximum valid values for - * the name space and on return, they contain the minimum and maximum ids - * available (by finding the biggest gap). - * - * PUBLIC: void __db_idspace __P((u_int32_t *, int, u_int32_t *, u_int32_t *)); - */ -void -__db_idspace(inuse, n, minp, maxp) - u_int32_t *inuse; - int n; - u_int32_t *minp, *maxp; -{ - int i, low; - u_int32_t gap, t; - - /* A single locker ID is a special case. */ - if (n == 1) { - /* - * If the single item in use is the last one in the range, - * then we've got to perform wrap which means that we set - * the min to the minimum ID, which is what we came in with, - * so we don't do anything. - */ - if (inuse[0] != *maxp) - *minp = inuse[0]; - *maxp = inuse[0] - 1; - return; - } - - gap = 0; - low = 0; - qsort(inuse, n, sizeof(u_int32_t), __db_idcmp); - for (i = 0; i < n - 1; i++) - if ((t = (inuse[i + 1] - inuse[i])) > gap) { - gap = t; - low = i; - } - - /* Check for largest gap at the end of the space. */ - if ((*maxp - inuse[n - 1]) + (inuse[0] - *minp) > gap) { - /* Do same check as we do in the n == 1 case. */ - if (inuse[n - 1] != *maxp) - *minp = inuse[n - 1]; - *maxp = inuse[0]; - } else { - *minp = inuse[low]; - *maxp = inuse[low + 1]; - } -} diff --git a/bdb/common/db_log2.c b/bdb/common/db_log2.c deleted file mode 100644 index cdd87dda11d..00000000000 --- a/bdb/common/db_log2.c +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 1996-2002 - * Sleepycat Software. All rights reserved. - */ -/* - * Copyright (c) 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Margo Seltzer. - * - * 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. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: db_log2.c,v 11.7 2002/02/01 18:15:30 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> -#endif - -#include "db_int.h" - -/* - * PUBLIC: u_int32_t __db_log2 __P((u_int32_t)); - */ -u_int32_t -__db_log2(num) - u_int32_t num; -{ - u_int32_t i, limit; - - limit = 1; - for (i = 0; limit < num; limit = limit << 1) - ++i; - return (i); -} diff --git a/bdb/common/util_arg.c b/bdb/common/util_arg.c deleted file mode 100644 index e034e3bd194..00000000000 --- a/bdb/common/util_arg.c +++ /dev/null @@ -1,126 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 2001-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: util_arg.c,v 1.4 2002/02/01 18:15:30 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> -#endif - -#include "db_int.h" - -static char *__db_strsep __P((char **, const char *)); - -/* - * __db_util_arg -- - * Convert a string into an argc/argv pair. - * - * PUBLIC: int __db_util_arg __P((char *, char *, int *, char ***)); - */ -int -__db_util_arg(arg0, str, argcp, argvp) - char *arg0, *str, ***argvp; - int *argcp; -{ - int n, ret; - char **ap, **argv; - -#define MAXARGS 25 - if ((ret = - __os_malloc(NULL, (MAXARGS + 1) * sizeof(char **), &argv)) != 0) - return (ret); - - ap = argv; - *ap++ = arg0; - for (n = 1; (*ap = __db_strsep(&str, " \t")) != NULL;) - if (**ap != '\0') { - ++ap; - if (++n == MAXARGS) - break; - } - *ap = NULL; - - *argcp = ap - argv; - *argvp = argv; - - return (0); -} - -/*- - * Copyright (c) 1990, 1993 - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. 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. - */ -/* - * Get next token from string *stringp, where tokens are possibly-empty - * strings separated by characters from delim. - * - * Writes NULs into the string at *stringp to end tokens. - * delim need not remain constant from call to call. - * On return, *stringp points past the last NUL written (if there might - * be further tokens), or is NULL (if there are definitely no more tokens). - * - * If *stringp is NULL, strsep returns NULL. - */ -static char * -__db_strsep(stringp, delim) - char **stringp; - const char *delim; -{ - const char *spanp; - int c, sc; - char *s, *tok; - - if ((s = *stringp) == NULL) - return (NULL); - for (tok = s;;) { - c = *s++; - spanp = delim; - do { - if ((sc = *spanp++) == c) { - if (c == 0) - s = NULL; - else - s[-1] = 0; - *stringp = s; - return (tok); - } - } while (sc != 0); - } - /* NOTREACHED */ -} diff --git a/bdb/common/util_cache.c b/bdb/common/util_cache.c deleted file mode 100644 index 5ca88665cc7..00000000000 --- a/bdb/common/util_cache.c +++ /dev/null @@ -1,92 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 2000-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: util_cache.c,v 1.3 2002/04/04 18:50:10 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <stdlib.h> - -#include <string.h> -#include <unistd.h> -#endif - -#include "db_int.h" - -/* - * __db_util_cache -- - * Compute if we have enough cache. - * - * PUBLIC: int __db_util_cache __P((DB_ENV *, DB *, u_int32_t *, int *)); - */ -int -__db_util_cache(dbenv, dbp, cachep, resizep) - DB_ENV *dbenv; - DB *dbp; - u_int32_t *cachep; - int *resizep; -{ - DBTYPE type; - DB_BTREE_STAT *bsp; - DB_HASH_STAT *hsp; - DB_QUEUE_STAT *qsp; - u_int32_t pgsize; - int ret; - void *sp; - - /* - * The current cache size is in cachep. If it's insufficient, set the - * the memory referenced by resizep to 1 and set cachep to the minimum - * size needed. - */ - if ((ret = dbp->get_type(dbp, &type)) != 0) { - dbenv->err(dbenv, ret, "DB->get_type"); - return (ret); - } - - if ((ret = dbp->stat(dbp, &sp, DB_FAST_STAT)) != 0) { - dbenv->err(dbenv, ret, "DB->stat"); - return (ret); - } - - switch (type) { - case DB_QUEUE: - qsp = (DB_QUEUE_STAT *)sp; - pgsize = qsp->qs_pagesize; - break; - case DB_HASH: - hsp = (DB_HASH_STAT *)sp; - pgsize = hsp->hash_pagesize; - break; - case DB_BTREE: - case DB_RECNO: - bsp = (DB_BTREE_STAT *)sp; - pgsize = bsp->bt_pagesize; - break; - default: - dbenv->err(dbenv, ret, "unknown database type: %d", type); - return (EINVAL); - } - free(sp); - - /* - * Make sure our current cache is big enough. We want at least - * DB_MINPAGECACHE pages in the cache. - */ - if ((*cachep / pgsize) < DB_MINPAGECACHE) { - *resizep = 1; - *cachep = pgsize * DB_MINPAGECACHE; - } else - *resizep = 0; - - return (0); -} diff --git a/bdb/common/util_log.c b/bdb/common/util_log.c deleted file mode 100644 index ae215fca64a..00000000000 --- a/bdb/common/util_log.c +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 2000-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: util_log.c,v 1.11 2002/02/01 18:15:30 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <stdlib.h> -#if TIME_WITH_SYS_TIME -#include <sys/time.h> -#include <time.h> -#else -#if HAVE_SYS_TIME_H -#include <sys/time.h> -#else -#include <time.h> -#endif -#endif - -#include <string.h> -#include <unistd.h> -#endif - -#include "db_int.h" - -/* - * __db_util_logset -- - * Log that we're running. - * - * PUBLIC: int __db_util_logset __P((const char *, char *)); - */ -int -__db_util_logset(progname, fname) - const char *progname; - char *fname; -{ - FILE *fp; - time_t now; - u_int32_t id; - - if ((fp = fopen(fname, "w")) == NULL) - goto err; - - (void)time(&now); - __os_id(&id); - fprintf(fp, "%s: %lu %s", progname, (u_long)id, ctime(&now)); - - if (fclose(fp) == EOF) - goto err; - - return (0); - -err: fprintf(stderr, "%s: %s: %s\n", progname, fname, strerror(errno)); - return (1); -} diff --git a/bdb/common/util_sig.c b/bdb/common/util_sig.c deleted file mode 100644 index 9714427ad33..00000000000 --- a/bdb/common/util_sig.c +++ /dev/null @@ -1,86 +0,0 @@ -/*- - * See the file LICENSE for redistribution information. - * - * Copyright (c) 2000-2002 - * Sleepycat Software. All rights reserved. - */ - -#include "db_config.h" - -#ifndef lint -static const char revid[] = "$Id: util_sig.c,v 1.7 2002/02/02 17:04:42 bostic Exp $"; -#endif /* not lint */ - -#ifndef NO_SYSTEM_INCLUDES -#include <sys/types.h> - -#include <signal.h> -#endif - -#include "db_int.h" - -static int interrupt; -static void onint __P((int)); - -/* - * onint -- - * Interrupt signal handler. - */ -static void -onint(signo) - int signo; -{ - if ((interrupt = signo) == 0) - interrupt = SIGINT; -} - -/* - * __db_util_siginit -- - * - * PUBLIC: void __db_util_siginit __P((void)); - */ -void -__db_util_siginit() -{ - /* - * Initialize the set of signals for which we want to clean up. - * Generally, we try not to leave the shared regions locked if - * we can. - */ -#ifdef SIGHUP - (void)signal(SIGHUP, onint); -#endif - (void)signal(SIGINT, onint); -#ifdef SIGPIPE - (void)signal(SIGPIPE, onint); -#endif - (void)signal(SIGTERM, onint); -} - -/* - * __db_util_interrupted -- - * Return if interrupted. - * - * PUBLIC: int __db_util_interrupted __P((void)); - */ -int -__db_util_interrupted() -{ - return (interrupt != 0); -} - -/* - * __db_util_sigresend -- - * - * PUBLIC: void __db_util_sigresend __P((void)); - */ -void -__db_util_sigresend() -{ - /* Resend any caught signal. */ - if (interrupt != 0) { - (void)signal(interrupt, SIG_DFL); - (void)raise(interrupt); - /* NOTREACHED */ - } -} |