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