version 1.3, 1999/09/06 13:10:48 |
version 1.4, 1999/09/14 08:35:16 |
|
|
|
|
int |
int |
hash(name) |
hash(name) |
register char *name; |
char *name; |
{ |
{ |
register unsigned long h = 0; |
unsigned long h = 0; |
while (*name) |
while (*name) |
h = (h << 5) + h + *name++; |
h = (h << 5) + h + *name++; |
return (h % HASHSIZE); |
return (h % HASHSIZE); |
|
|
*/ |
*/ |
ndptr |
ndptr |
lookup(name) |
lookup(name) |
char *name; |
char *name; |
{ |
{ |
register ndptr p; |
ndptr p; |
|
|
for (p = hashtab[hash(name)]; p != nil; p = p->nxtptr) |
for (p = hashtab[hash(name)]; p != nil; p = p->nxtptr) |
if (STREQ(name, p->name)) |
if (STREQ(name, p->name)) |
|
|
*/ |
*/ |
ndptr |
ndptr |
addent(name) |
addent(name) |
char *name; |
char *name; |
{ |
{ |
register int h; |
int h; |
ndptr p; |
ndptr p; |
|
|
h = hash(name); |
h = hash(name); |
|
|
|
|
static void |
static void |
freent(p) |
freent(p) |
ndptr p; |
ndptr p; |
{ |
{ |
if (!(p->type & STATIC)) { |
if (!(p->type & STATIC)) { |
free((char *) p->name); |
free((char *) p->name); |
|
|
*/ |
*/ |
void |
void |
remhash(name, all) |
remhash(name, all) |
char *name; |
char *name; |
int all; |
int all; |
{ |
{ |
register int h; |
int h; |
register ndptr xp, tp, mp; |
ndptr xp, tp, mp; |
|
|
h = hash(name); |
h = hash(name); |
mp = hashtab[h]; |
mp = hashtab[h]; |