--- hash.c.orig 2009-11-06 12:41:16.000000000 -0800 +++ hash.c 2009-11-06 12:41:27.000000000 -0800 @@ -54,7 +54,7 @@ __FBSDID("$FreeBSD: src/lib/libc/db/hash #include <db.h> #include "hash.h" #include "page.h" -#include "extern.h" +#include "hash_extern.h" static int alloc_segs(HTAB *, int); static int flush_meta(HTAB *); @@ -104,8 +104,7 @@ __hash_open(const char *file, int flags, int bpages, hdrsize, new_table, nsegs, save_errno; if ((flags & O_ACCMODE) == O_WRONLY) { - errno = EINVAL; - return (NULL); + flags += O_RDWR - O_WRONLY; /* POSIX */ } if (!(hashp = (HTAB *)calloc(1, sizeof(HTAB)))) @@ -684,7 +683,7 @@ found: return (ERROR); break; default: - abort(); + LIBC_ABORT("illegal action (%d)", action); } save_bufp->flags &= ~BUF_PIN; return (SUCCESS);