char *b = (*data)->key; int keyval;
unsigned char *b = (unsigned char*)(*data)->key; unsigned int keyval;
hashitem(	register struct hash *hp,	HASHDATA **data,	int enter ){	ITEM **base;	register ITEM *i;	char *b = (*data)->key;	int keyval;	if( enter && !hp->items.more )	    hashrehash( hp );	if( !enter && !hp->items.nel )	    return 0;	keyval = *b;	while( *b )		keyval = keyval * 2147059363 + *b++;	keyval &= 0x7FFFFFFF;	base = hp->tab.base + ( keyval % hp->tab.nel );	for( i = *base; i; i = i->hdr.next )	    if( keyval == i->hdr.keyval && 		!strcmp( i->data.key, (*data)->key ) )	{		*data = &i->data;		return !0;	}	if( enter ) 	{		i = (ITEM *)hp->items.next;		hp->items.next += hp->items.size;		hp->items.more--;		memcpy( (char *)&i->data, (char *)*data, hp->items.datalen );		i->hdr.keyval = keyval;		i->hdr.next = *base;		*base = i;		*data = &i->data;	}	return 0;}