debian/0000755000000000000000000000000012265117635007176 5ustar debian/rules0000755000000000000000000000177012265116250010253 0ustar #! /usr/bin/make -f %: dh $@ package := libdb1-compat dtmp := $(CURDIR)/debian/$(package) DEB_HOST_ARCH := $(shell dpkg-architecture -qDEB_HOST_ARCH) ifeq ($(DEB_HOST_ARCH),alpha) soversion=.2.1 else soversion=.2 endif DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) export CC := $(DEB_HOST_GNU_TYPE)-gcc endif export CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) export CFLAGS := $(shell dpkg-buildflags --get CFLAGS) export LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) libdb1.so$(soversion): build override_dh_auto_build: $(MAKE) libdb.so-version=$(soversion) override_dh_auto_clean: $(MAKE) clean libdb.so-version=$(soversion) override_dh_auto_install: # match glibc install -m644 libdb1.so$(soversion) $(dtmp)/lib/libdb1-2.2.5.so ln -s libdb1-2.2.5.so $(dtmp)/lib/libdb1.so$(soversion) ln -s libdb1-2.2.5.so $(dtmp)/lib/libdb.so$(soversion) debian/install0000644000000000000000000000003612265116250010556 0ustar db_dump185/db_dump185 usr/bin debian/.git-dpm0000644000000000000000000000042612265116251010533 0ustar # see git-dpm(1) from git-dpm package 953d0a729892c937f25085e4583aae69b4c4e3da 953d0a729892c937f25085e4583aae69b4c4e3da 38a03f9f9593a1185c8996ef1024346ae12224aa 38a03f9f9593a1185c8996ef1024346ae12224aa db1-compat_2.1.3.orig.tar.gz 1dbe9b1a1bbeb44e0ce2e234e6e3d06b308664ed 67763 debian/copyright0000644000000000000000000001560412265117333011132 0ustar This package was put together by Colin Watson on Sun, 11 Aug 2002 12:51:37 +0100. The original source tarball was repacked in .tar.gz format from the file 'db1-addon-2.1.3.tar.bz2' found in the Debian source package for glibc 2.2.5-12. Here is the copyright statement from glibc's info documentation. * The code for the database library `libdb' comes from the 2.3 release of Berkeley DB. That code is under the same copyright as 4.4 BSD and also: Copyright (C) 1990, 1993, 1994, 1995, 1996, 1997 Sleepycat Software. 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. Redistributions in any form must be accompanied by information on how to obtain complete source code for the DB software and any accompanying software that uses the DB software. The source code must either be included in the distribution or be available for no more than the cost of distribution plus a nominal fee, and must be freely redistributable under reasonable conditions. For an executable file, complete source code means the source code for all modules it contains. It does not mean source code for modules or files that typically accompany the operating system on which the executable file runs, e.g., standard library modules or system header files. THIS SOFTWARE IS PROVIDED BY SLEEPYCAT SOFTWARE "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 SLEEPYCAT SOFTWARE 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. Portions copyright (C) 1995, 1996 The President and Fellows of Harvard University. 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 Harvard University 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 HARVARD AND ITS 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 HARVARD OR ITS 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. For a license to use, redistribute or sell DB software under conditions other than those described above, or to purchase support for this software, please contact Sleepycat Software at Sleepycat Software 394 E. Riding Dr. Carlisle, MA 01741 USA +1-508-287-4781 or . The 4.4 BSD copyright referred to above reads as follows: Copyright (c) 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. debian/source/0000755000000000000000000000000012265116250010466 5ustar debian/source/format0000644000000000000000000000001412265116250011674 0ustar 3.0 (quilt) debian/patches/0000755000000000000000000000000012265116304010615 5ustar debian/patches/pmt-compat.patch0000644000000000000000000000123212265116251013716 0ustar From cb8693ff90e7df51d594245b6b956fc2bd064a7a Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 14 Jan 2014 02:08:53 +0000 Subject: Translate __PMT() to __P() on non-glibc architectures Forwarded: no Last-Update: 2010-03-26 Patch-Name: pmt-compat.patch --- db.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/db.h b/db.h index 8b7921f..3aad4ae 100644 --- a/db.h +++ b/db.h @@ -39,6 +39,11 @@ #include #include +/* Some systems don't define the __PMT extension of __P; translation is safe */ +#ifndef __PMT +#define __PMT(p) __P(p) +#endif + #include #ifdef __DBINTERFACE_PRIVATE debian/patches/libc-symbols.patch0000644000000000000000000000551612265116251014245 0ustar From 974a6fad3937bf83db452bc690a90d6113dc2859 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 14 Jan 2014 02:08:54 +0000 Subject: Define symbols that were formerly libc-only We aren't in libc any more, so we don't have to worry about polluting libnss_db's namespace. Bug-Debian: http://bugs.debian.org/163264 Forwarded: no Last-Update: 2010-03-26 Patch-Name: libc-symbols.patch --- btree/btree.h | 4 ++-- db/db.c | 8 ++++---- mpool/mpool.c | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/btree/btree.h b/btree/btree.h index 45f7c94..4579cca 100644 --- a/btree/btree.h +++ b/btree/btree.h @@ -43,7 +43,7 @@ #include -#ifdef _LIBC +/* #ifdef _LIBC */ /* In the GNU C library we must not pollute the namespace because libdb is needed by libnss_db. */ #define mpool_open __mpool_open @@ -53,7 +53,7 @@ #define mpool_put __mpool_put #define mpool_sync __mpool_sync #define mpool_close __mpool_close -#endif +/* #endif */ #define DEFMINKEYPAGE (2) /* Minimum keys per page */ #define MINCACHE (5) /* Minimum cached pages */ diff --git a/db/db.c b/db/db.c index 49f6124..0e916fe 100644 --- a/db/db.c +++ b/db/db.c @@ -44,11 +44,11 @@ static char sccsid[] = "@(#)db.c 8.4 (Berkeley) 2/21/94"; #include -#ifdef _LIBC +/* #ifdef _LIBC */ /* In the GNU C library we must not pollute the namespace, because libdb is needed by libnss_db. */ #define dbopen __dbopen -#endif +/* #endif */ DB * dbopen(fname, flags, mode, type, openinfo) @@ -78,10 +78,10 @@ dbopen(fname, flags, mode, type, openinfo) errno = EINVAL; return (NULL); } -#ifdef _LIBC +/* #ifdef _LIBC */ #undef dbopen weak_alias (__dbopen, dbopen) -#endif +/* #endif */ static int __dberr __P((void)) diff --git a/mpool/mpool.c b/mpool/mpool.c index 7ced76f..478d77f 100644 --- a/mpool/mpool.c +++ b/mpool/mpool.c @@ -50,7 +50,7 @@ static char sccsid[] = "@(#)mpool.c 8.5 (Berkeley) 7/26/94"; #define __MPOOLINTERFACE_PRIVATE #include -#ifdef _LIBC +/* #ifdef _LIBC */ /* In the GNU C library we must not pollute the namespace because libdb is needed by libnss_db. */ #define mpool_open __mpool_open @@ -60,7 +60,7 @@ static char sccsid[] = "@(#)mpool.c 8.5 (Berkeley) 7/26/94"; #define mpool_put __mpool_put #define mpool_sync __mpool_sync #define mpool_close __mpool_close -#endif +/* #endif */ static BKT *mpool_bkt __P((MPOOL *)); static BKT *mpool_look __P((MPOOL *, pgno_t)); @@ -313,7 +313,7 @@ mpool_sync(mp) return (fsync(mp->fd) ? RET_ERROR : RET_SUCCESS); } -#ifdef _LIBC +/* #ifdef _LIBC */ #undef mpool_open #undef mpool_filter #undef mpool_new @@ -328,7 +328,7 @@ weak_alias (__mpool_get, mpool_get) weak_alias (__mpool_put, mpool_put) weak_alias (__mpool_close, mpool_close) weak_alias (__mpool_sync, mpool_sync) -#endif +/* #endif */ /* * mpool_bkt debian/patches/weak-alias.patch0000644000000000000000000000151512265116251013657 0ustar From 209f7314efe4aae98d000843b2f4c4614aafb3a3 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 14 Jan 2014 02:08:52 +0000 Subject: Weak alias definitions Import part of libc-symbols.h from glibc. Forwarded: no Last-Update: 2010-03-26 Patch-Name: weak-alias.patch --- compat.h | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/compat.h b/compat.h index 706e582..89295a8 100644 --- a/compat.h +++ b/compat.h @@ -45,5 +45,11 @@ #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b)) #endif +/* Define ALIASNAME as a weak alias for NAME. + If weak aliases are not available, this defines a strong alias. */ +#define weak_alias(name, aliasname) _weak_alias (name, aliasname) +#define _weak_alias(name, aliasname) \ + extern __typeof (name) aliasname __attribute__ ((weak, alias (#name))); + #endif /* compat.h */ debian/patches/db_dump185.patch0000644000000000000000000010500212265116251013505 0ustar From 953d0a729892c937f25085e4583aae69b4c4e3da Mon Sep 17 00:00:00 2001 From: Julian Gilbey Date: Tue, 14 Jan 2014 02:08:55 +0000 Subject: Add db_dump185 utility This provides dump compatibility with legacy database files. Author: Colin Watson Bug-Debian: http://bugs.debian.org/353637 Forwarded: no Last-Update: 2012-06-22 Patch-Name: db_dump185.patch --- Makefile | 7 +- db_dump185/db_dump185.1 | 956 ++++++++++++++++++++++++++++++++++++++++++++++++ db_dump185/db_dump185.c | 355 ++++++++++++++++++ 3 files changed, 1317 insertions(+), 1 deletion(-) create mode 100644 db_dump185/db_dump185.1 create mode 100644 db_dump185/db_dump185.c diff --git a/Makefile b/Makefile index ae4e1b5..387d72d 100644 --- a/Makefile +++ b/Makefile @@ -24,7 +24,7 @@ CFLAGS ?= -O2 XCPPFLAGS = -I. -D_REENTRANT -D__DBINTERFACE_PRIVATE -DUSE_LIBDB1 -D_GNU_SOURCE libdb.so-version=.2 -all: libdb1.so$(libdb.so-version) +all: libdb1.so$(libdb.so-version) db_dump185/db_dump185 %.o: %.c $(CC) $(XCPPFLAGS) $(CPPFLAGS) $(CFLAGS) -c -g -o $@ $< @@ -36,7 +36,12 @@ libdb1.so$(libdb.so-version): $(patsubst %,%.os,$(libdb1-routines)) -Wl,-soname=libdb.so$(libdb.so-version) $(LDFLAGS) \ -shared -o $@ $^ -lc +db_dump185/db_dump185: db_dump185/db_dump185.c libdb1.so$(libdb.so-version) + $(CC) -I. $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) \ + -o $@ $< libdb1.so$(libdb.so-version) + clean: rm -f $(patsubst %,%.o,$(libdb1-routines)) rm -f $(patsubst %,%.os,$(libdb1-routines)) rm -f libdb1.so$(libdb.so-version) *~ + rm -f db_dump185/db_dump185 diff --git a/db_dump185/db_dump185.1 b/db_dump185/db_dump185.1 new file mode 100644 index 0000000..9fb305d --- /dev/null +++ b/db_dump185/db_dump185.1 @@ -0,0 +1,956 @@ +.ds TYPE C +.\" +.\" See the file LICENSE for redistribution information. +.\" +.\" Copyright (c) 1996, 1997, 1998 +.\" Sleepycat Software. All rights reserved. +.\" +.\" @(#)db_dump.so 10.10 (Sleepycat) 4/10/98 +.\" +.\" +.\" See the file LICENSE for redistribution information. +.\" +.\" Copyright (c) 1997, 1998 +.\" Sleepycat Software. All rights reserved. +.\" +.\" @(#)macros.so 10.45 (Sleepycat) 5/4/98 +.\" +.\" This manpage was originally for db_dump from a later version of +.\" the DB, so many of these initial macros are now defunct. (jdg, 2/06) +.\" +.\" We don't want hyphenation for any HTML documents. +.if !d HTML .ds HTML +.ie '\*[HTML]'YES'\{\ +.de Hy +.. +.de Nh +.. +.nh +\} +.el\{\ +.de Hy +.hy +.. +.de Nh +.nh +.. +\} +.\" The alternative text macro +.\" This macro takes two arguments: +.\" + the text produced if this is a "C" manpage +.\" + the text produced if this is a "CXX" or "JAVA" manpage +.\" +.de Al +.ie '\*[TYPE]'C'\{\\$1 +\} +.el\{\\$2 +\} +.. +.\" Scoped name macro. +.\" Produces a_b, a::b, a.b depending on language +.\" This macro takes two arguments: +.\" + the class or prefix (without underscore) +.\" + the name within the class or following the prefix +.de Sc +.ie '\*[TYPE]'C'\{\\$1_\\$2 +\} +.el\{\ +.ie '\*[TYPE]'CXX'\{\\$1::\\$2 +\} +.el\{\\$1.\\$2 +\} +\} +.. +.\" Scoped name for Java. +.\" Produces Db.b, for Java, otherwise just b. This macro is used for +.\" constants that must be scoped in Java, but are global otherwise. +.\" This macro takes two arguments: +.\" + the class +.\" + the name within the class or following the prefix +.de Sj +.ie '\*[TYPE]'JAVA'\{\ +.TP 5 +Db.\\$1\} +.el\{\ +.TP 5 +\\$1\} +.. +.\" The general information text macro. +.de Gn +.ie '\*[TYPE]'C'\{The DB library is a family of groups of functions that provides a modular +programming interface to transactions and record-oriented file access. +The library includes support for transactions, locking, logging and file +page caching, as well as various indexed access methods. +Many of the functional groups (e.g., the file page caching functions) +are useful independent of the other DB functions, +although some functional groups are explicitly based on other functional +groups (e.g., transactions and logging). +\} +.el\{The DB library is a family of classes that provides a modular +programming interface to transactions and record-oriented file access. +The library includes support for transactions, locking, logging and file +page caching, as well as various indexed access methods. +Many of the classes (e.g., the file page caching class) +are useful independent of the other DB classes, +although some classes are explicitly based on other classes +(e.g., transactions and logging). +\} +.. +.\" The library error macro, the local error macro. +.\" These macros take one argument: +.\" + the function name. +.de Ee +The +.I \\$1 +.ie '\*[TYPE]'C'\{function may fail and return +.I errno +\} +.el\{method may fail and throw a +.IR DbException (3) +.if '\*[TYPE]'CXX'\{ +or return +.I errno +\} +\} +for any of the errors specified for the following DB and library functions: +.. +.de Ec +In addition, the +.I \\$1 +.ie '\*[TYPE]'C'\{function may fail and return +.I errno +\} +.el\{method may fail and throw a +.IR DbException (3) +.ie '\*[TYPE]'CXX'\{or return +.I errno +\} +.el\{encapsulating an +.I errno +\} +\} +for the following conditions: +.. +.de Ea +[EAGAIN] +A lock was unavailable. +.. +.de Eb +[EBUSY] +The shared memory region was in use and the force flag was not set. +.. +.de Em +[EAGAIN] +The shared memory region was locked and (repeatedly) unavailable. +.. +.de Ei +[EINVAL] +An invalid flag value or parameter was specified. +.. +.de Es +[EACCES] +An attempt was made to modify a read-only database. +.. +.de Et +The DB_THREAD flag was specified and spinlocks are not implemented for +this architecture. +.. +.de Ep +[EPERM] +Database corruption was detected. +All subsequent database calls (other than +.ie '\*[TYPE]'C'\{\ +.IR DB->close ) +\} +.el\{\ +.IR Db::close ) +\} +will return EPERM. +.. +.de Ek +.if '\*[TYPE]'CXX'\{\ +Methods marked as returning +.I errno +will, by default, throw an exception that encapsulates the error information. +The default error behavior can be changed, see +.IR DbException (3). +\} +.. +.\" The SEE ALSO text macro +.de Sa +.nh +.na +.IR db_archive (1), +.IR db_checkpoint (1), +.IR db_deadlock (1), +.IR db_dump (1), +.IR db_load (1), +.IR db_recover (1), +.IR db_stat (1). +(Note that on Debian systems, some of these manpages and programs have +been renamed to things like +.B db4.3_stat +to distinguish between the multiple DB versions.) +.ad +.Hy +.. +.\" The function header macro. +.\" This macro takes one argument: +.\" + the function name. +.de Fn +.in 2 +.I \\$1 +.in +.. +.\" The XXX_open function text macro, for merged create/open calls. +.\" This macro takes two arguments: +.\" + the interface, e.g., "transaction region" +.\" + the prefix, e.g., "txn" (or the class name for C++, e.g., "DbTxn") +.de Co +.ie '\*[TYPE]'C'\{\ +.Fn \\$2_open +The +.I \\$2_open +function copies a pointer, to the \\$1 identified by the +.B directory +.IR dir , +into the memory location referenced by +.IR regionp . +.PP +If the +.I dbenv +argument to +.I \\$2_open +was initialized using +.IR db_appinit , +.I dir +is interpreted as described by +.IR db_appinit (3). +\} +.el\{\ +.Fn \\$2::open +The +.I \\$2::open +.ie '\*[TYPE]'CXX'\{\ +method copies a pointer, to the \\$1 identified by the +.B directory +.IR dir , +into the memory location referenced by +.IR regionp . +\} +.el\{\ +method returns a \\$1 identified by the +.B directory +.IR dir . +\} +.PP +If the +.I dbenv +argument to +.I \\$2::open +was initialized using +.IR DbEnv::appinit , +.I dir +is interpreted as described by +.IR DbEnv (3). +\} +.PP +Otherwise, +if +.I dir +is not NULL, +it is interpreted relative to the current working directory of the process. +If +.I dir +is NULL, +the following environment variables are checked in order: +``TMPDIR'', ``TEMP'', and ``TMP''. +If one of them is set, +\\$1 files are created relative to the directory it specifies. +If none of them are set, the first possible one of the following +directories is used: +.IR /var/tmp , +.IR /usr/tmp , +.IR /temp , +.IR /tmp , +.I C:/temp +and +.IR C:/tmp . +.PP +All files associated with the \\$1 are created in this directory. +This directory must already exist when +.ie '\*[TYPE]'C'\{ +\\$1_open +\} +.el\{\ +\\$2::open +\} +is called. +If the \\$1 already exists, +the process must have permission to read and write the existing files. +If the \\$1 does not already exist, +it is optionally created and initialized. +.. +.\" The common close language macro, for discarding created regions +.\" This macro takes one argument: +.\" + the function prefix, e.g., txn (the class name for C++, e.g., DbTxn) +.de Cc +In addition, if the +.I dir +argument to +.ie '\*[TYPE]'C'\{\ +.ds Va db_appinit +.ds Vo \\$1_open +.ds Vu \\$1_unlink +\} +.el\{\ +.ds Va DbEnv::appinit +.ds Vo \\$1::open +.ds Vu \\$1::unlink +\} +.I \\*(Vo +was NULL +and +.I dbenv +was not initialized using +.IR \\*(Va , +.if '\\$1'memp'\{\ +or the DB_MPOOL_PRIVATE flag was set, +\} +all files created for this shared region will be removed, +as if +.I \\*(Vu +were called. +.rm Va +.rm Vo +.rm Vu +.. +.\" The DB_ENV information macro. +.\" This macro takes two arguments: +.\" + the function called to open, e.g., "txn_open" +.\" + the function called to close, e.g., "txn_close" +.de En +.ie '\*[TYPE]'C'\{\ +based on the +.I dbenv +argument to +.IR \\$1 , +which is a pointer to a structure of type DB_ENV (typedef'd in ). +Applications will normally use the same DB_ENV structure (initialized +by +.IR db_appinit (3)), +as an argument to all of the subsystems in the DB package. +.PP +References to the DB_ENV structure are maintained by DB, +so it may not be discarded until the last close function, +corresponding to an open function for which it was an argument, +has returned. +In order to ensure compatibility with future releases of DB, all fields of +the DB_ENV structure that are not explicitly set should be initialized to 0 +before the first time the structure is used. +Do this by declaring the structure external or static, or by calling the C +library routine +.IR bzero (3) +or +.IR memset (3). +.PP +The fields of the DB_ENV structure used by +.I \\$1 +are described below. +.if '\*[TYPE]'CXX'\{\ +As references to the DB_ENV structure may be maintained by +.IR \\$1 , +it is necessary that the DB_ENV structure and memory it references be valid +until the +.I \\$2 +function is called. +\} +.ie '\\$1'db_appinit'\{The +.I dbenv +argument may not be NULL. +If any of the fields of the +.I dbenv +are set to 0, +defaults appropriate for the system are used where possible. +\} +.el\{If +.I dbenv +is NULL +or any of its fields are set to 0, +defaults appropriate for the system are used where possible. +\} +.PP +The following fields in the DB_ENV structure may be initialized before calling +.IR \\$1 : +\} +.el\{\ +based on which set methods have been used. +It is expected that applications will use a single DbEnv object as the +argument to all of the subsystems in the DB package. +The fields of the DbEnv object used by +.I \\$1 +are described below. +As references to the DbEnv object may be maintained by +.IR \\$1 , +it is necessary that the DbEnv object and memory it references be valid +until the object is destroyed. +.ie '\\$1'appinit'\{\ +The +.I dbenv +argument may not be NULL. +If any of the fields of the +.I dbenv +are set to 0, +defaults appropriate for the system are used where possible. +\} +.el\{\ +Any of the DbEnv fields that are not explicitly set will default to +appropriate values. +\} +.PP +The following fields in the DbEnv object may be initialized, using the +appropriate set method, before calling +.IR \\$1 : +\} +.. +.\" The DB_ENV common fields macros. +.de Se +.if '\*[TYPE]'JAVA'\{\ +.TP 5 +DbErrcall db_errcall; +.ns +.TP 5 +String db_errpfx; +.ns +.TP 5 +int db_verbose; +The error fields of the DbEnv behave as described for +.IR DbEnv (3). +\} +.ie '\*[TYPE]'CXX'\{\ +.TP 5 +void *(*db_errcall)(char *db_errpfx, char *buffer); +.ns +.TP 5 +FILE *db_errfile; +.ns +.TP 5 +const char *db_errpfx; +.ns +.TP 5 +class ostream *db_error_stream; +.ns +.TP 5 +int db_verbose; +The error fields of the DbEnv behave as described for +.IR DbEnv (3). +\} +.el\{\ +void *(*db_errcall)(char *db_errpfx, char *buffer); +.ns +.TP 5 +FILE *db_errfile; +.ns +.TP 5 +const char *db_errpfx; +.ns +.TP 5 +int db_verbose; +The error fields of the DB_ENV behave as described for +.IR db_appinit (3). +.sp +\} +.. +.\" The open flags. +.de Fm +The +.I flags +and +.I mode +arguments specify how files will be opened and/or created when they +don't already exist. +The flags value is specified by +.BR or 'ing +together one or more of the following values: +.Sj DB_CREATE +Create any underlying files, as necessary. +If the files do not already exist and the DB_CREATE flag is not specified, +the call will fail. +.. +.\" DB_THREAD open flag macro. +.\" This macro takes two arguments: +.\" + the open function name +.\" + the object it returns. +.de Ft +.TP 5 +.Sj DB_THREAD +Cause the \\$2 handle returned by the +.I \\$1 +.Al function method +to be useable by multiple threads within a single address space, +i.e., to be ``free-threaded''. +.if '\*[TYPE]'JAVA'\{\ +Threading is assumed in the Java API, +so no special flags are required, +and DB functions will always behave as if the DB_THREAD flag was specified. +\} +.. +.\" The mode macro. +.\" This macro takes one argument: +.\" + the subsystem name. +.de Mo +All files created by the \\$1 are created with mode +.I mode +(as described in +.IR chmod (2)) +and modified by the process' umask value at the time of creation (see +.IR umask (2)). +The group ownership of created files is based on the system and directory +defaults, and is not further specified by DB. +.. +.\" The application exits macro. +.\" This macro takes one argument: +.\" + the application name. +.de Ex +The +.I \\$1 +utility exits 0 on success, and >0 if an error occurs. +.. +.\" The application -h section. +.\" This macro takes one argument: +.\" + the application name +.de Dh +DB_HOME +If the +.B \-h +option is not specified and the environment variable +.I DB_HOME +is set, it is used as the path of the database home, as described in +.IR db_appinit (3). +.. +.\" The function DB_HOME ENVIRONMENT VARIABLES section. +.\" This macro takes one argument: +.\" + the open function name +.de Eh +DB_HOME +If the +.I dbenv +argument to +.I \\$1 +was initialized using +.IR db_appinit , +the environment variable DB_HOME may be used as the path of the database +home for the interpretation of the +.I dir +argument to +.IR \\$1 , +as described in +.IR db_appinit (3). +.if \\n(.$>1 \{Specifically, +.I \\$1 +is affected by the configuration string value of \\$2.\} +.. +.\" The function TMPDIR ENVIRONMENT VARIABLES section. +.\" This macro takes two arguments: +.\" + the interface, e.g., "transaction region" +.\" + the prefix, e.g., "txn" (or the class name for C++, e.g., "DbTxn") +.de Ev +TMPDIR +If the +.I dbenv +argument to +.ie '\*[TYPE]'C'\{\ +.ds Vo \\$2_open +\} +.el\{\ +.ds Vo \\$2::open +\} +.I \\*(Vo +was NULL or not initialized using +.IR db_appinit , +the environment variable TMPDIR may be used as the directory in which to +create the \\$1, +as described in the +.I \\*(Vo +section above. +.rm Vo +.. +.\" The unused flags macro. +.de Fl +The +.I flags +parameter is currently unused, and must be set to 0. +.. +.\" The no-space TP macro. +.de Nt +.br +.ns +.TP 5 +.. +.\" The return values of the functions macros. +.\" Rc is the standard two-value return with a suffix for more values. +.\" Ro is the standard two-value return but there were previous values. +.\" Rt is the standard two-value return, returning errno, 0, or < 0. +.\" These macros take one argument: +.\" + the routine name +.de Rc +The +.I \\$1 +.ie '\*[TYPE]'C'\{function returns the value of +.I errno +on failure, +0 on success, +\} +.el\{method throws a +.IR DbException (3) +.ie '\*[TYPE]'CXX'\{or returns the value of +.I errno +on failure, +0 on success, +\} +.el\{that encapsulates an +.I errno +on failure, +\} +\} +.. +.de Ro +Otherwise, the +.I \\$1 +.ie '\*[TYPE]'C'\{function returns the value of +.I errno +on failure and 0 on success. +\} +.el\{method throws a +.IR DbException (3) +.ie '\*[TYPE]'CXX'\{or returns the value of +.I errno +on failure and 0 on success. +\} +.el\{that encapsulates an +.I errno +on failure, +\} +\} +.. +.de Rt +The +.I \\$1 +.ie '\*[TYPE]'C'\{function returns the value of +.I errno +on failure and 0 on success. +\} +.el\{method throws a +.IR DbException (3) +.ie '\*[TYPE]'CXX'\{or returns the value of +.I errno +on failure and 0 on success. +\} +.el\{that encapsulates an +.I errno +on failure. +\} +\} +.. +.\" The TXN id macro. +.de Tx +.IP +If the file is being accessed under transaction protection, +the +.I txnid +parameter is a transaction ID returned from +.IR txn_begin , +otherwise, NULL. +.. +.\" The XXX_unlink function text macro. +.\" This macro takes two arguments: +.\" + the interface, e.g., "transaction region" +.\" + the prefix (for C++, this is the class name) +.de Un +.ie '\*[TYPE]'C'\{\ +.ds Va db_appinit +.ds Vc \\$2_close +.ds Vo \\$2_open +.ds Vu \\$2_unlink +\} +.el\{\ +.ds Va DbEnv::appinit +.ds Vc \\$2::close +.ds Vo \\$2::open +.ds Vu \\$2::unlink +\} +.Fn \\*(Vu +The +.I \\*(Vu +.Al function method +destroys the \\$1 identified by the directory +.IR dir , +removing all files used to implement the \\$1. +.ie '\\$2'log' \{(The log files themselves and the directory +.I dir +are not removed.)\} +.el \{(The directory +.I dir +is not removed.)\} +If there are processes that have called +.I \\*(Vo +without calling +.I \\*(Vc +(i.e., there are processes currently using the \\$1), +.I \\*(Vu +will fail without further action, +unless the force flag is set, +in which case +.I \\*(Vu +will attempt to remove the \\$1 files regardless of any processes +still using the \\$1. +.PP +The result of attempting to forcibly destroy the region when a process +has the region open is unspecified. +Processes using a shared memory region maintain an open file descriptor +for it. +On UNIX systems, the region removal should succeed +and processes that have already joined the region should continue to +run in the region without change, +however processes attempting to join the \\$1 will either fail or +attempt to create a new region. +On other systems, e.g., WNT, where the +.IR unlink (2) +system call will fail if any process has an open file descriptor +for the file, +the region removal will fail. +.PP +In the case of catastrophic or system failure, +database recovery must be performed (see +.IR db_recover (1) +or the DB_RECOVER and DB_RECOVER_FATAL flags to +.IR \\*(Va (3)). +Alternatively, if recovery is not required because no database state is +maintained across failures, +it is possible to clean up a \\$1 by removing all of the +files in the directory specified to the +.I \\*(Vo +.Al function, method, +as \\$1 files are never created in any directory other than the one +specified to +.IR \\*(Vo . +Note, however, +that this has the potential to remove files created by the other DB +subsystems in this database environment. +.PP +.Rt \\*(Vu +.rm Va +.rm Vo +.rm Vu +.rm Vc +.. +.\" Signal paragraph for standard utilities. +.\" This macro takes one argument: +.\" + the utility name. +.de Si +The +.I \\$1 +utility attaches to DB shared memory regions. +In order to avoid region corruption, +it should always be given the chance to detach and exit gracefully. +To cause +.I \\$1 +to clean up after itself and exit, +send it an interrupt signal (SIGINT). +.. +.\" Logging paragraph for standard utilities. +.\" This macro takes one argument: +.\" + the utility name. +.de Pi +.B \-L +Log the execution of the \\$1 utility to the specified file in the +following format, where ``###'' is the process ID, and the date is +the time the utility starting running. +.sp +\\$1: ### Wed Jun 15 01:23:45 EDT 1995 +.sp +This file will be removed if the \\$1 utility exits gracefully. +.. +.\" Malloc paragraph. +.\" This macro takes one argument: +.\" + the allocated object +.de Ma +.if !'\*[TYPE]'JAVA'\{\ +\\$1 are created in allocated memory. +If +.I db_malloc +is non-NULL, +it is called to allocate the memory, +otherwise, +the library function +.IR malloc (3) +is used. +The function +.I db_malloc +must match the calling conventions of the +.IR malloc (3) +library routine. +Regardless, +the caller is responsible for deallocating the returned memory. +To deallocate the returned memory, +free each returned memory pointer; +pointers inside the memory do not need to be individually freed. +\} +.. +.\" Underlying function paragraph. +.\" This macro takes two arguments: +.\" + the function name +.\" + the utility name +.de Uf +The +.I \\$1 +.Al function method +is the underlying function used by the +.IR \\$2 (1) +utility. +See the source code for the +.I \\$2 +utility for an example of using +.I \\$1 +in a UNIX environment. +.. +.\" Underlying function paragraph, for C++. +.\" This macro takes three arguments: +.\" + the C++ method name +.\" + the function name for C +.\" + the utility name +.de Ux +The +.I \\$1 +method is based on the C +.I \\$2 +function, which +is the underlying function used by the +.IR \\$3 (1) +utility. +See the source code for the +.I \\$3 +utility for an example of using +.I \\$2 +in a UNIX environment. +.. +.TH DB_DUMP185 1 "April 10, 1998" +.UC 7 +.SH NAME +db_dump185 \- dump DB 1.85 legacy database files +.SH SYNOPSIS +\fBdb_dump185\fP [\fB-p\fP] [\fB-f output\fP] db_file +.SH DESCRIPTION +The +.I db_dump185 +utility reads the version 1.85 database file +.I db_file +and writes it to the standard output using a portable flat-text format +understood by the +.IR db_load (1) +utility. +The argument +.I db_file +must be a file produced using the version 1.85 +.I DB +library functions. +.PP +The options are as follows: +.TP 5 +.B \-f +Write to the specified +.I file +instead of to the standard output. +.TP 5 +.B \-p +If characters in either the key or data items are printing characters +(as defined by +.IR isprint (3)), +use printing characters in +.I file +to represent them. +This option permits users to use standard text editors to modify +the contents of databases. +.IP +Note, different systems may have different notions as to what characters +are ``printing'', and databases dumped in this manner may be less portable +to external systems. +.PP +Dumping and reloading hash databases that use user-defined hash functions +will result in new databases that use the default hash function. +While using the default hash function may not be optimal for the new database, +it will continue to work correctly. +.PP +Dumping and reloading btree databases that use user-defined prefix or +comparison functions will result in new databases that use the default +prefix and comparison functions. +.ft B +In this case, it is quite likely that the database will be damaged +beyond repair permitting neither record storage or retrieval. +.ft R +.PP +The only available workaround for either case is to modify the sources +for the +.IR db_load (1) +utility to load the database using the correct hash, prefix and comparison +functions. +.PP +.Ex db_dump +.SH "OUTPUT FORMATS +There are two output formats used by +.IR db_dump . +.PP +In both output formats, the first few lines of the output contain +header information describing the underlying access method, filesystem page +size and other bookkeeping information. +This information is output in ``name=value'' pairs, where ``name'' may +be any of the keywords listed in the +.IR db_load (1) +manual page, and ``value'' will be its value. +While this header information can be edited before the database is +reloaded, +there is rarely any reason to do so, as all of this information can be +overridden by command-line arguments to +.IR db_load . +.PP +Following the header information are the key/data pairs from the database. +If the database being dumped is of type +.B btree +or +.BR hash , +the output will be paired lines of text, +where the first line of the pair is the key item, +and the second line of the pair is its corresponding data item. +If the database being dumped is of type +.BR recno , +the output will be lines of text, +where each line is a new data item for the database. +.PP +If the +.B \-p +option was specified, each output line will consist of single characters +representing any characters from the database that were ``printing'', +and backslash (``\e'') escaped characters for any that were not. +Backslash characters appearing in the output mean one of two things: +if the backslash character precedes another backslash character, +it means that a literal backslash character occurred in the key or data +item. +If the backslash character precedes any other character, +the next two characters should be interpreted as hexadecimal specification +of a single character, e.g., ``\e0a'' is a newline character in the ASCII +character set. +.PP +If the +.B \-p +option was not specified, each output line will consist of paired hexadecimal +values, e.g., the line ``726f6f74'' is the string ``root'' in the ASCII +character set. +.PP +In both output formats, +a single newline character ends both the key and data items. +.SH "SEE ALSO" +.IR isprint (3) +.PP +.Gn +.PP +.Sa diff --git a/db_dump185/db_dump185.c b/db_dump185/db_dump185.c new file mode 100644 index 0000000..2fb3cc5 --- /dev/null +++ b/db_dump185/db_dump185.c @@ -0,0 +1,355 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 1996-2004 + * Sleepycat Software. All rights reserved. + * + * $Id: db_dump185.c,v 11.19 2004/01/28 03:36:00 bostic Exp $ + */ + +#ifndef lint +static char copyright[] = + "Copyright (c) 1996-2004\nSleepycat Software Inc. All rights reserved.\n"; +#endif + +#include + +#include +#include +#include +#include +#include +#include + +#include + +/* Hash Table Information */ +typedef struct hashhdr185 { /* Disk resident portion */ + int magic; /* Magic NO for hash tables */ + int version; /* Version ID */ + u_int32_t lorder; /* Byte Order */ + int bsize; /* Bucket/Page Size */ + int bshift; /* Bucket shift */ + int dsize; /* Directory Size */ + int ssize; /* Segment Size */ + int sshift; /* Segment shift */ + int ovfl_point; /* Where overflow pages are being + * allocated */ + int last_freed; /* Last overflow page freed */ + int max_bucket; /* ID of Maximum bucket in use */ + int high_mask; /* Mask to modulo into entire table */ + int low_mask; /* Mask to modulo into lower half of + * table */ + int ffactor; /* Fill factor */ + int nkeys; /* Number of keys in hash table */ +} HASHHDR185; +typedef struct htab185 { /* Memory resident data structure */ + HASHHDR185 hdr; /* Header */ +} HTAB185; + +/* Hash Table Information */ +typedef struct hashhdr186 { /* Disk resident portion */ + int32_t magic; /* Magic NO for hash tables */ + int32_t version; /* Version ID */ + int32_t lorder; /* Byte Order */ + int32_t bsize; /* Bucket/Page Size */ + int32_t bshift; /* Bucket shift */ + int32_t ovfl_point; /* Where overflow pages are being allocated */ + int32_t last_freed; /* Last overflow page freed */ + int32_t max_bucket; /* ID of Maximum bucket in use */ + int32_t high_mask; /* Mask to modulo into entire table */ + int32_t low_mask; /* Mask to modulo into lower half of table */ + int32_t ffactor; /* Fill factor */ + int32_t nkeys; /* Number of keys in hash table */ + int32_t hdrpages; /* Size of table header */ + int32_t h_charkey; /* value of hash(CHARKEY) */ +#define NCACHED 32 /* number of bit maps and spare points */ + int32_t spares[NCACHED];/* spare pages for overflow */ + /* address of overflow page bitmaps */ + u_int16_t bitmaps[NCACHED]; +} HASHHDR186; +typedef struct htab186 { /* Memory resident data structure */ + void *unused[2]; + HASHHDR186 hdr; /* Header */ +} HTAB186; + +typedef struct _epgno { + u_int32_t pgno; /* the page number */ + u_int16_t index; /* the index on the page */ +} EPGNO; + +typedef struct _epg { + void *page; /* the (pinned) page */ + u_int16_t index; /* the index on the page */ +} EPG; + +typedef struct _cursor { + EPGNO pg; /* B: Saved tree reference. */ + DBT key; /* B: Saved key, or key.data == NULL. */ + u_int32_t rcursor; /* R: recno cursor (1-based) */ + +#define CURS_ACQUIRE 0x01 /* B: Cursor needs to be reacquired. */ +#define CURS_AFTER 0x02 /* B: Unreturned cursor after key. */ +#define CURS_BEFORE 0x04 /* B: Unreturned cursor before key. */ +#define CURS_INIT 0x08 /* RB: Cursor initialized. */ + u_int8_t flags; +} CURSOR; + +/* The in-memory btree/recno data structure. */ +typedef struct _btree { + void *bt_mp; /* memory pool cookie */ + + void *bt_dbp; /* pointer to enclosing DB */ + + EPG bt_cur; /* current (pinned) page */ + void *bt_pinned; /* page pinned across calls */ + + CURSOR bt_cursor; /* cursor */ + + EPGNO bt_stack[50]; /* stack of parent pages */ + EPGNO *bt_sp; /* current stack pointer */ + + DBT bt_rkey; /* returned key */ + DBT bt_rdata; /* returned data */ + + int bt_fd; /* tree file descriptor */ + + u_int32_t bt_free; /* next free page */ + u_int32_t bt_psize; /* page size */ + u_int16_t bt_ovflsize; /* cut-off for key/data overflow */ + int bt_lorder; /* byte order */ + /* sorted order */ + enum { NOT, BACK, FORWARD } bt_order; + EPGNO bt_last; /* last insert */ + + /* B: key comparison function */ + int (*bt_cmp) __P((DBT *, DBT *)); + /* B: prefix comparison function */ + size_t (*bt_pfx) __P((DBT *, DBT *)); + /* R: recno input function */ + int (*bt_irec) __P((struct _btree *, u_int32_t)); + + FILE *bt_rfp; /* R: record FILE pointer */ + int bt_rfd; /* R: record file descriptor */ + + void *bt_cmap; /* R: current point in mapped space */ + void *bt_smap; /* R: start of mapped space */ + void *bt_emap; /* R: end of mapped space */ + size_t bt_msize; /* R: size of mapped region. */ + + u_int32_t bt_nrecs; /* R: number of records */ + size_t bt_reclen; /* R: fixed record length */ + u_char bt_bval; /* R: delimiting byte/pad character */ + +/* + * NB: + * B_NODUPS and R_RECNO are stored on disk, and may not be changed. + */ +#define B_INMEM 0x00001 /* in-memory tree */ +#define B_METADIRTY 0x00002 /* need to write metadata */ +#define B_MODIFIED 0x00004 /* tree modified */ +#define B_NEEDSWAP 0x00008 /* if byte order requires swapping */ +#define B_RDONLY 0x00010 /* read-only tree */ + +#define B_NODUPS 0x00020 /* no duplicate keys permitted */ +#define R_RECNO 0x00080 /* record oriented tree */ + +#define R_CLOSEFP 0x00040 /* opened a file pointer */ +#define R_EOF 0x00100 /* end of input file reached. */ +#define R_FIXLEN 0x00200 /* fixed length records */ +#define R_MEMMAPPED 0x00400 /* memory mapped file. */ +#define R_INMEM 0x00800 /* in-memory file */ +#define R_MODIFIED 0x01000 /* modified file */ +#define R_RDONLY 0x02000 /* read-only file */ + +#define B_DB_LOCK 0x04000 /* DB_LOCK specified. */ +#define B_DB_SHMEM 0x08000 /* DB_SHMEM specified. */ +#define B_DB_TXN 0x10000 /* DB_TXN specified. */ + u_int32_t flags; +} BTREE; + +void db_btree __P((DB *, int)); +void db_hash __P((DB *, int)); +void dbt_dump __P((DBT *)); +void dbt_print __P((DBT *)); +int main __P((int, char *[])); +int usage __P((void)); + +int +main(argc, argv) + int argc; + char *argv[]; +{ + extern char *optarg; + extern int optind; + DB *dbp; + DBT key, data; + int ch, pflag, rval; + + pflag = 0; + while ((ch = getopt(argc, argv, "f:p")) != EOF) + switch (ch) { + case 'f': + if (freopen(optarg, "w", stdout) == NULL) { + fprintf(stderr, "db_dump185: %s: %s\n", + optarg, strerror(errno)); + return (EXIT_FAILURE); + } + break; + case 'p': + pflag = 1; + break; + case '?': + default: + return (usage()); + } + argc -= optind; + argv += optind; + + if (argc != 1) + return (usage()); + + if ((dbp = dbopen(argv[0], O_RDONLY, 0, DB_BTREE, NULL)) == NULL) { + if ((dbp = + dbopen(argv[0], O_RDONLY, 0, DB_HASH, NULL)) == NULL) { + fprintf(stderr, + "db_dump185: %s: %s\n", argv[0], strerror(errno)); + return (EXIT_FAILURE); + } + db_hash(dbp, pflag); + } else + db_btree(dbp, pflag); + + /* + * !!! + * DB 1.85 DBTs are a subset of DB 2.0 DBTs, so we just use the + * new dump/print routines. + */ + if (pflag) + while (!(rval = dbp->seq(dbp, &key, &data, R_NEXT))) { + dbt_print(&key); + dbt_print(&data); + } + else + while (!(rval = dbp->seq(dbp, &key, &data, R_NEXT))) { + dbt_dump(&key); + dbt_dump(&data); + } + + if (rval == -1) { + fprintf(stderr, "db_dump185: seq: %s\n", strerror(errno)); + return (EXIT_FAILURE); + } + return (EXIT_SUCCESS); +} + +/* + * db_hash -- + * Dump out hash header information. + */ +void +db_hash(dbp, pflag) + DB *dbp; + int pflag; +{ + HTAB185 *hash185p; + HTAB186 *hash186p; + + printf("format=%s\n", pflag ? "print" : "bytevalue"); + printf("type=hash\n"); + + /* DB 1.85 was version 2, DB 1.86 was version 3. */ + hash185p = dbp->internal; + if (hash185p->hdr.version > 2) { + hash186p = dbp->internal; + printf("h_ffactor=%lu\n", (u_long)hash186p->hdr.ffactor); + if (hash186p->hdr.lorder != 0) + printf("db_lorder=%lu\n", (u_long)hash186p->hdr.lorder); + printf("db_pagesize=%lu\n", (u_long)hash186p->hdr.bsize); + } else { + printf("h_ffactor=%lu\n", (u_long)hash185p->hdr.ffactor); + if (hash185p->hdr.lorder != 0) + printf("db_lorder=%lu\n", (u_long)hash185p->hdr.lorder); + printf("db_pagesize=%lu\n", (u_long)hash185p->hdr.bsize); + } + printf("HEADER=END\n"); +} + +/* + * db_btree -- + * Dump out btree header information. + */ +void +db_btree(dbp, pflag) + DB *dbp; + int pflag; +{ + BTREE *btp; + + btp = dbp->internal; + + printf("format=%s\n", pflag ? "print" : "bytevalue"); + printf("type=btree\n"); +#ifdef NOT_AVAILABLE_IN_185 + printf("bt_minkey=%lu\n", (u_long)XXX); + printf("bt_maxkey=%lu\n", (u_long)XXX); +#endif + if (btp->bt_lorder != 0) + printf("db_lorder=%lu\n", (u_long)btp->bt_lorder); + printf("db_pagesize=%lu\n", (u_long)btp->bt_psize); + if (!(btp->flags & B_NODUPS)) + printf("duplicates=1\n"); + printf("HEADER=END\n"); +} + +static char hex[] = "0123456789abcdef"; + +/* + * dbt_dump -- + * Write out a key or data item using byte values. + */ +void +dbt_dump(dbtp) + DBT *dbtp; +{ + size_t len; + u_int8_t *p; + + for (len = dbtp->size, p = dbtp->data; len--; ++p) + (void)printf("%c%c", + hex[(*p & 0xf0) >> 4], hex[*p & 0x0f]); + printf("\n"); +} + +/* + * dbt_print -- + * Write out a key or data item using printable characters. + */ +void +dbt_print(dbtp) + DBT *dbtp; +{ + size_t len; + u_int8_t *p; + + for (len = dbtp->size, p = dbtp->data; len--; ++p) + if (isprint((int)*p)) { + if (*p == '\\') + (void)printf("\\"); + (void)printf("%c", *p); + } else + (void)printf("\\%c%c", + hex[(*p & 0xf0) >> 4], hex[*p & 0x0f]); + printf("\n"); +} + +/* + * usage -- + * Display the usage message. + */ +int +usage() +{ + (void)fprintf(stderr, "usage: db_dump185 [-p] [-f file] db_file\n"); + return (EXIT_FAILURE); +} debian/patches/build-outside-glibc.patch0000644000000000000000000000656412265116250015500 0ustar From 06b1bc37b12028b5dba3635d5851639663dfc1e4 Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Tue, 14 Jan 2014 02:08:51 +0000 Subject: Modify build system to work outside glibc Forwarded: no Last-Update: 2012-06-22 Patch-Name: build-outside-glibc.patch --- Makefile | 71 ++++++++++++++++++---------------------------------------------- Versions | 9 ++++---- 2 files changed, 25 insertions(+), 55 deletions(-) diff --git a/Makefile b/Makefile index ac08e78..ae4e1b5 100644 --- a/Makefile +++ b/Makefile @@ -20,54 +20,23 @@ libdb1-routines := bt_close bt_conv bt_debug bt_delete bt_get \ rec_close rec_delete rec_get rec_open rec_put rec_search \ rec_seq rec_utils -db1-headers := db.h mpool.h ndbm.h -distribute := compat.h \ - btree/btree.h btree/extern.h \ - hash/extern.h hash/hash.h hash/page.h \ - recno/extern.h recno/recno.h \ - $(db1-headers) - -include ../Makeconfig - -install-others := $(db1-headers:%=$(inst_includedir)/db1/%) - -ifeq (yes,$(build-shared)) -install-others += $(inst_slibdir)/libdb.so$(libdb1.so-version) -endif - -$(inst_slibdir)/libdb.so$(libdb1.so-version): $(inst_slibdir)/libdb1-$(version).so $(+force) - rm -f $@ - $(LN_S) $( Standards-Version: 3.6.2 Build-Depends: dpkg-dev (>= 1.15.7~), debhelper (>= 7.0.50) Vcs-Git: git://anonscm.debian.org/users/cjwatson/db1-compat.git Vcs-Browser: http://anonscm.debian.org/gitweb/?p=users/cjwatson/db1-compat.git Package: libdb1-compat Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends} Replaces: libc6 (<< 2.2.5-13), libc6.1 (<< 2.2.5-13), libc0.3 (<< 2.2.5-13), libdb2-util Description: Berkeley database routines [glibc 2.0/2.1 compatibility] libdb is a library for manipulating database files, developed at Berkeley. . It supports three kinds of file formats: * btree. A representation of a sorted, balanced tree structure. * hashed. An extensible, dynamic hashing scheme. * UNIX file oriented. A byte stream file with fixed or variable length records. . This library exists for compatibility with applications built against glibc 2.0 or 2.1. There is intentionally no corresponding development package. Do not link new applications against this library! debian/changelog0000644000000000000000000001043212265117475011052 0ustar db1-compat (2.1.3-17) unstable; urgency=medium * Switch to git; add Vcs-* fields. * Copy 4.4 BSD licence inline in debian/copyright rather than referring to /usr/share/common-licenses/BSD, per Lintian. -- Colin Watson Tue, 14 Jan 2014 02:21:46 +0000 db1-compat (2.1.3-16) unstable; urgency=low * Use dpkg-buildflags to enable hardening options. * Remove article from start of package synopsis. -- Colin Watson Fri, 22 Jun 2012 12:33:49 +0100 db1-compat (2.1.3-15) unstable; urgency=low * Add cross-compiling support. -- Colin Watson Fri, 16 Sep 2011 11:04:09 +0100 db1-compat (2.1.3-14) unstable; urgency=low * Link with -lc rather than /usr/lib/libc.so, fixing build failure on multiarch systems (LP: #749094). -- Colin Watson Mon, 04 Apr 2011 16:08:28 +0100 db1-compat (2.1.3-13) unstable; urgency=low * Convert to source format 3.0 (quilt) and DEP-3 patch tagging. -- Colin Watson Fri, 26 Mar 2010 00:22:36 +0000 db1-compat (2.1.3-12) unstable; urgency=low * Link with -z combreloc, not -z -combreloc (closes: #557075). -- Colin Watson Mon, 23 Nov 2009 20:31:16 +0000 db1-compat (2.1.3-11) unstable; urgency=low * Upgrade to debhelper v7. * Improve db_dump185(1) *roff markup to look better and avoid triggering a Lintian warning. -- Colin Watson Fri, 14 Aug 2009 22:50:15 +0100 db1-compat (2.1.3-10) unstable; urgency=low [ Colin Watson ] * Update DEB_BUILD_OPTIONS parsing code from policy 3.8.0. [ Julian Gilbey ] * Add db_dump185 to this package from the source of db4.3 version 4.3.29 and replace libdb2-util (Closes: #169830) -- Colin Watson Wed, 29 Jul 2009 13:22:17 +0100 db1-compat (2.1.3-9) unstable; urgency=low * Make binary-arch target depend on build (thanks, Julian Gilbey; closes: #352867). -- Colin Watson Tue, 14 Feb 2006 20:17:00 +0000 db1-compat (2.1.3-8) unstable; urgency=low * Drop priority to extra, now that libc no longer depends on libdb1-compat. * Policy version 3.6.2: - Support DEB_BUILD_OPTIONS=noopt. -- Colin Watson Mon, 8 Aug 2005 03:58:33 +0100 db1-compat (2.1.3-7) unstable; urgency=low * glibc's db1 used the soname "libdb.so.2.1" on alpha (thanks, Ben Mansell). Change our alpha soname to be in sync with this. (I haven't changed the package name, as nothing can legitimately build against db1-compat and the old soname was just a bug.) -- Colin Watson Fri, 18 Oct 2002 22:46:11 +0100 db1-compat (2.1.3-6) unstable; urgency=low * -D_LIBC apparently doesn't work with glibc 2.3 (thanks, Jack Howarth). Remove it and comment out the #ifdefs from the code instead, so that we always get the extra symbols (closes: #163264). -- Colin Watson Fri, 4 Oct 2002 04:25:21 +0100 db1-compat (2.1.3-5) unstable; urgency=low * Translate __PMT() to __P() on non-glibc architectures that don't have the former. This is just a temporary fix, as those architectures shouldn't need to keep db1-compat around for the long term. -- Colin Watson Tue, 24 Sep 2002 00:48:06 +0100 db1-compat (2.1.3-4) unstable; urgency=low * Instead of having to hard-code architecture details in order to use substvars, just use one big Replaces: line. -- Colin Watson Mon, 12 Aug 2002 18:34:15 +0100 db1-compat (2.1.3-3) unstable; urgency=low * Add -D_LIBC so that we get __dbopen (Ben Collins). * Import part of libc-symbols.h from glibc, for weak alias definitions. -- Colin Watson Mon, 12 Aug 2002 01:51:56 +0100 db1-compat (2.1.3-2) unstable; urgency=low * Call the binary package libdb1-compat, not libdb1g. -- Colin Watson Mon, 12 Aug 2002 01:28:59 +0100 db1-compat (2.1.3-1) unstable; urgency=low * Initial release, constructed from db1-addon-2.1.3.tar.bz2 in glibc's source package. * Alter Makefile to build outside glibc. Preprocess Versions in the way glibc's versioning helper scripts would, so we don't have to carry them around. -- Colin Watson Mon, 12 Aug 2002 01:02:24 +0100 debian/dirs0000644000000000000000000000001412265116250010045 0ustar lib usr/bin debian/manpages0000644000000000000000000000003012265116250010675 0ustar db_dump185/db_dump185.1