5 typedef struct _CacheEntry {
15 int hash_code(unsigned char *domain) {
17 for ( ; *domain; domain++ ) {
20 return i % cache.size;
23 int lookup_cache(unsigned char *domain) {
25 int i = hash_code( domain );
26 if ( cache.table[i].domain &&
27 strcmp( (char*) domain, (char*) cache.table[i].domain ) == 0 ) {
28 return cache.table[i].ix;
34 void add_cache(unsigned char *domain,unsigned int ix) {
35 if ( cache.table == 0 ) {
37 cache.table = (CacheEntry*) calloc( cache.size, sizeof( CacheEntry ) );
39 int i = hash_code( domain );
40 if ( cache.table[i].domain ) {
41 free( cache.table[i].domain );
43 cache.table[i].domain = (unsigned char*) strdup( (char*) domain );
44 cache.table[i].ix = ix;