1 #ifndef lint 2 static char sccsid[] = "@(#)spellout.c 4.2 02/02/91"; 3 #endif 4 5 #include "spell.h" 6 7 main(argc, argv) 8 int argc; 9 char **argv; 10 { 11 register i, j; 12 long h; 13 register long *lp; 14 char word[NW]; 15 int dflag = 0; 16 int indict; 17 register char *wp; 18 19 if (argc>1 && argv[1][0]=='-' && argv[1][1]=='d') { 20 dflag = 1; 21 argc--; 22 argv++; 23 } 24 if(argc<=1) { 25 fprintf(stderr,"spellout: arg count\n"); 26 exit(1); 27 } 28 if(!prime(argc,argv)) { 29 fprintf(stderr, 30 "spellout: cannot initialize hash table\n"); 31 exit(1); 32 } 33 while (fgets(word, sizeof(word), stdin)) { 34 indict = 1; 35 for (i=0; i<NP; i++) { 36 for (wp = word, h = 0, lp = pow2[i]; 37 (j = *wp) != '\0'; ++wp, ++lp) 38 h += j * *lp; 39 h %= p[i]; 40 if (get(h)==0) { 41 indict = 0; 42 break; 43 } 44 } 45 if (dflag == indict) 46 fputs(word, stdout); 47 } 48 } 49