--- /dev/null
+*** env/db_salloc.c.orig Tue Oct 19 17:22:12 1999
+--- env/db_salloc.c Wed Dec 31 19:00:00 1969
+***************
+*** 94,101 ****
+ */
+ ++len;
+ #endif
+! align = align <= sizeof(size_t) ?
+! sizeof(size_t) : ALIGN(align, sizeof(size_t));
+
+ /* Walk the list, looking for a slot. */
+ for (elp = SH_LIST_FIRST((struct __head *)p, __data);
+--- 94,100 ----
+ */
+ ++len;
+ #endif
+! align = 8;
+
+ /* Walk the list, looking for a slot. */
+ for (elp = SH_LIST_FIRST((struct __head *)p, __data);
--- /dev/null
+--- db-3.0.55/mutex/mut_pthread.c.linux Mon Apr 24 09:25:36 2000
++++ db-3.0.55/mutex/mut_pthread.c Mon Apr 24 09:36:31 2000
+@@ -86,16 +86,22 @@
+
+ if (!F_ISSET(mutexp, MUTEX_THREAD)) {
+ ret = pthread_condattr_init(&condattr);
++/* XXX linux threads implementation has not attributes for conditions. */
++#if !defined(__linux__)
+ if (ret == 0)
+ ret = pthread_condattr_setpshared(
+ &condattr, PTHREAD_PROCESS_SHARED);
++#endif
+ condattrp = &condattr;
+
+ if (ret == 0)
+ ret = pthread_mutexattr_init(&mutexattr);
++/* XXX linux threads implementation has not attributes for mutexes. */
++#if !defined(__linux__)
+ if (ret == 0)
+ ret = pthread_mutexattr_setpshared(
+ &mutexattr, PTHREAD_PROCESS_SHARED);
++#endif
+ mutexattrp = &mutexattr;
+ }
+
--- /dev/null
+--- db-3.0.55/os/os_map.c.jbj Sat Apr 1 16:13:49 2000
++++ db-3.0.55/os/os_map.c Sat Apr 1 16:16:19 2000
+@@ -33,6 +33,8 @@
+ static int __os_map __P((DB_ENV *, char *, DB_FH *, size_t, int, int, void **));
+ #endif
+
++int __os_shmget_perms = 0600;
++
+ /*
+ * __os_r_sysattach --
+ * Create/join a shared memory region.
+@@ -68,7 +70,7 @@
+ #endif
+ #if defined(HAVE_SHMGET)
+ if (F_ISSET(infop, REGION_CREATE) &&
+- (rp->segid = shmget(0, rp->size, IPC_PRIVATE | 0600)) == -1)
++ (rp->segid = shmget(0, rp->size, IPC_PRIVATE | __os_shmget_perms)) == -1)
+ return (__os_get_errno());
+
+ if ((infop->addr = shmat(rp->segid, NULL, 0)) == (void *)-1) {