+1998-09-23 13:52 Ulrich Drepper <drepper@cygnus.com>
+
+ * Makeconfig (all-subdirs): Add db.
+ * Versions.def: Add definition for libdb1.
+ * shlib-versions: Add definitions for libdb1.
+ * db/Makefile (extra-libs): Replace by libdb1.
+ (libdb-routines): Rename to libdb1-routines.
+ (headers): Rename to db1-headers.
+ (distribute): Add $(db1-headers).
+ (install-others): Define to install symlink libdb.so.NN and the
+ $(db1-headers).
+ (CPPFLAGS): Add -USE_LIBDB1
+ Remove rules to build makedb.
+ * db/Versions: Rename libdb to libdb1.
+ * include/db.h: If USE_LIBDB1 is defined include db/db.h.
+
+ * scripts/versions.awk: Recognize digits in library names.
+
+ * db/btree/bt_open.c: Fix compiler warnings.
+ * db/btree/bt_put.c: Likewise.
+ * db/btree/bt_split.c: Likewise.
+ * db/hash/hash.c: Likewise.
+ * db/hash/hash_bigkey.c: Likewise.
+ * db/recno/rec_close.c: Likewise.
+
1998-09-22 19:58 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
* posix/execvp.c: Don't give up searching the PATH if execve
endif
# These are the subdirectories containing the library source.
-all-subdirs = csu assert ctype db2 locale intl catgets math setjmp signal \
+all-subdirs = csu assert ctype db db2 locale intl catgets math setjmp signal\
stdlib stdio-common $(stdio) malloc string wcsmbs time dirent \
grp pwd posix io termios resource misc socket sysvipc gmon \
gnulib iconv iconvdata wctype manual shadow md5-crypt po argp \
libutil {
GLIBC_2.0
}
+libdb1 {
+ GLIBC_2.0
+}
subdir-dirs = btree db hash mpool recno
vpath %.c $(subdir-dirs)
-extra-libs := libdb
+extra-libs := libdb1
extra-libs-others := $(extra-libs)
-libdb-routines := bt_close bt_conv bt_debug bt_delete bt_get \
- bt_open bt_overflow bt_page bt_put bt_search \
- bt_seq bt_split bt_utils \
- db \
- hash hash_bigkey hash_buf hash_func hash_log2 hash_page \
- ndbm \
- mpool \
- rec_close rec_delete rec_get rec_open rec_put rec_search \
- rec_seq rec_utils
-
-headers := db.h mpool.h ndbm.h
+libdb1-routines := bt_close bt_conv bt_debug bt_delete bt_get \
+ bt_open bt_overflow bt_page bt_put bt_search \
+ bt_seq bt_split bt_utils \
+ db \
+ hash hash_bigkey hash_buf hash_func hash_log2 hash_page \
+ ndbm \
+ mpool \
+ 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
+ recno/extern.h recno/recno.h \
+ $(db1-headers)
+
+include ../Makeconfig
+
+install-others := $(inst_slibdir)/libdb.so$(libdb1.so-version) \
+ $(db1-headers:%=$(inst_includedir)/db1/%)
-others := makedb
-install-bin := makedb
+$(inst_slibdir)/libdb.so$(libdb1.so-version): $(inst_slibdir)/libdb1-$(version).so $(+force)
+ rm -f $@
+ $(LN_S) $(^F) $@
+
+$(db1-headers:%=$(inst_includedir)/db1/%): $(inst_includedir)/db1/%: % $(+force)
+ $(do-install)
include ../Rules
-CPPFLAGS += -D__DBINTERFACE_PRIVATE
+CPPFLAGS += -D__DBINTERFACE_PRIVATE -DUSE_LIBDB1
# This file defines some static functions for alternative hash algorithms
# that are not actually used.
# The db code outsmarts the compiler frequently.
override CFLAGS += -Wno-uninitialized
-ifeq ($(build-shared),yes)
-$(objpfx)makedb: $(objpfx)libdb.so$(libdb.so-version)
-else
-$(objpfx)makedb: $(objpfx)libdb.a
-endif
-
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
# This ensures they will load libc.so for needed symbols if loaded by
# a statically-linked program that hasn't already loaded it.
-$(objpfx)libdb.so: $(common-objpfx)libc.so
-
-subdir_install: $(inst_libdir)/libndbm.a
-$(inst_libdir)/libndbm.a: $(inst_libdir)/libdb.a $(+force)
- $(make-link)
+$(objpfx)libdb1.so: $(common-objpfx)libc.so
-ifeq ($(build-shared),yes)
-subdir_install: $(inst_libdir)/libndbm.so
-$(inst_libdir)/libndbm.so: $(inst_libdir)/libdb.so $(+force)
- $(make-link)
-endif
+#subdir_install: $(inst_libdir)/libndbm.a
+#$(inst_libdir)/libndbm.a: $(inst_libdir)/libdb1.a $(+force)
+# $(make-link)
+#
+#ifeq ($(build-shared),yes)
+#subdir_install: $(inst_libdir)/libndbm.so
+#$(inst_libdir)/libndbm.so: $(inst_libdir)/libdb1.so $(+force)
+# $(make-link)
+#endif
-libdb {
+libdb1 {
GLIBC_2.0 {
# the real DB entry point.
dbopen; __dbopen;
*/
if (b.psize &&
(b.psize < MINPSIZE || b.psize > MAX_PAGE_OFFSET + 1 ||
- b.psize & sizeof(indx_t) - 1))
+ b.psize & (sizeof(indx_t) - 1)))
goto einval;
/* Minimum number of keys per page; absolute minimum is 2. */
if (m.magic != BTREEMAGIC || m.version != BTREEVERSION)
goto eftype;
if (m.psize < MINPSIZE || m.psize > MAX_PAGE_OFFSET + 1 ||
- m.psize & sizeof(indx_t) - 1)
+ m.psize & (sizeof(indx_t) - 1))
goto eftype;
if (m.flags & ~SAVEMETA)
goto eftype;
t->bt_psize = b.psize;
/* Set the cache size; must be a multiple of the page size. */
- if (b.cachesize && b.cachesize & b.psize - 1)
- b.cachesize += (~b.cachesize & b.psize - 1) + 1;
+ if (b.cachesize && b.cachesize & (b.psize - 1))
+ b.cachesize += (~b.cachesize & (b.psize - 1)) + 1;
if (b.cachesize < b.psize * MINCACHE)
b.cachesize = b.psize * MINCACHE;
t->bt_cursor.pg.pgno == h->pgno && t->bt_cursor.pg.index >= index)
++t->bt_cursor.pg.index;
- if (t->bt_order == NOT)
+ if (t->bt_order == NOT) {
if (h->nextpg == P_INVALID) {
if (index == NEXTINDEX(h) - 1) {
t->bt_order = FORWARD;
t->bt_last.pgno = h->pgno;
}
}
+ }
mpool_put(t->bt_mp, h, MPOOL_DIRTY);
* where we decide to try and copy too much onto the left page.
* Make sure that doesn't happen.
*/
- if (skip <= off &&
- used + nbytes + sizeof(indx_t) >= full || nxt == top - 1) {
+ if ((skip <= off && used + nbytes + sizeof(indx_t) >= full)
+ || nxt == top - 1) {
--off;
break;
}
{
register void *p;
- if (p = malloc(newsize)) {
+ if ((p = malloc(newsize))) {
memmove(p, *p_ptr, oldsize);
memset((char *)p + oldsize, 0, newsize - oldsize);
free(*p_ptr);
if (!bufp)
return (-1);
n = p[0];
- if (!key_size)
+ if (!key_size) {
if (FREESPACE(p)) {
move_bytes = MIN(FREESPACE(p), val_size);
off = OFFSET(p) - move_bytes;
OFFSET(p) = off;
} else
p[n - 2] = FULL_KEY;
+ }
p = (u_int16_t *)bufp->page;
cp = bufp->page;
bufp->flags |= BUF_MOD;
return (-1);
change = (__call_hash(hashp, key.data, key.size) != obucket);
- if (ret->next_addr = __find_last_page(hashp, &big_keyp)) {
+ if ((ret->next_addr = __find_last_page(hashp, &big_keyp))) {
if (!(ret->nextp =
__get_buf(hashp, ret->next_addr, big_keyp, 0)))
return (-1);;
if (F_ISSET(t, R_MEMMAPPED) && munmap(t->bt_smap, t->bt_msize))
status = RET_ERROR;
- if (!F_ISSET(t, R_INMEM))
+ if (!F_ISSET(t, R_INMEM)) {
if (F_ISSET(t, R_CLOSEFP)) {
if (fclose(t->bt_rfp))
status = RET_ERROR;
} else
if (close(t->bt_rfd))
status = RET_ERROR;
+ }
if (__bt_close(dbp) == RET_ERROR)
status = RET_ERROR;
#ifndef _DB_H_
-#include <db2/db.h>
+#ifdef USE_LIBDB1
+# include <db/db.h>
+#else
+# include <db2/db.h>
/* Internal interface for NSS. */
int __nss_db_open __P((const char *,
DBTYPE, u_int32_t, int, DB_ENV *, DB_INFO *, DB **));
+#endif
#endif
BEGIN {
nlibs=0;
while (getline < defsfile) {
- if (/^[a-zA-Z_]+ {/) {
+ if (/^[a-zA-Z0-9_]+ {/) {
libs[$1] = 1;
curlib = $1;
while (getline < defsfile && ! /^}/) {
}
# This matches the beginning of the version information for a new library.
-/^[a-zA-Z_]+/ {
+/^[a-zA-Z0-9_]+/ {
actlib = $1;
if (!libs[$1]) {
printf("no versions defined for %s\n", $1) > "/dev/stderr";
# We use libdb.so.3 for the interface in version 2.x of the Berkeley DB code.
.*-.*-.* libdb=3
+# This is the Berkeley DB 1.85. We use the version numbers from glibc 2.0.*
+# for all times.
+alpha-.*-linux.* libdb1=2.1
+.*-.*-.* libdb1=2
# This defines the shared library version numbers we will install.
alpha.*-.*-linux.* libcrypt=1.1