|
|
1.1 ! root 1: #ifndef lint ! 2: static char nhash_sccsid[] = "@(#)nhash.c 4.2 (Berkeley) 82/11/06"; ! 3: #endif not lint ! 4: ! 5: struct dict { ! 6: char *entry; ! 7: char val; ! 8: }; ! 9: extern struct dict ary_d[], cy_d[], ery_d[], fy_d[],gy_d[]; ! 10: extern struct dict ity_d[],ly_d[],ory_d[],ry_d[],ty_d[]; ! 11: extern struct dict dict[]; ! 12: extern struct dict abbrev_d[]; ! 13: char aahash(); ! 14: char lookup(); ! 15: char abbrev(); ! 16: char ary(); ! 17: char cy(); ! 18: char ery(); ! 19: char fy(); ! 20: char gy(); ! 21: char ity(); ! 22: char ly(); ! 23: char ory(); ! 24: char ry(); ! 25: char ty(); ! 26: ! 27: struct hnode { ! 28: char *aakey; ! 29: struct dict *aadata; ! 30: }; ! 31: char ! 32: aahash(s,ex,aatsize,aapr1,aapr2,tbl,data) ! 33: char *s; ! 34: struct hnode tbl[]; ! 35: struct dict *data; ! 36: { ! 37: char *cp; ! 38: int ii, key, c, p1, p2; ! 39: cp = s; ! 40: key =0; ! 41: while (c = *cp++) ! 42: key = key + (key<<5) + c; ! 43: key &= 077777; ! 44: p1 = key%aapr1; ! 45: p2 = key%aapr2; ! 46: if (p2==0) p2=17; ! 47: for(ii=0; ii<aatsize; ii++) ! 48: { ! 49: if (tbl[p1].aakey==0) ! 50: { /* new item */ ! 51: if (ex ==0) ! 52: { ! 53: tbl[p1].aakey = s; ! 54: tbl[p1].aadata= data; ! 55: return(tbl[p1].aadata->val); ! 56: } ! 57: else ! 58: return(0); ! 59: } ! 60: else ! 61: if(strcmp(tbl[p1].aakey, s)== 0) ! 62: { ! 63: return(tbl[p1].aadata->val); ! 64: } ! 65: p1 = (p1+p2)%aatsize; ! 66: } ! 67: fprintf(stderr, "hash table full:size %d\n",aatsize); ! 68: exit(); ! 69: } ! 70: getd(){ ! 71: struct dict *ptr; ! 72: ptr = dict; ! 73: while(ptr->entry != 0){ ! 74: lookup(ptr->entry,0,ptr); ! 75: ptr++; ! 76: } ! 77: } ! 78: getab(){ ! 79: struct dict *ptr; ! 80: ptr = abbrev_d; ! 81: while(ptr->entry != 0){ ! 82: abbrev(ptr->entry,0,ptr); ! 83: ptr++; ! 84: } ! 85: } ! 86: ! 87: struct hnode aa1root[499]; ! 88: #define aa1tsize 499 ! 89: #define aa1p1 487 ! 90: #define aa1p2 491 ! 91: char ! 92: lookup(a0,a1,ptr) ! 93: char *a0; ! 94: struct dict *ptr; ! 95: { ! 96: return(aahash(a0,a1,aa1tsize,aa1p1,aa1p2,aa1root,ptr)); ! 97: } ! 98: struct hnode aa6root[113]; ! 99: #define aa6tsize 113 ! 100: #define aa6p1 107 ! 101: #define aa6p2 109 ! 102: char ! 103: ary(a0,a1,ptr) ! 104: char *a0; ! 105: struct dict *ptr; ! 106: { ! 107: return(aahash(a0,a1,aa6tsize,aa6p1,aa6p2,aa6root,ptr)); ! 108: } ! 109: struct hnode aa9root[13]; ! 110: #define aa9tsize 13 ! 111: #define aa9p1 7 ! 112: #define aa9p2 1 ! 113: char ! 114: cy(a0,a1,ptr) ! 115: char *a0; ! 116: struct dict *ptr; ! 117: { ! 118: return(aahash(a0,a1,aa9tsize,aa9p1,aa9p2,aa9root,ptr)); ! 119: } ! 120: struct hnode aa12root[59]; ! 121: #define aa12tsize 59 ! 122: #define aa12p1 47 ! 123: #define aa12p2 43 ! 124: char ! 125: ery(a0,a1,ptr) ! 126: char *a0; ! 127: struct dict *ptr; ! 128: { ! 129: return(aahash(a0,a1,aa12tsize,aa12p1,aa12p2,aa12root,ptr)); ! 130: } ! 131: struct hnode aa16root[23]; ! 132: #define aa16tsize 23 ! 133: #define aa16p1 17 ! 134: #define aa16p2 19 ! 135: char ! 136: fy(a0,a1,ptr) ! 137: char *a0; ! 138: struct dict *ptr; ! 139: { ! 140: return(aahash(a0,a1,aa16tsize,aa16p1,aa16p2,aa16root,ptr)); ! 141: } ! 142: struct hnode aa17root[29]; ! 143: #define aa17tsize 29 ! 144: #define aa17p1 19 ! 145: #define aa17p2 23 ! 146: char ! 147: gy(a0,a1,ptr) ! 148: char *a0; ! 149: struct dict *ptr; ! 150: { ! 151: return(aahash(a0,a1,aa17tsize,aa17p1,aa17p2,aa17root,ptr)); ! 152: } ! 153: struct hnode aa27root[11]; ! 154: #define aa27tsize 11 ! 155: #define aa27p1 5 ! 156: #define aa27p2 7 ! 157: char ! 158: ity(a0,a1,ptr) ! 159: char *a0; ! 160: struct dict *ptr; ! 161: { ! 162: return(aahash(a0,a1,aa27tsize,aa27p1,aa27p2,aa27root,ptr)); ! 163: } ! 164: struct hnode aa32root[281]; ! 165: #define aa32tsize 281 ! 166: #define aa32p1 271 ! 167: #define aa32p2 277 ! 168: char ! 169: ly(a0,a1,ptr) ! 170: char *a0; ! 171: struct dict *ptr; ! 172: { ! 173: return(aahash(a0,a1,aa32tsize,aa32p1,aa32p2,aa32root,ptr)); ! 174: } ! 175: struct hnode aa36root[59]; ! 176: #define aa36tsize 59 ! 177: #define aa36p1 47 ! 178: #define aa36p2 43 ! 179: char ! 180: ory(a0,a1,ptr) ! 181: char *a0; ! 182: struct dict *ptr; ! 183: { ! 184: return(aahash(a0,a1,aa36tsize,aa36p1,aa36p2,aa36root,ptr)); ! 185: } ! 186: struct hnode aa38root[59]; ! 187: #define aa38tsize 59 ! 188: #define aa38p1 47 ! 189: #define aa38p2 53 ! 190: char ! 191: ry(a0,a1,ptr) ! 192: char *a0; ! 193: struct dict *ptr; ! 194: { ! 195: return(aahash(a0,a1,aa38tsize,aa38p1,aa38p2,aa38root,ptr)); ! 196: } ! 197: struct hnode aa41root[127]; ! 198: #define aa41tsize 127 ! 199: #define aa41p1 109 ! 200: #define aa41p2 113 ! 201: char ! 202: ty(a0,a1,ptr) ! 203: char *a0; ! 204: struct dict *ptr; ! 205: { ! 206: return(aahash(a0,a1,aa41tsize,aa41p1,aa41p2,aa41root,ptr)); ! 207: } ! 208: struct fandd { ! 209: char (*fun)(); ! 210: struct dict *yd; ! 211: } arr[] = { ! 212: ary, ary_d, ! 213: cy, cy_d, ! 214: ery, ery_d, ! 215: fy, fy_d, ! 216: gy, gy_d, ! 217: ity, ity_d, ! 218: ly, ly_d, ! 219: ory, ory_d, ! 220: ry, ry_d, ! 221: ty, ty_d, ! 222: 0, 0 ! 223: }; ! 224: ! 225: ygetd(){ ! 226: struct fandd *ptr; ! 227: struct dict *pp; ! 228: ptr=arr; ! 229: while(ptr->fun != 0){ ! 230: pp = ptr->yd; ! 231: while(pp->entry != 0){ ! 232: (*ptr->fun)(pp->entry,0,pp); ! 233: pp++; ! 234: } ! 235: ptr++; ! 236: } ! 237: } ! 238: struct hnode aa42root[71]; ! 239: #define aa42tsize 71 ! 240: #define aa42p1 61 ! 241: #define aa42p2 67 ! 242: char ! 243: abbrev(a0,a1,ptr) ! 244: char *a0; ! 245: struct dict *ptr; ! 246: { ! 247: return(aahash(a0,a1,aa42tsize,aa42p1,aa42p2,aa42root,ptr)); ! 248: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.