diff options
Diffstat (limited to 'db2/db.h')
-rw-r--r-- | db2/db.h | 245 |
1 files changed, 156 insertions, 89 deletions
diff --git a/db2/db.h b/db2/db.h index 6a75bcd33d..e1f5c72044 100644 --- a/db2/db.h +++ b/db2/db.h @@ -1,10 +1,10 @@ /*- * See the file LICENSE for redistribution information. * - * Copyright (c) 1996, 1997 + * Copyright (c) 1996, 1997, 1998 * Sleepycat Software. All rights reserved. * - * @(#)db.h.src 10.102 (Sleepycat) 1/18/98 + * @(#)db.h.src 10.131 (Sleepycat) 6/2/98 */ #ifndef _DB_H_ @@ -54,8 +54,7 @@ * * !!! * We also provide the standard u_int, u_long etc., if they're not provided - * by the system. This isn't completely necessary, but the example programs - * need them. + * by the system. */ #ifndef __BIT_TYPES_DEFINED__ #define __BIT_TYPES_DEFINED__ @@ -72,9 +71,9 @@ #define DB_VERSION_MAJOR 2 -#define DB_VERSION_MINOR 3 -#define DB_VERSION_PATCH 16 -#define DB_VERSION_STRING "Sleepycat Software: DB 2.3.16: (1/19/98)" +#define DB_VERSION_MINOR 4 +#define DB_VERSION_PATCH 14 +#define DB_VERSION_STRING "Sleepycat Software: DB 2.4.14: (6/2/98)" typedef u_int32_t db_pgno_t; /* Page number type. */ typedef u_int16_t db_indx_t; /* Page offset type. */ @@ -95,6 +94,7 @@ struct __db_bt_stat; typedef struct __db_bt_stat DB_BTREE_STAT; struct __db_dbt; typedef struct __db_dbt DBT; struct __db_env; typedef struct __db_env DB_ENV; struct __db_info; typedef struct __db_info DB_INFO; +struct __db_lock_stat; typedef struct __db_lock_stat DB_LOCK_STAT; struct __db_lockregion; typedef struct __db_lockregion DB_LOCKREGION; struct __db_lockreq; typedef struct __db_lockreq DB_LOCKREQ; struct __db_locktab; typedef struct __db_locktab DB_LOCKTAB; @@ -102,6 +102,7 @@ struct __db_log; typedef struct __db_log DB_LOG; struct __db_log_stat; typedef struct __db_log_stat DB_LOG_STAT; struct __db_lsn; typedef struct __db_lsn DB_LSN; struct __db_mpool; typedef struct __db_mpool DB_MPOOL; +struct __db_mpool_finfo;typedef struct __db_mpool_finfo DB_MPOOL_FINFO; struct __db_mpool_fstat;typedef struct __db_mpool_fstat DB_MPOOL_FSTAT; struct __db_mpool_stat; typedef struct __db_mpool_stat DB_MPOOL_STAT; struct __db_mpoolfile; typedef struct __db_mpoolfile DB_MPOOLFILE; @@ -134,7 +135,7 @@ struct __db_dbt { * There are a set of functions that the application can replace with its * own versions, and some other knobs which can be turned at run-time. */ -#define DB_FUNC_CALLOC 1 /* ANSI C calloc. */ +#define DB_FUNC_CALLOC 1 /* DELETED: ANSI C calloc. */ #define DB_FUNC_CLOSE 2 /* POSIX 1003.1 close. */ #define DB_FUNC_DIRFREE 3 /* DB: free directory list. */ #define DB_FUNC_DIRLIST 4 /* DB: create directory list. */ @@ -149,12 +150,18 @@ struct __db_dbt { #define DB_FUNC_REALLOC 13 /* ANSI C realloc. */ #define DB_FUNC_SEEK 14 /* POSIX 1003.1 lseek. */ #define DB_FUNC_SLEEP 15 /* DB: sleep secs/usecs. */ -#define DB_FUNC_STRDUP 16 /* DB: strdup(3). */ +#define DB_FUNC_STRDUP 16 /* DELETED: DB: strdup(3). */ #define DB_FUNC_UNLINK 17 /* POSIX 1003.1 unlink. */ #define DB_FUNC_UNMAP 18 /* DB: unmap shared memory file. */ #define DB_FUNC_WRITE 19 /* POSIX 1003.1 write. */ #define DB_FUNC_YIELD 20 /* DB: yield thread to scheduler. */ #define DB_TSL_SPINS 21 /* DB: initialize spin count. */ +#define DB_FUNC_RUNLINK 22 /* DB: remove a shared region. */ +#define DB_REGION_ANON 23 /* DB: anonymous, unnamed regions. */ +#define DB_REGION_INIT 24 /* DB: page-fault regions in create. */ +#define DB_REGION_NAME 25 /* DB: anonymous, named regions. */ +#define DB_MUTEXLOCKS 26 /* DB: turn off all mutex locks. */ +#define DB_PAGEYIELD 27 /* DB: yield the CPU on pool get. */ /* * Database configuration and initialization. @@ -162,52 +169,51 @@ struct __db_dbt { /* * Flags understood by both db_open(3) and db_appinit(3). */ -#define DB_CREATE 0x00001 /* O_CREAT: create file as necessary. */ -#define DB_NOMMAP 0x00002 /* Don't mmap underlying file. */ -#define DB_THREAD 0x00004 /* Free-thread DB package handles. */ +#define DB_CREATE 0x000001 /* O_CREAT: create file as necessary. */ +#define DB_NOMMAP 0x000002 /* Don't mmap underlying file. */ +#define DB_THREAD 0x000004 /* Free-thread DB package handles. */ /* * Flags understood by db_appinit(3). - * - * DB_MUTEXDEBUG is internal only, and not documented. */ -/* 0x00007 COMMON MASK. */ -#define DB_INIT_LOCK 0x00008 /* Initialize locking. */ -#define DB_INIT_LOG 0x00010 /* Initialize logging. */ -#define DB_INIT_MPOOL 0x00020 /* Initialize mpool. */ -#define DB_INIT_TXN 0x00040 /* Initialize transactions. */ -#define DB_MPOOL_PRIVATE 0x00080 /* Mpool: private memory pool. */ -#define DB_MUTEXDEBUG 0x00100 /* Do not get/set mutexes in regions. */ -#define DB_RECOVER 0x00200 /* Run normal recovery. */ -#define DB_RECOVER_FATAL 0x00400 /* Run catastrophic recovery. */ -#define DB_TXN_NOSYNC 0x00800 /* Do not sync log on commit. */ -#define DB_USE_ENVIRON 0x01000 /* Use the environment. */ -#define DB_USE_ENVIRON_ROOT 0x02000 /* Use the environment if root. */ +/* 0x000007 COMMON MASK. */ +#define DB_INIT_LOCK 0x000008 /* Initialize locking. */ +#define DB_INIT_LOG 0x000010 /* Initialize logging. */ +#define DB_INIT_MPOOL 0x000020 /* Initialize mpool. */ +#define DB_INIT_TXN 0x000040 /* Initialize transactions. */ +#define DB_MPOOL_PRIVATE 0x000080 /* Mpool: private memory pool. */ +#define __UNUSED_100 0x000100 +#define DB_RECOVER 0x000200 /* Run normal recovery. */ +#define DB_RECOVER_FATAL 0x000400 /* Run catastrophic recovery. */ +#define DB_TXN_NOSYNC 0x000800 /* Do not sync log on commit. */ +#define DB_USE_ENVIRON 0x001000 /* Use the environment. */ +#define DB_USE_ENVIRON_ROOT 0x002000 /* Use the environment if root. */ /* CURRENTLY UNUSED LOCK FLAGS. */ -#define DB_TXN_LOCK_2PL 0x00000 /* Two-phase locking. */ -#define DB_TXN_LOCK_OPTIMISTIC 0x00000 /* Optimistic locking. */ -#define DB_TXN_LOCK_MASK 0x00000 /* Lock flags mask. */ +#define DB_TXN_LOCK_2PL 0x000000 /* Two-phase locking. */ +#define DB_TXN_LOCK_OPTIMIST 0x000000 /* Optimistic locking. */ +#define DB_TXN_LOCK_MASK 0x000000 /* Lock flags mask. */ /* CURRENTLY UNUSED LOG FLAGS. */ -#define DB_TXN_LOG_REDO 0x00000 /* Redo-only logging. */ -#define DB_TXN_LOG_UNDO 0x00000 /* Undo-only logging. */ -#define DB_TXN_LOG_UNDOREDO 0x00000 /* Undo/redo write-ahead logging. */ -#define DB_TXN_LOG_MASK 0x00000 /* Log flags mask. */ +#define DB_TXN_LOG_REDO 0x000000 /* Redo-only logging. */ +#define DB_TXN_LOG_UNDO 0x000000 /* Undo-only logging. */ +#define DB_TXN_LOG_UNDOREDO 0x000000 /* Undo/redo write-ahead logging. */ +#define DB_TXN_LOG_MASK 0x000000 /* Log flags mask. */ /* * Flags understood by db_open(3). * - * DB_EXCL and DB_TEMPORARY are internal only, and not documented. - * DB_SEQUENTIAL is currently internal, but likely to be exported some day. + * DB_EXCL and DB_TEMPORARY are internal only, and are not documented. + * DB_SEQUENTIAL is currently internal, but may be exported some day. */ -/* 0x00007 COMMON MASK. */ -/* 0x07fff ALREADY USED. */ -#define DB_EXCL 0x08000 /* O_EXCL: exclusive open. */ -#define DB_RDONLY 0x10000 /* O_RDONLY: read-only. */ -#define DB_SEQUENTIAL 0x20000 /* Indicate sequential access. */ -#define DB_TEMPORARY 0x40000 /* Remove on last close. */ -#define DB_TRUNCATE 0x80000 /* O_TRUNCATE: replace existing DB. */ +/* 0x000007 COMMON MASK. */ +/* 0x003fff ALREADY USED. */ +#define __UNUSED_4000 0x004000 +#define DB_EXCL 0x008000 /* O_EXCL: exclusive open. */ +#define DB_RDONLY 0x010000 /* O_RDONLY: read-only. */ +#define DB_SEQUENTIAL 0x020000 /* Indicate sequential access. */ +#define DB_TEMPORARY 0x040000 /* Remove on last close. */ +#define DB_TRUNCATE 0x080000 /* O_TRUNCATE: replace existing DB. */ /* * Deadlock detector modes; used in the DBENV structure to configure the @@ -240,9 +246,9 @@ struct __db_env { /* Locking. */ DB_LOCKTAB *lk_info; /* Return from lock_open(). */ u_int8_t *lk_conflicts; /* Two dimensional conflict matrix. */ - int lk_modes; /* Number of lock modes in table. */ - u_int lk_max; /* Maximum number of locks. */ - u_int32_t lk_detect; /* Deadlock detect on every conflict. */ + u_int32_t lk_modes; /* Number of lock modes in table. */ + u_int32_t lk_max; /* Maximum number of locks. */ + u_int32_t lk_detect; /* Deadlock detect on all conflicts. */ /* Logging. */ DB_LOG *lg_info; /* Return from log_open(). */ @@ -255,7 +261,7 @@ struct __db_env { /* Transactions. */ DB_TXNMGR *tx_info; /* Return from txn_open(). */ - unsigned int tx_max; /* Maximum number of transactions. */ + u_int32_t tx_max; /* Maximum number of transactions. */ int (*tx_recover) /* Dispatch function for recovery. */ __P((DB_LOG *, DBT *, DB_LSN *, int, void *)); @@ -300,17 +306,17 @@ struct __db_info { void *(*db_malloc) __P((size_t)); /* Btree access method. */ - int bt_maxkey; /* Maximum keys per page. */ - int bt_minkey; /* Minimum keys per page. */ + u_int32_t bt_maxkey; /* Maximum keys per page. */ + u_int32_t bt_minkey; /* Minimum keys per page. */ int (*bt_compare) /* Comparison function. */ __P((const DBT *, const DBT *)); size_t (*bt_prefix) /* Prefix function. */ __P((const DBT *, const DBT *)); /* Hash access method. */ - unsigned int h_ffactor; /* Fill factor. */ - unsigned int h_nelem; /* Number of elements. */ - u_int32_t (*h_hash) /* Hash function. */ + u_int32_t h_ffactor; /* Fill factor. */ + u_int32_t h_nelem; /* Number of elements. */ + u_int32_t (*h_hash) /* Hash function. */ __P((const void *, u_int32_t)); /* Recno access method. */ @@ -353,6 +359,7 @@ struct __db_info { #define DB_SET 0x010000 /* c_get(), log_get() */ #define DB_SET_RANGE 0x020000 /* c_get() */ #define DB_SET_RECNO 0x040000 /* c_get() */ +#define DB_CURLSN 0x080000 /* log_put() */ /* * DB (user visible) error return codes. @@ -435,14 +442,14 @@ struct __db { void *(*db_malloc) __P((size_t)); /* Functions. */ - int (*close) __P((DB *, int)); + int (*close) __P((DB *, u_int32_t)); int (*cursor) __P((DB *, DB_TXN *, DBC **)); - int (*del) __P((DB *, DB_TXN *, DBT *, int)); + int (*del) __P((DB *, DB_TXN *, DBT *, u_int32_t)); int (*fd) __P((DB *, int *)); - int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, int)); - int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, int)); - int (*stat) __P((DB *, void *, void *(*)(size_t), int)); - int (*sync) __P((DB *, int)); + int (*get) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); + int (*put) __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); + int (*stat) __P((DB *, void *, void *(*)(size_t), u_int32_t)); + int (*sync) __P((DB *, u_int32_t)); #define DB_AM_DUP 0x000001 /* DB_DUP (internal). */ #define DB_AM_INMEM 0x000002 /* In-memory; no sync on close. */ @@ -483,9 +490,9 @@ struct __dbc { void *internal; /* Access method private. */ int (*c_close) __P((DBC *)); - int (*c_del) __P((DBC *, int)); - int (*c_get) __P((DBC *, DBT *, DBT *, int)); - int (*c_put) __P((DBC *, DBT *, DBT *, int)); + int (*c_del) __P((DBC *, u_int32_t)); + int (*c_get) __P((DBC *, DBT *, DBT *, u_int32_t)); + int (*c_put) __P((DBC *, DBT *, DBT *, u_int32_t)); }; /* Btree/recno statistics structure. */ @@ -524,10 +531,11 @@ struct __db_bt_stat { #if defined(__cplusplus) extern "C" { #endif -int db_appinit __P((const char *, char * const *, DB_ENV *, int)); +int db_appinit __P((const char *, char * const *, DB_ENV *, u_int32_t)); int db_appexit __P((DB_ENV *)); int db_jump_set __P((void *, int)); -int db_open __P((const char *, DBTYPE, int, int, DB_ENV *, DB_INFO *, DB **)); +int db_open __P((const char *, + DBTYPE, u_int32_t, int, DB_ENV *, DB_INFO *, DB **)); int db_value_set __P((int, int)); char *db_version __P((int *, int *, int *)); #if defined(__cplusplus) @@ -575,6 +583,21 @@ typedef enum { DB_LOCK_IWR /* Intent to read and write. */ } db_lockmode_t; +/* + * Status of a lock. + */ +typedef enum { + DB_LSTAT_ABORTED, /* Lock belongs to an aborted txn. */ + DB_LSTAT_ERR, /* Lock is bad. */ + DB_LSTAT_FREE, /* Lock is unallocated. */ + DB_LSTAT_HELD, /* Lock is currently held. */ + DB_LSTAT_NOGRANT, /* Lock was not granted. */ + DB_LSTAT_PENDING, /* Lock was waiting and has been + * promoted; waiting for the owner + * to run and upgrade it to held. */ + DB_LSTAT_WAITING /* Lock is on the wait queue. */ +} db_status_t; + /* Lock request structure. */ struct __db_lockreq { db_lockop_t op; /* Operation. */ @@ -596,19 +619,38 @@ extern const u_int8_t db_rw_conflicts[]; #define DB_LOCK_RIW_N 6 extern const u_int8_t db_riw_conflicts[]; +struct __db_lock_stat { + u_int32_t st_magic; /* Lock file magic number. */ + u_int32_t st_version; /* Lock file version number. */ + u_int32_t st_maxlocks; /* Maximum number of locks in table. */ + u_int32_t st_nmodes; /* Number of lock modes. */ + u_int32_t st_numobjs; /* Number of objects. */ + u_int32_t st_nlockers; /* Number of lockers. */ + u_int32_t st_nconflicts; /* Number of lock conflicts. */ + u_int32_t st_nrequests; /* Number of lock gets. */ + u_int32_t st_nreleases; /* Number of lock puts. */ + u_int32_t st_ndeadlocks; /* Number of lock deadlocks. */ + u_int32_t st_region_wait; /* Region lock granted after wait. */ + u_int32_t st_region_nowait; /* Region lock granted without wait. */ + u_int32_t st_refcnt; /* Region reference count. */ + u_int32_t st_regsize; /* Region size. */ +}; + #if defined(__cplusplus) extern "C" { #endif int lock_close __P((DB_LOCKTAB *)); -int lock_detect __P((DB_LOCKTAB *, int, int)); +int lock_detect __P((DB_LOCKTAB *, u_int32_t, u_int32_t)); int lock_get __P((DB_LOCKTAB *, - u_int32_t, int, const DBT *, db_lockmode_t, DB_LOCK *)); + u_int32_t, u_int32_t, const DBT *, db_lockmode_t, DB_LOCK *)); int lock_id __P((DB_LOCKTAB *, u_int32_t *)); -int lock_open __P((const char *, int, int, DB_ENV *, DB_LOCKTAB **)); +int lock_open __P((const char *, + u_int32_t, int, DB_ENV *, DB_LOCKTAB **)); int lock_put __P((DB_LOCKTAB *, DB_LOCK)); +int lock_stat __P((DB_LOCKTAB *, DB_LOCK_STAT **, void *(*)(size_t))); int lock_unlink __P((const char *, int, DB_ENV *)); int lock_vec __P((DB_LOCKTAB *, - u_int32_t, int, DB_LOCKREQ *, int, DB_LOCKREQ **)); + u_int32_t, u_int32_t, DB_LOCKREQ *, int, DB_LOCKREQ **)); #if defined(__cplusplus) } #endif @@ -651,19 +693,21 @@ struct __db_log_stat { u_int32_t st_region_nowait; /* Region lock granted without wait. */ u_int32_t st_cur_file; /* Current log file number. */ u_int32_t st_cur_offset; /* Current log file offset. */ + u_int32_t st_refcnt; /* Region reference count. */ + u_int32_t st_regsize; /* Region size. */ }; #if defined(__cplusplus) extern "C" { #endif -int log_archive __P((DB_LOG *, char **[], int, void *(*)(size_t))); +int log_archive __P((DB_LOG *, char **[], u_int32_t, void *(*)(size_t))); int log_close __P((DB_LOG *)); int log_compare __P((const DB_LSN *, const DB_LSN *)); int log_file __P((DB_LOG *, const DB_LSN *, char *, size_t)); int log_flush __P((DB_LOG *, const DB_LSN *)); -int log_get __P((DB_LOG *, DB_LSN *, DBT *, int)); -int log_open __P((const char *, int, int, DB_ENV *, DB_LOG **)); -int log_put __P((DB_LOG *, DB_LSN *, const DBT *, int)); +int log_get __P((DB_LOG *, DB_LSN *, DBT *, u_int32_t)); +int log_open __P((const char *, u_int32_t, int, DB_ENV *, DB_LOG **)); +int log_put __P((DB_LOG *, DB_LSN *, const DBT *, u_int32_t)); int log_register __P((DB_LOG *, DB *, const char *, DBTYPE, u_int32_t *)); int log_stat __P((DB_LOG *, DB_LOG_STAT **, void *(*)(size_t))); int log_unlink __P((const char *, int, DB_ENV *)); @@ -705,6 +749,17 @@ struct __db_mpool_stat { u_int32_t st_page_trickle; /* Pages written by memp_trickle. */ u_int32_t st_region_wait; /* Region lock granted after wait. */ u_int32_t st_region_nowait; /* Region lock granted without wait. */ + u_int32_t st_refcnt; /* Region reference count. */ + u_int32_t st_regsize; /* Region size. */ +}; + +/* Mpool file open information structure. */ +struct __db_mpool_finfo { + int ftype; /* File type. */ + DBT *pgcookie; /* Byte-string passed to pgin/pgout. */ + u_int8_t *fileid; /* Unique file ID. */ + int32_t lsn_offset; /* LSN offset in page. */ + u_int32_t clear_len; /* Cleared length on created pages. */ }; /* Mpool file statistics structure. */ @@ -724,13 +779,13 @@ extern "C" { #endif int memp_close __P((DB_MPOOL *)); int memp_fclose __P((DB_MPOOLFILE *)); -int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, int, void *)); +int memp_fget __P((DB_MPOOLFILE *, db_pgno_t *, u_int32_t, void *)); int memp_fopen __P((DB_MPOOL *, const char *, - int, int, int, size_t, int, DBT *, u_int8_t *, DB_MPOOLFILE **)); -int memp_fput __P((DB_MPOOLFILE *, void *, int)); -int memp_fset __P((DB_MPOOLFILE *, void *, int)); + u_int32_t, int, size_t, DB_MPOOL_FINFO *, DB_MPOOLFILE **)); +int memp_fput __P((DB_MPOOLFILE *, void *, u_int32_t)); +int memp_fset __P((DB_MPOOLFILE *, void *, u_int32_t)); int memp_fsync __P((DB_MPOOLFILE *)); -int memp_open __P((const char *, int, int, DB_ENV *, DB_MPOOL **)); +int memp_open __P((const char *, u_int32_t, int, DB_ENV *, DB_MPOOL **)); int memp_register __P((DB_MPOOL *, int, int (*)(db_pgno_t, void *, DBT *), int (*)(db_pgno_t, void *, DBT *))); @@ -765,16 +820,21 @@ struct __db_txn_active { }; struct __db_txn_stat { - DB_LSN st_last_ckp; /* lsn of the last checkpoint */ - DB_LSN st_pending_ckp; /* last checkpoint did not finish */ - time_t st_time_ckp; /* time of last checkpoint */ - u_int32_t st_last_txnid; /* last transaction id given out */ - u_int32_t st_maxtxns; /* maximum number of active txns */ - u_int32_t st_naborts; /* number of aborted transactions */ - u_int32_t st_nbegins; /* number of begun transactions */ - u_int32_t st_ncommits; /* number of committed transactions */ - u_int32_t st_nactive; /* number of active transactions */ - DB_TXN_ACTIVE *st_txnarray; /* array of active transactions */ + DB_LSN st_last_ckp; /* lsn of the last checkpoint */ + DB_LSN st_pending_ckp; /* last checkpoint did not finish */ + time_t st_time_ckp; /* time of last checkpoint */ + u_int32_t st_last_txnid; /* last transaction id given out */ + u_int32_t st_maxtxns; /* maximum number of active txns */ + u_int32_t st_naborts; /* number of aborted transactions */ + u_int32_t st_nbegins; /* number of begun transactions */ + u_int32_t st_ncommits; /* number of committed transactions */ + u_int32_t st_nactive; /* number of active transactions */ + DB_TXN_ACTIVE + *st_txnarray; /* array of active transactions */ + u_int32_t st_region_wait; /* Region lock granted after wait. */ + u_int32_t st_region_nowait; /* Region lock granted without wait. */ + u_int32_t st_refcnt; /* Region reference count. */ + u_int32_t st_regsize; /* Region size. */ }; #if defined(__cplusplus) @@ -782,11 +842,11 @@ extern "C" { #endif int txn_abort __P((DB_TXN *)); int txn_begin __P((DB_TXNMGR *, DB_TXN *, DB_TXN **)); -int txn_checkpoint __P((const DB_TXNMGR *, int, int)); +int txn_checkpoint __P((const DB_TXNMGR *, u_int32_t, u_int32_t)); int txn_commit __P((DB_TXN *)); int txn_close __P((DB_TXNMGR *)); u_int32_t txn_id __P((DB_TXN *)); -int txn_open __P((const char *, int, int, DB_ENV *, DB_TXNMGR **)); +int txn_open __P((const char *, u_int32_t, int, DB_ENV *, DB_TXNMGR **)); int txn_prepare __P((DB_TXN *)); int txn_stat __P((DB_TXNMGR *, DB_TXN_STAT **, void *(*)(size_t))); int txn_unlink __P((const char *, int, DB_ENV *)); @@ -810,10 +870,17 @@ int txn_unlink __P((const char *, int, DB_ENV *)); */ #define DBM_SUFFIX ".db" +#if defined(_XPG4_2) +typedef struct { + char *dptr; + size_t dsize; +} datum; +#else typedef struct { char *dptr; int dsize; } datum; +#endif /* * Translate DBM calls into DB calls so that DB doesn't step on the @@ -894,7 +961,7 @@ typedef enum { typedef struct entry { char *key; - void *data; + char *data; } ENTRY; /* @@ -909,7 +976,7 @@ typedef struct entry { #if defined(__cplusplus) extern "C" { #endif -int __db_hcreate __P((unsigned int)); +int __db_hcreate __P((size_t)); void __db_hdestroy __P((void)); ENTRY *__db_hsearch __P((ENTRY, ACTION)); #if defined(__cplusplus) |