ranhashinit, ranhash, ranlookup - access routine for the
symbol table definition file in archives
struct ranlib *pran,
int size ); ranhash(
char *name ); struct ranlib *ranlookup(
char *name );
Points to an array of ranlib structures. Points to the
corresponding ranlib string table (which are used only by
ranlookup). Specifies the size of the hash table and
should be a power of 2. If the size is not a power of 2, a
1 is returned; otherwise, a 0 is returned.
The ranhashinit() routine initializes static information
for future use by ranhash() and ranlookup().
The ranhash() routine, given a name, returns a hash number.
It uses a multiplicative hashing algorithm and the
size argument to ranhashinit().
The ranlookup() routine looks up name in the ranlib table
specified by ranhashinit(). It uses the ranhash() routine
as a starting point. Then, it does a rehash from there.
This routine returns a pointer to a valid ranlib entry on
a match. If no matches are found (the "emptiness" can be
inferred if the ran_off field is zero), the empty ranlib
structure hash table should be sparse. This routine does
not expect to run out of places to look in the table. For
example, if you collide on all entries in the table, an
error is printed to stderr and a zero is returned.
Mark I. Himelstein
[ Back ]