#include "../common.h"
extern unsigned char T[256];
char *idhash(char *p, short *hashp) {
unsigned char c;
unsigned long shreg;
unsigned char lo, hi;
shreg = *p;
while (isalunum(c = *++p)) {
#ifndef BRAINDEAD_COMPILER
/* rotate 5 bit - at least gcc 2.5.8 recognizes it */
shreg = shreg << 5 | shreg >> 27;
#else
shreg <<= 1;
#endif
shreg ^= c;
}
lo = shreg;
shreg >>= 8;
hi = shreg;
hi = (T+1)[hi];
hi ^= lo;
hi = T[hi];
lo = T[lo];
lo ^= shreg;
lo = T[lo];
shreg >>= 8;
lo ^= shreg;
lo = T[lo];
shreg >>= 8;
lo ^= shreg;
lo = T[lo];
*hashp = lo | hi << 8;
return p;
}