Patches for DB version 2.4.10

  1. Problem: The DB 2.4.10 release fails to compile on SunOS reporting the errors:

     

    "../dist/../common/db_region.c", line 755: SEEK_END undefined
    "../dist/../common/db_region.c", line 787: SEEK_CUR undefined
    "../dist/../log/log.c", line 354: SEEK_SET undefined
    "../dist/../log/log_get.c", line 218: SEEK_SET undefined
    "../dist/../log/log_put.c", line 432: SEEK_SET undefined
    "../dist/../mp/mp_bh.c", line 154: SEEK_SET undefined
    "../dist/../mp/mp_bh.c", line 345: SEEK_SET undefined
    

    Apply the following patch to the db-2.4.10 include/db_int.h.src file. (Note, this patch must be applied before configuring Berkeley DB.)  
    *** include/db_int.h.src.orig   Wed May  6 10:25:12 1998
    --- include/db_int.h.src        Wed May  6 10:25:41 1998
    ***************
    *** 385,388 ****
    --- 385,398 ----
      #include "os_func.h"
      #include "os_ext.h"
      
    + #ifndef SEEK_SET
    + #define       SEEK_SET        0       /* set file offset to offset */
    + #endif
    + #ifndef SEEK_CUR
    + #define       SEEK_CUR        1       /* set file offset to current plus offset */
    + #endif
    + #ifndef SEEK_END
    + #define       SEEK_END        2       /* set file offset to EOF plus offset */
    + #endif
    + 
      #endif /* !_DB_INTERNAL_H_ */
    
  2. Problem: The DB 2.4.10 release fails to compile when the target Win32 Release is selected on VC++ 5.0, reporting the error that the "__lock_dump_region" symbol is undefined.
    Apply the following patch to the db-2.4.10 build.win32/libdb.def file.  
    *** build.win32/libdb.def.orig  Thu May  7 11:00:28 1998
    --- build.win32/libdb.def       Thu May  7 11:00:49 1998
    ***************
    *** 91,97 ****
            __db_read                               @242
            __db_open                               @243
            __db_write                              @244
    !       __lock_dump_region                      @245
      ; these are needed for linking tools
            __db_dump                               @401
            __db_rpath                              @402
    --- 91,97 ----
            __db_read                               @242
            __db_open                               @243
            __db_write                              @244
    ! ;     __lock_dump_region                      @245
      ; these are needed for linking tools
            __db_dump                               @401
            __db_rpath                              @402
    

     

  3. Problem: Deleting a key in a hash database can cause a cursor sequentially walking the database to skip records.
    Apply the following patch to the db-2.4.10 hash/hash_page.c file.  
    *** hash/hash_page.c.orig       Wed Dec 31 19:00:00 1969
    --- hash/hash_page.c    Sun May 10 13:47:04 1998
    ***************
    *** 648,655 ****
                    /*
                     * Cursor is advanced to the beginning of the next page.
                     */
    !               cursorp->bndx = NDX_INVALID;
                    cursorp->pgno = PGNO(p);
                    chg_pgno = PGNO(p);
                    if ((ret = __ham_dirty_page(hashp, p)) != 0 ||
                        (ret = __ham_del_page(hashp->dbp, n_pagep)) != 0)
    --- 648,656 ----
                    /*
                     * Cursor is advanced to the beginning of the next page.
                     */
    !               cursorp->bndx = 0;
                    cursorp->pgno = PGNO(p);
    +               F_SET(cursorp, H_DELETED);
                    chg_pgno = PGNO(p);
                    if ((ret = __ham_dirty_page(hashp, p)) != 0 ||
                        (ret = __ham_del_page(hashp->dbp, n_pagep)) != 0)
    

     

  4. Problem: The DB 2.4.10 release fails to compile on FreeBSD-2.2.6-current, reporting that the "ftok" symbol is undefined.

    The ftok(3) routine is found in libcompat.a on FreeBSD-2.2.6-current. Modify the "LIBS=" line in the build directory Makefile to include libcompat.a.

     

  5. Problem: The DB 2.4.10 release fails to compile, reporting that there are conflicting types for "mmap" or "munmap":
    cc -c -O -I. -I../dist/../include ../dist/../os/os_config.c
    *** Error code 1
    ../dist/../os/os_config.c:52: conflicting types for `mmap'
    /usr/include/sys/types.h:165: previous declaration of `mmap'
    

    Apply the following patch to the db-2.4.10 os/os_config.c file.  
    *** os/os_config.c      Thu May 28 10:55:08 1998
    --- os/os_config.c      Thu May 28 10:55:08 1998
    ***************
    *** 43,57 ****
      imported extern void   free __P((void *));
      imported extern int    fsync __P((int));
      imported extern void    *malloc __P((size_t));
    - /*
    -  * XXX
    -  * Including sys/types.h is sufficient to get us a prototype for mmap
    -  * on HP/UX.
    -  */
    - #ifndef __hppa
    - imported extern void  *mmap __P((char *, size_t, int, int, int, off_t));
    - imported extern int    munmap __P((void *, size_t));
    - #endif
      imported extern int    open __P((const char *, int, ...));
      imported extern ssize_t        read __P((int, void *, size_t));
      imported extern void    *realloc __P((void *, size_t));
    --- 43,48 ----