diff -urP db-3.2.9/include/os_jump.h db-3.2.9DAFS/include/os_jump.h --- db-3.2.9/include/os_jump.h Sun Feb 13 21:59:55 2000 +++ db-3.2.9DAFS/include/os_jump.h Thu Jul 5 09:33:43 2001 @@ -29,6 +29,14 @@ int (*j_unmap) __P((void *, size_t)); ssize_t (*j_write) __P((int, const void *, size_t)); int (*j_yield) __P((void)); + int (*j_stat) __P((const char*, void *)); }; extern struct __db_jumptab __db_jump; + + + + + + + diff -urP db-3.2.9/os/os_fid.c db-3.2.9DAFS/os/os_fid.c --- db-3.2.9/os/os_fid.c Sat Oct 28 10:57:49 2000 +++ db-3.2.9DAFS/os/os_fid.c Thu Jul 5 09:47:59 2001 @@ -31,6 +31,7 @@ #endif #include "db_int.h" +#include "os_jump.h" #define SERIAL_INIT 0 static u_int32_t fid_serial = SERIAL_INIT; @@ -50,7 +51,7 @@ { struct stat sb; size_t i; - int ret; + int ret, sret; u_int32_t tmp; u_int8_t *p; @@ -59,14 +60,23 @@ /* On POSIX/UNIX, use a dev/inode pair. */ #ifdef HAVE_VXWORKS - if (stat((char *)fname, &sb)) { + sret = stat((char *)fname, &sb) ; #else - if (stat(fname, &sb)) { + /* This is a temporary hack.*/ + if( __db_jump.j_stat != NULL) + { + sret = __db_jump.j_stat((const char*)fname, &sb); + } + else + { + sret = stat(fname, &sb) ; + } #endif - ret = __os_get_errno(); - __db_err(dbenv, "%s: %s", fname, strerror(ret)); - return (ret); - } + if (sret) { + ret = __os_get_errno(); + __db_err(dbenv, "%s: %s", fname, strerror(ret)); + return (ret); + } /* * Initialize/increment the serial number we use to help avoid diff -urP db-3.2.9/os/os_map.c db-3.2.9DAFS/os/os_map.c --- db-3.2.9/os/os_map.c Thu Nov 30 18:07:55 2000 +++ db-3.2.9DAFS/os/os_map.c Wed Aug 15 15:48:44 2001 @@ -406,13 +406,15 @@ * the call isn't conditional. */ if (F_ISSET(dbenv, DB_ENV_LOCKDOWN) && mlock(p, len) != 0) { - ret = __os_get_errno(); - (void)munmap(p, len); - __db_err(dbenv, "mlock: %s", strerror(ret)); - return (ret); + printf("calling mlock\n"); + ret = __os_get_errno(); + (void)munmap(p, len); + __db_err(dbenv, "mlock: %s", strerror(ret)); + return (ret); } #else COMPQUIET(dbenv, NULL); + printf("No mlock\n"); #endif *addrp = p; diff -urP db-3.2.9/os/os_method.c db-3.2.9DAFS/os/os_method.c --- db-3.2.9/os/os_method.c Mon Nov 20 16:10:02 2000 +++ db-3.2.9DAFS/os/os_method.c Thu Jul 5 09:35:55 2001 @@ -173,6 +173,15 @@ return (0); } + +int +db_env_set_func_stat(func_stat) + int (*func_stat) __P((const char*, void *)); +{ + __db_jump.j_stat = func_stat; + return (0); +} + int db_env_set_pageyield(onoff) int onoff; diff -urP db-3.2.9/os/os_stat.c db-3.2.9DAFS/os/os_stat.c --- db-3.2.9/os/os_stat.c Sat Oct 28 10:57:49 2000 +++ db-3.2.9DAFS/os/os_stat.c Mon Aug 20 12:05:34 2001 @@ -34,12 +34,14 @@ struct stat sb; if (__db_jump.j_exists != NULL) - return (__db_jump.j_exists(path, isdirp)); - + { + int retval = (__db_jump.j_exists(path, isdirp)); + return retval; + } #ifdef HAVE_VXWORKS if (stat((char *)path, &sb) != 0) #else - if (stat(path, &sb) != 0) + if (stat(path, &sb) != 0) #endif return (__os_get_errno());