19075Srrh #ifndef lint 2*9090Srrh static char nhash_sccsid[] = "@(#)nhash.c 4.2 (Berkeley) 82/11/06"; 39075Srrh #endif not lint 49075Srrh 59075Srrh struct dict { 69075Srrh char *entry; 79075Srrh char val; 89075Srrh }; 99075Srrh extern struct dict ary_d[], cy_d[], ery_d[], fy_d[],gy_d[]; 109075Srrh extern struct dict ity_d[],ly_d[],ory_d[],ry_d[],ty_d[]; 119075Srrh extern struct dict dict[]; 12*9090Srrh extern struct dict abbrev_d[]; 139075Srrh char aahash(); 149075Srrh char lookup(); 15*9090Srrh char abbrev(); 169075Srrh char ary(); 179075Srrh char cy(); 189075Srrh char ery(); 199075Srrh char fy(); 209075Srrh char gy(); 219075Srrh char ity(); 229075Srrh char ly(); 239075Srrh char ory(); 249075Srrh char ry(); 259075Srrh char ty(); 269075Srrh 279075Srrh struct hnode { 289075Srrh char *aakey; 299075Srrh struct dict *aadata; 309075Srrh }; 319075Srrh char 329075Srrh aahash(s,ex,aatsize,aapr1,aapr2,tbl,data) 339075Srrh char *s; 349075Srrh struct hnode tbl[]; 359075Srrh struct dict *data; 369075Srrh { 379075Srrh char *cp; 389075Srrh int ii, key, c, p1, p2; 399075Srrh cp = s; 409075Srrh key =0; 419075Srrh while (c = *cp++) 429075Srrh key = key + (key<<5) + c; 439075Srrh key &= 077777; 449075Srrh p1 = key%aapr1; 459075Srrh p2 = key%aapr2; 469075Srrh if (p2==0) p2=17; 479075Srrh for(ii=0; ii<aatsize; ii++) 489075Srrh { 499075Srrh if (tbl[p1].aakey==0) 509075Srrh { /* new item */ 519075Srrh if (ex ==0) 529075Srrh { 539075Srrh tbl[p1].aakey = s; 549075Srrh tbl[p1].aadata= data; 559075Srrh return(tbl[p1].aadata->val); 569075Srrh } 579075Srrh else 589075Srrh return(0); 599075Srrh } 609075Srrh else 619075Srrh if(strcmp(tbl[p1].aakey, s)== 0) 629075Srrh { 639075Srrh return(tbl[p1].aadata->val); 649075Srrh } 659075Srrh p1 = (p1+p2)%aatsize; 669075Srrh } 67*9090Srrh fprintf(stderr, "hash table full:size %d\n",aatsize); 689075Srrh exit(); 699075Srrh } 709075Srrh getd(){ 719075Srrh struct dict *ptr; 729075Srrh ptr = dict; 739075Srrh while(ptr->entry != 0){ 749075Srrh lookup(ptr->entry,0,ptr); 759075Srrh ptr++; 769075Srrh } 779075Srrh } 78*9090Srrh getab(){ 79*9090Srrh struct dict *ptr; 80*9090Srrh ptr = abbrev_d; 81*9090Srrh while(ptr->entry != 0){ 82*9090Srrh abbrev(ptr->entry,0,ptr); 83*9090Srrh ptr++; 84*9090Srrh } 85*9090Srrh } 869075Srrh 87*9090Srrh struct hnode aa1root[499]; 88*9090Srrh #define aa1tsize 499 89*9090Srrh #define aa1p1 487 90*9090Srrh #define aa1p2 491 919075Srrh char 929075Srrh lookup(a0,a1,ptr) 939075Srrh char *a0; 949075Srrh struct dict *ptr; 959075Srrh { 969075Srrh return(aahash(a0,a1,aa1tsize,aa1p1,aa1p2,aa1root,ptr)); 979075Srrh } 989075Srrh struct hnode aa6root[113]; 999075Srrh #define aa6tsize 113 1009075Srrh #define aa6p1 107 1019075Srrh #define aa6p2 109 1029075Srrh char 1039075Srrh ary(a0,a1,ptr) 1049075Srrh char *a0; 1059075Srrh struct dict *ptr; 1069075Srrh { 1079075Srrh return(aahash(a0,a1,aa6tsize,aa6p1,aa6p2,aa6root,ptr)); 1089075Srrh } 1099075Srrh struct hnode aa9root[13]; 1109075Srrh #define aa9tsize 13 1119075Srrh #define aa9p1 7 1129075Srrh #define aa9p2 1 1139075Srrh char 1149075Srrh cy(a0,a1,ptr) 1159075Srrh char *a0; 1169075Srrh struct dict *ptr; 1179075Srrh { 1189075Srrh return(aahash(a0,a1,aa9tsize,aa9p1,aa9p2,aa9root,ptr)); 1199075Srrh } 1209075Srrh struct hnode aa12root[59]; 1219075Srrh #define aa12tsize 59 1229075Srrh #define aa12p1 47 1239075Srrh #define aa12p2 43 1249075Srrh char 1259075Srrh ery(a0,a1,ptr) 1269075Srrh char *a0; 1279075Srrh struct dict *ptr; 1289075Srrh { 1299075Srrh return(aahash(a0,a1,aa12tsize,aa12p1,aa12p2,aa12root,ptr)); 1309075Srrh } 1319075Srrh struct hnode aa16root[23]; 1329075Srrh #define aa16tsize 23 1339075Srrh #define aa16p1 17 1349075Srrh #define aa16p2 19 1359075Srrh char 1369075Srrh fy(a0,a1,ptr) 1379075Srrh char *a0; 1389075Srrh struct dict *ptr; 1399075Srrh { 1409075Srrh return(aahash(a0,a1,aa16tsize,aa16p1,aa16p2,aa16root,ptr)); 1419075Srrh } 1429075Srrh struct hnode aa17root[29]; 1439075Srrh #define aa17tsize 29 1449075Srrh #define aa17p1 19 1459075Srrh #define aa17p2 23 1469075Srrh char 1479075Srrh gy(a0,a1,ptr) 1489075Srrh char *a0; 1499075Srrh struct dict *ptr; 1509075Srrh { 1519075Srrh return(aahash(a0,a1,aa17tsize,aa17p1,aa17p2,aa17root,ptr)); 1529075Srrh } 1539075Srrh struct hnode aa27root[11]; 1549075Srrh #define aa27tsize 11 1559075Srrh #define aa27p1 5 1569075Srrh #define aa27p2 7 1579075Srrh char 1589075Srrh ity(a0,a1,ptr) 1599075Srrh char *a0; 1609075Srrh struct dict *ptr; 1619075Srrh { 1629075Srrh return(aahash(a0,a1,aa27tsize,aa27p1,aa27p2,aa27root,ptr)); 1639075Srrh } 1649075Srrh struct hnode aa32root[281]; 1659075Srrh #define aa32tsize 281 1669075Srrh #define aa32p1 271 1679075Srrh #define aa32p2 277 1689075Srrh char 1699075Srrh ly(a0,a1,ptr) 1709075Srrh char *a0; 1719075Srrh struct dict *ptr; 1729075Srrh { 1739075Srrh return(aahash(a0,a1,aa32tsize,aa32p1,aa32p2,aa32root,ptr)); 1749075Srrh } 1759075Srrh struct hnode aa36root[59]; 1769075Srrh #define aa36tsize 59 1779075Srrh #define aa36p1 47 1789075Srrh #define aa36p2 43 1799075Srrh char 1809075Srrh ory(a0,a1,ptr) 1819075Srrh char *a0; 1829075Srrh struct dict *ptr; 1839075Srrh { 1849075Srrh return(aahash(a0,a1,aa36tsize,aa36p1,aa36p2,aa36root,ptr)); 1859075Srrh } 1869075Srrh struct hnode aa38root[59]; 1879075Srrh #define aa38tsize 59 1889075Srrh #define aa38p1 47 1899075Srrh #define aa38p2 53 1909075Srrh char 1919075Srrh ry(a0,a1,ptr) 1929075Srrh char *a0; 1939075Srrh struct dict *ptr; 1949075Srrh { 1959075Srrh return(aahash(a0,a1,aa38tsize,aa38p1,aa38p2,aa38root,ptr)); 1969075Srrh } 1979075Srrh struct hnode aa41root[127]; 1989075Srrh #define aa41tsize 127 1999075Srrh #define aa41p1 109 2009075Srrh #define aa41p2 113 2019075Srrh char 2029075Srrh ty(a0,a1,ptr) 2039075Srrh char *a0; 2049075Srrh struct dict *ptr; 2059075Srrh { 2069075Srrh return(aahash(a0,a1,aa41tsize,aa41p1,aa41p2,aa41root,ptr)); 2079075Srrh } 2089075Srrh struct fandd { 2099075Srrh char (*fun)(); 2109075Srrh struct dict *yd; 2119075Srrh } arr[] = { 2129075Srrh ary, ary_d, 2139075Srrh cy, cy_d, 2149075Srrh ery, ery_d, 2159075Srrh fy, fy_d, 2169075Srrh gy, gy_d, 2179075Srrh ity, ity_d, 2189075Srrh ly, ly_d, 2199075Srrh ory, ory_d, 2209075Srrh ry, ry_d, 2219075Srrh ty, ty_d, 2229075Srrh 0, 0 2239075Srrh }; 2249075Srrh 2259075Srrh ygetd(){ 2269075Srrh struct fandd *ptr; 2279075Srrh struct dict *pp; 2289075Srrh ptr=arr; 2299075Srrh while(ptr->fun != 0){ 2309075Srrh pp = ptr->yd; 2319075Srrh while(pp->entry != 0){ 2329075Srrh (*ptr->fun)(pp->entry,0,pp); 2339075Srrh pp++; 2349075Srrh } 2359075Srrh ptr++; 2369075Srrh } 2379075Srrh } 238*9090Srrh struct hnode aa42root[71]; 239*9090Srrh #define aa42tsize 71 240*9090Srrh #define aa42p1 61 241*9090Srrh #define aa42p2 67 242*9090Srrh char 243*9090Srrh abbrev(a0,a1,ptr) 244*9090Srrh char *a0; 245*9090Srrh struct dict *ptr; 246*9090Srrh { 247*9090Srrh return(aahash(a0,a1,aa42tsize,aa42p1,aa42p2,aa42root,ptr)); 248*9090Srrh } 249