Index: mutex/mut_fcntl.c
--- mutex/mut_fcntl.c.orig	2008-01-08 21:58:43 +0100
+++ mutex/mut_fcntl.c	2008-05-26 22:36:45 +0200
@@ -84,7 +84,7 @@
 
 		/* Acquire an exclusive kernel lock. */
 		k_lock.l_type = F_WRLCK;
-		if (fcntl(env->lockfhp->fd, F_SETLKW, &k_lock))
+		if (fcntl(env->lockfhp->fd, F_SETLKW, &k_lock) == -1)
 			goto err;
 
 		/* If the resource is still available, it's ours. */
@@ -97,7 +97,7 @@
 
 		/* Release the kernel lock. */
 		k_lock.l_type = F_UNLCK;
-		if (fcntl(env->lockfhp->fd, F_SETLK, &k_lock))
+		if (fcntl(env->lockfhp->fd, F_SETLK, &k_lock) == -1)
 			goto err;
 
 		/*
Index: os/os_open.c
--- os/os_open.c.orig	2008-03-26 05:11:35 +0100
+++ os/os_open.c	2008-05-26 22:36:05 +0200
@@ -67,7 +67,7 @@
 	if (LF_ISSET(DB_OSO_EXCL))
 		oflags |= O_EXCL;
 
-#ifdef HAVE_O_DIRECT
+#if defined(HAVE_O_DIRECT) && defined(__FreeBSD__)
 	if (LF_ISSET(DB_OSO_DIRECT))
 		oflags |= O_DIRECT;
 #endif
