1 #ifndef lint 2 static char ehash_sccsid[] = "@(#)ehash.c 4.3 (Berkeley) 91/02/02"; 3 #endif not lint 4 5 # 6 struct hnode { 7 char *aakey; 8 struct dict *aadata; 9 }; 10 struct dict { 11 char *entry; 12 char val; 13 }; 14 char able(); 15 struct dict able_d[]; 16 char ace(); 17 struct dict ace_d[]; 18 char age(); 19 struct dict age_d[]; 20 char ance(); 21 struct dict ance_d[]; 22 char ant(); 23 struct dict ant_d[]; 24 char cal(); 25 struct dict cal_d[]; 26 char cle(); 27 struct dict cle_d[]; 28 char ee(); 29 struct dict ee_d[]; 30 char ence(); 31 struct dict ence_d[]; 32 char ess(); 33 struct dict ess_d[]; 34 char est(); 35 struct dict est_d[]; 36 char ful(); 37 struct dict ful_d[]; 38 char ible(); 39 struct dict ible_d[]; 40 char ic(); 41 struct dict ic_d[]; 42 char ice(); 43 struct dict ice_d[]; 44 char ion(); 45 struct dict ion_d[]; 46 char ional(); 47 struct dict ional_d[]; 48 char is(); 49 struct dict is_d[]; 50 char ish(); 51 struct dict ish_d[]; 52 char ist(); 53 struct dict ist_d[]; 54 char ite(); 55 struct dict ite_d[]; 56 char ive(); 57 struct dict ive_d[]; 58 char ize(); 59 struct dict ize_d[]; 60 char lar(); 61 struct dict lar_d[]; 62 char less(); 63 struct dict less_d[]; 64 char man(); 65 struct dict man_d[]; 66 char ment(); 67 struct dict ment_d[]; 68 char ness(); 69 struct dict ness_d[]; 70 char ous(); 71 struct dict ous_d[]; 72 char ship(); 73 struct dict ship_d[]; 74 char ss(); 75 struct dict ss_d[]; 76 char ure(); 77 struct dict ure_d[]; 78 char us(); 79 struct dict us_d[]; 80 char ing(); 81 struct dict ing_d[]; 82 char ed(); 83 struct dict ed_d[]; 84 struct fandd { 85 char (*fun)(); 86 struct dict *yd; 87 } arr[] = { 88 able, able_d, 89 ace, ace_d, 90 age, age_d, 91 ance, ance_d, 92 ant, ant_d, 93 cal, cal_d, 94 cle, cle_d, 95 ee, ee_d, 96 ence, ence_d, 97 ess, ess_d, 98 est, est_d, 99 ful, ful_d, 100 ible, ible_d, 101 ic, ic_d, 102 ice, ice_d, 103 ion, ion_d, 104 ional, ional_d, 105 is, is_d, 106 ish, ish_d, 107 ist, ist_d, 108 ite, ite_d, 109 ive, ive_d, 110 ize, ize_d, 111 lar, lar_d, 112 less, less_d, 113 man, man_d, 114 ment, ment_d, 115 ness, ness_d, 116 ous, ous_d, 117 ship, ship_d, 118 ss, ss_d, 119 ure, ure_d, 120 us, us_d, 121 ing, ing_d, 122 ed, ed_d, 123 0, 0 124 }; 125 egetd(){ 126 struct dict *pp; 127 struct fandd *ptr; 128 ptr = arr; 129 while(ptr->fun != 0){ 130 pp = ptr->yd; 131 while(pp->entry != 0){ 132 (*ptr->fun)(pp->entry,0,pp); 133 pp++; 134 } 135 ptr++; 136 } 137 } 138 char 139 aahash(s,ex,aatsize,aapr1,aapr2,tbl,data) 140 char *s; 141 struct hnode tbl[]; 142 struct dict *data; 143 { 144 char *cp; 145 int i, key, c, p1, p2; 146 cp = s; 147 key =0; 148 while (c = *cp++) 149 key = key + (key<<5) + c; 150 key &= 077777; 151 p1 = key%aapr1; 152 p2 = key%aapr2; 153 if (p2==0) p2=17; 154 for(i=0; i<aatsize; i++) 155 { 156 if (tbl[p1].aakey==0) 157 { /* new item */ 158 if (ex ==0) 159 { 160 tbl[p1].aakey = s; 161 tbl[p1].aadata= data; 162 return(tbl[p1].aadata->val); 163 } 164 else 165 return(0); 166 } 167 else 168 if(strcmp(tbl[p1].aakey, s)== 0) 169 { 170 return(tbl[p1].aadata->val); 171 } 172 p1 = (p1+p2)%aatsize; 173 } 174 fprintf(stderr, "hash table full\n"); 175 exit(1); 176 } 177 struct hnode aa1root[43]; 178 #define aa1tsize 43 179 #define aa1p1 37 180 #define aa1p2 41 181 char 182 able(a0,a1,ptr) 183 char *a0; 184 struct dict *ptr; 185 { 186 return(aahash(a0,a1,aa1tsize,aa1p1,aa1p2,aa1root,ptr)); 187 } 188 struct hnode aa2root[11]; 189 #define aa2tsize 11 190 #define aa2p1 5 191 #define aa2p2 7 192 char 193 ace(a0,a1,ptr) 194 char *a0; 195 struct dict *ptr; 196 { 197 return(aahash(a0,a1,aa2tsize,aa2p1,aa2p2,aa2root,ptr)); 198 } 199 struct hnode aa3root[61]; 200 #define aa3tsize 61 201 #define aa3p1 53 202 #define aa3p2 59 203 char 204 age(a0,a1,ptr) 205 char *a0; 206 struct dict *ptr; 207 { 208 return(aahash(a0,a1,aa3tsize,aa3p1,aa3p2,aa3root,ptr)); 209 } 210 struct hnode aa4root[37]; 211 #define aa4tsize 37 212 #define aa4p1 29 213 #define aa4p2 31 214 char 215 ance(a0,a1,ptr) 216 char *a0; 217 struct dict *ptr; 218 { 219 return(aahash(a0,a1,aa4tsize,aa4p1,aa4p2,aa4root,ptr)); 220 } 221 struct hnode aa5root[31]; 222 #define aa5tsize 31 223 #define aa5p1 23 224 #define aa5p2 29 225 char 226 ant(a0,a1,ptr) 227 char *a0; 228 struct dict *ptr; 229 { 230 return(aahash(a0,a1,aa5tsize,aa5p1,aa5p2,aa5root,ptr)); 231 } 232 struct hnode aa7root[19]; 233 #define aa7tsize 19 234 #define aa7p1 13 235 #define aa7p2 17 236 char 237 cal(a0,a1,ptr) 238 char *a0; 239 struct dict *ptr; 240 { 241 return(aahash(a0,a1,aa7tsize,aa7p1,aa7p2,aa7root,ptr)); 242 } 243 struct hnode aa8root[13]; 244 #define aa8tsize 13 245 #define aa8p1 7 246 #define aa8p2 11 247 char 248 cle(a0,a1,ptr) 249 char *a0; 250 struct dict *ptr; 251 { 252 return(aahash(a0,a1,aa8tsize,aa8p1,aa8p2,aa8root,ptr)); 253 } 254 struct hnode aa10root[31]; 255 #define aa10tsize 31 256 #define aa10p1 23 257 #define aa10p2 29 258 char 259 ee(a0,a1,ptr) 260 char *a0; 261 struct dict *ptr; 262 { 263 return(aahash(a0,a1,aa10tsize,aa10p1,aa10p2,aa10root,ptr)); 264 } 265 struct hnode aa11root[31]; 266 #define aa11tsize 31 267 #define aa11p1 23 268 #define aa11p2 29 269 char 270 ence(a0,a1,ptr) 271 char *a0; 272 struct dict *ptr; 273 { 274 return(aahash(a0,a1,aa11tsize,aa11p1,aa11p2,aa11root,ptr)); 275 } 276 struct hnode aa13root[47]; 277 #define aa13tsize 47 278 #define aa13p1 41 279 #define aa13p2 43 280 char 281 ess(a0,a1,ptr) 282 char *a0; 283 struct dict *ptr; 284 { 285 return(aahash(a0,a1,aa13tsize,aa13p1,aa13p2,aa13root,ptr)); 286 } 287 struct hnode aa14root[67]; 288 #define aa14tsize 67 289 #define aa14p1 59 290 #define aa14p2 61 291 char 292 est(a0,a1,ptr) 293 char *a0; 294 struct dict *ptr; 295 { 296 return(aahash(a0,a1,aa14tsize,aa14p1,aa14p2,aa14root,ptr)); 297 } 298 struct hnode aa15root[43]; 299 #define aa15tsize 43 300 #define aa15p1 37 301 #define aa15p2 41 302 char 303 ful(a0,a1,ptr) 304 char *a0; 305 struct dict *ptr; 306 { 307 return(aahash(a0,a1,aa15tsize,aa15p1,aa15p2,aa15root,ptr)); 308 } 309 struct hnode aa18root[19]; 310 #define aa18tsize 19 311 #define aa18p1 13 312 #define aa18p2 17 313 char 314 ible(a0,a1,ptr) 315 char *a0; 316 struct dict *ptr; 317 { 318 return(aahash(a0,a1,aa18tsize,aa18p1,aa18p2,aa18root,ptr)); 319 } 320 struct hnode aa19root[151]; 321 #define aa19tsize 151 322 #define aa19p1 139 323 #define aa19p2 149 324 char 325 ic(a0,a1,ptr) 326 char *a0; 327 struct dict *ptr; 328 { 329 return(aahash(a0,a1,aa19tsize,aa19p1,aa19p2,aa19root,ptr)); 330 } 331 struct hnode aa20root[11]; 332 #define aa20tsize 11 333 #define aa20p1 5 334 #define aa20p2 7 335 char 336 ice(a0,a1,ptr) 337 char *a0; 338 struct dict *ptr; 339 { 340 return(aahash(a0,a1,aa20tsize,aa20p1,aa20p2,aa20root,ptr)); 341 } 342 struct hnode aa21root[89]; 343 #define aa21tsize 89 344 #define aa21p1 79 345 #define aa21p2 83 346 char 347 ion(a0,a1,ptr) 348 char *a0; 349 struct dict *ptr; 350 { 351 return(aahash(a0,a1,aa21tsize,aa21p1,aa21p2,aa21root,ptr)); 352 } 353 struct hnode aa22root[13]; 354 #define aa22tsize 13 355 #define aa22p1 7 356 #define aa22p2 11 357 char 358 ional(a0,a1,ptr) 359 char *a0; 360 struct dict *ptr; 361 { 362 return(aahash(a0,a1,aa22tsize,aa22p1,aa22p2,aa22root,ptr)); 363 } 364 struct hnode aa23root[11]; 365 #define aa23tsize 11 366 #define aa23p1 5 367 #define aa23p2 7 368 char 369 is(a0,a1,ptr) 370 char *a0; 371 struct dict *ptr; 372 { 373 return(aahash(a0,a1,aa23tsize,aa23p1,aa23p2,aa23root,ptr)); 374 } 375 struct hnode aa24root[71]; 376 #define aa24tsize 71 377 #define aa24p1 61 378 #define aa24p2 67 379 char 380 ish(a0,a1,ptr) 381 char *a0; 382 struct dict *ptr; 383 { 384 return(aahash(a0,a1,aa24tsize,aa24p1,aa24p2,aa24root,ptr)); 385 } 386 struct hnode aa25root[151]; 387 #define aa25tsize 151 388 #define aa25p1 139 389 #define aa25p2 149 390 char 391 ist(a0,a1,ptr) 392 char *a0; 393 struct dict *ptr; 394 { 395 return(aahash(a0,a1,aa25tsize,aa25p1,aa25p2,aa25root,ptr)); 396 } 397 struct hnode aa26root[79]; 398 #define aa26tsize 79 399 #define aa26p1 71 400 #define aa26p2 73 401 char 402 ite(a0,a1,ptr) 403 char *a0; 404 struct dict *ptr; 405 { 406 return(aahash(a0,a1,aa26tsize,aa26p1,aa26p2,aa26root,ptr)); 407 } 408 struct hnode aa28root[151]; 409 #define aa28tsize 151 410 #define aa28p1 139 411 #define aa28p2 149 412 char 413 ive(a0,a1,ptr) 414 char *a0; 415 struct dict *ptr; 416 { 417 return(aahash(a0,a1,aa28tsize,aa28p1,aa28p2,aa28root,ptr)); 418 } 419 struct hnode aa29root[11]; 420 #define aa29tsize 11 421 #define aa29p1 5 422 #define aa29p2 7 423 char 424 ize(a0,a1,ptr) 425 char *a0; 426 struct dict *ptr; 427 { 428 return(aahash(a0,a1,aa29tsize,aa29p1,aa29p2,aa29root,ptr)); 429 } 430 struct hnode aa30root[37]; 431 #define aa30tsize 37 432 #define aa30p1 29 433 #define aa30p2 31 434 char 435 lar(a0,a1,ptr) 436 char *a0; 437 struct dict *ptr; 438 { 439 return(aahash(a0,a1,aa30tsize,aa30p1,aa30p2,aa30root,ptr)); 440 } 441 struct hnode aa31root[11]; 442 #define aa31tsize 11 443 #define aa31p1 5 444 #define aa31p2 7 445 char 446 less(a0,a1,ptr) 447 char *a0; 448 struct dict *ptr; 449 { 450 return(aahash(a0,a1,aa31tsize,aa31p1,aa31p2,aa31root,ptr)); 451 } 452 struct hnode aa33root[11]; 453 #define aa33tsize 11 454 #define aa33p1 5 455 #define aa33p2 7 456 char 457 man(a0,a1,ptr) 458 char *a0; 459 struct dict *ptr; 460 { 461 return(aahash(a0,a1,aa33tsize,aa33p1,aa33p2,aa33root,ptr)); 462 } 463 struct hnode aa34root[37]; 464 #define aa34tsize 37 465 #define aa34p1 29 466 #define aa34p2 31 467 char 468 ment(a0,a1,ptr) 469 char *a0; 470 struct dict *ptr; 471 { 472 return(aahash(a0,a1,aa34tsize,aa34p1,aa34p2,aa34root,ptr)); 473 } 474 struct hnode aa35root[11]; 475 #define aa35tsize 11 476 #define aa35p1 5 477 #define aa35p2 7 478 char 479 ness(a0,a1,ptr) 480 char *a0; 481 struct dict *ptr; 482 { 483 return(aahash(a0,a1,aa35tsize,aa35p1,aa35p2,aa35root,ptr)); 484 } 485 struct hnode aa37root[11]; 486 #define aa37tsize 11 487 #define aa37p1 5 488 #define aa37p2 7 489 char 490 ous(a0,a1,ptr) 491 char *a0; 492 struct dict *ptr; 493 { 494 return(aahash(a0,a1,aa37tsize,aa37p1,aa37p2,aa37root,ptr)); 495 } 496 struct hnode aa39root[11]; 497 #define aa39tsize 11 498 #define aa39p1 5 499 #define aa39p2 7 500 char 501 ship(a0,a1,ptr) 502 char *a0; 503 struct dict *ptr; 504 { 505 return(aahash(a0,a1,aa39tsize,aa39p1,aa39p2,aa39root,ptr)); 506 } 507 struct hnode aa40root[61]; 508 #define aa40tsize 61 509 #define aa40p1 53 510 #define aa40p2 59 511 char 512 ss(a0,a1,ptr) 513 char *a0; 514 struct dict *ptr; 515 { 516 return(aahash(a0,a1,aa40tsize,aa40p1,aa40p2,aa40root,ptr)); 517 } 518 struct hnode aa42root[89]; 519 #define aa42tsize 89 520 #define aa42p1 79 521 #define aa42p2 83 522 char 523 ure(a0,a1,ptr) 524 char *a0; 525 struct dict *ptr; 526 { 527 return(aahash(a0,a1,aa42tsize,aa42p1,aa42p2,aa42root,ptr)); 528 } 529 struct hnode aa43root[19]; 530 #define aa43tsize 19 531 #define aa43p1 13 532 #define aa43p2 17 533 char 534 us(a0,a1,ptr) 535 char *a0; 536 struct dict *ptr; 537 { 538 return(aahash(a0,a1,aa43tsize,aa43p1,aa43p2,aa43root,ptr)); 539 } 540 struct hnode aa44root[23]; 541 #define aa44tsize 23 542 #define aa44p1 17 543 #define aa44p2 19 544 char 545 ing(a0,a1,ptr) 546 char *a0; 547 struct dict *ptr; 548 { 549 return(aahash(a0,a1,aa44tsize,aa44p1,aa44p2,aa44root,ptr)); 550 } 551 struct hnode aa45root[47]; 552 #define aa45tsize 47 553 #define aa45p1 41 554 #define aa45p2 43 555 char 556 ed(a0,a1,ptr) 557 char *a0; 558 struct dict *ptr; 559 { 560 return(aahash(a0,a1,aa45tsize,aa45p1,aa45p2,aa45root,ptr)); 561 } 562