Hi Margo, I missed this in my last email but... The backward compatibility with hsearch code in berkeley-db 1.85 (hash/search.h hash/hsearch.c) is not 64-bit clean. It assumes sizeof(DB *) == sizeof(int) in the hcreate return value. I'm not sure how important this is, and how to solve this cleanly but I thought on systems newer than the PDP-11 (sizeof(int) == 2) and on modern systems supporting 64-bit like SGIs where you have multiple programming models it may be slightly better to assume that sizeof(int) == sizeof(long) than to assume that pointers are int size. I admit this is ugly too but I feared using (void *) would break the very same backward compatibility this was designed to solve ... Anyway, here's my patch which fixes this for SGI systems at least, (i.e. compiles with no truncation warnings on all three programming models even though (sizeof(long) == 8) in cc -64) if you see better solutions feel free to change this. Thanks, Ariel. *** hsearch.c Tue Dec 24 17:59:31 1996 --- hsearch.c.orig Tue Dec 24 17:19:52 1996 *************** *** 49,55 **** static DB *dbp = NULL; static ENTRY retval; ! extern long hcreate(nel) u_int nel; { --- 49,55 ---- static DB *dbp = NULL; static ENTRY retval; ! extern int hcreate(nel) u_int nel; { *************** *** 62,68 **** info.hash = NULL; info.lorder = 0; dbp = (DB *)__hash_open(NULL, O_CREAT | O_RDWR, 0600, &info, 0); ! return ((long)dbp); } extern ENTRY * --- 62,68 ---- info.hash = NULL; info.lorder = 0; dbp = (DB *)__hash_open(NULL, O_CREAT | O_RDWR, 0600, &info, 0); ! return ((int)dbp); } extern ENTRY * *** search.h Tue Dec 24 17:59:05 1996 --- search.h.orig Tue Dec 24 17:25:10 1996 *************** *** 46,51 **** FIND, ENTER } ACTION; ! long hcreate __P((unsigned int)); void hdestroy __P((void)); ENTRY *hsearch __P((ENTRY, ACTION)); --- 46,51 ---- FIND, ENTER } ACTION; ! int hcreate __P((unsigned int)); void hdestroy __P((void)); ENTRY *hsearch __P((ENTRY, ACTION));