1*12277Stut #ifndef lint 2*12277Stut static char *sccsid = "@(#)flagger.c 4.1 (Berkeley) 05/06/83"; 3*12277Stut #endif 4*12277Stut 5*12277Stut #include <stdio.h> 6*12277Stut 7*12277Stut char wds[100][40]; 8*12277Stut int synwd[100]; 9*12277Stut int mark[100]; 10*12277Stut int justw = 0; 11*12277Stut extern int comcount; 12*12277Stut int blank[100]; 13*12277Stut int wdp, wdf; 14*12277Stut int bl; 15*12277Stut int sargc; 16*12277Stut char **sargv; 17*12277Stut FILE *inf; 18*12277Stut 19*12277Stut main(argc,argv) 20*12277Stut char *argv[]; 21*12277Stut { 22*12277Stut int i; 23*12277Stut while (--argc && **++argv== '-') 24*12277Stut switch(argv[0][1]) 25*12277Stut { 26*12277Stut case 'w': 27*12277Stut justw=1; 28*12277Stut break; 29*12277Stut case 'c': 30*12277Stut comcount=atoi(argv[0]+2); 31*12277Stut break; 32*12277Stut } 33*12277Stut wdp=wdf=0; 34*12277Stut if (argc>0) 35*12277Stut { 36*12277Stut argc--; 37*12277Stut inf = fopen(argv[0], "r"); 38*12277Stut if (inf==NULL) exit(0); 39*12277Stut argv++; 40*12277Stut } 41*12277Stut else 42*12277Stut inf=stdin; 43*12277Stut sargc=argc; 44*12277Stut sargv= argv; 45*12277Stut while ( gw (wds[wdp = next(wdp)], &bl)) 46*12277Stut { 47*12277Stut blank[wdp] = bl; 48*12277Stut mark[wdp]=0; 49*12277Stut synwd[wdp] = common(upcase(wds[wdp])); 50*12277Stut if (common(sstrip(upcase(wds[wdp])))) 51*12277Stut synwd[wdp]=1; 52*12277Stut if (allpunct(wds[wdp])) 53*12277Stut synwd[wdp]=1; 54*12277Stut if (strlen(wds[wdp])<3) 55*12277Stut synwd[wdp]=1; 56*12277Stut if (synwd[wdp]==1) 57*12277Stut { 58*12277Stut for(i=wdp; i!=wdf; i=prev(i)) 59*12277Stut { 60*12277Stut if (synwd[i]>0) 61*12277Stut continue; 62*12277Stut mark[i]=1; 63*12277Stut break; 64*12277Stut } 65*12277Stut } 66*12277Stut } 67*12277Stut if (wdp<0) return(0); 68*12277Stut i=wdf -1; 69*12277Stut i = next(i); 70*12277Stut while (i != wdp) 71*12277Stut i= next(i); 72*12277Stut } 73*12277Stut 74*12277Stut next(i) 75*12277Stut { 76*12277Stut int j; 77*12277Stut j = (i+1) % 100; 78*12277Stut if (j==wdf) 79*12277Stut { 80*12277Stut if (justw==0) 81*12277Stut { 82*12277Stut if (mark[j] ) putchar('*'); 83*12277Stut printf("%s",wds[j]); 84*12277Stut if (blank[j]) putchar(' '); 85*12277Stut } 86*12277Stut else 87*12277Stut if (mark[j]) printf("%s\n", wds[j]); 88*12277Stut wdf = (wdf+1)%100; 89*12277Stut } 90*12277Stut return(j); 91*12277Stut } 92*12277Stut 93*12277Stut prev(i) 94*12277Stut { 95*12277Stut i = (i-1)%100; 96*12277Stut return(i); 97*12277Stut } 98*12277Stut 99*12277Stut allpunct(s) 100*12277Stut char *s; 101*12277Stut { 102*12277Stut int c; 103*12277Stut while (c = *s++) 104*12277Stut if (isalpha(c)) 105*12277Stut return(0); 106*12277Stut return(1); 107*12277Stut } 108*12277Stut 109*12277Stut gw(s, b) 110*12277Stut char *s; 111*12277Stut int *b; 112*12277Stut { 113*12277Stut int c, type, nt; 114*12277Stut c = getc(inf); 115*12277Stut while (c==EOF) 116*12277Stut { 117*12277Stut fclose(inf); 118*12277Stut inf=NULL; 119*12277Stut if (sargc-->0) 120*12277Stut { 121*12277Stut inf = fopen ( *sargv++, "r"); 122*12277Stut } 123*12277Stut if (inf==NULL) return(0); 124*12277Stut c = getc(inf); 125*12277Stut } 126*12277Stut *s++ = c; 127*12277Stut type = isalpha(c) || isdigit(c); 128*12277Stut while ( (c = getc(inf)) != EOF ) 129*12277Stut { 130*12277Stut nt = isalpha(c) || isdigit(c); 131*12277Stut if (nt==type) 132*12277Stut *s++= c; 133*12277Stut else 134*12277Stut break; 135*12277Stut } 136*12277Stut *s=0; 137*12277Stut if (c== ' ') 138*12277Stut { 139*12277Stut *b = 1; 140*12277Stut return(1); 141*12277Stut } 142*12277Stut while (c==EOF) 143*12277Stut { 144*12277Stut fclose(inf); 145*12277Stut inf=NULL; 146*12277Stut if (sargc-- > 0) 147*12277Stut { 148*12277Stut inf= fopen( *sargv++, "r"); 149*12277Stut } 150*12277Stut if (inf==NULL) return(0); 151*12277Stut c = getc(inf); 152*12277Stut } 153*12277Stut ungetc(c, inf); 154*12277Stut *b=0; 155*12277Stut return(1); 156*12277Stut } 157*12277Stut 158*12277Stut trimnl(s) 159*12277Stut char *s; 160*12277Stut { 161*12277Stut while (*s) s++; 162*12277Stut if (*--s=='\n') *s=0; 163*12277Stut } 164*12277Stut 165*12277Stut upcase(s) 166*12277Stut char *s; 167*12277Stut { 168*12277Stut static char buf[100]; 169*12277Stut strcpy (buf, s); 170*12277Stut for(s=buf; *s; s++) 171*12277Stut if (isupper(*s)) 172*12277Stut *s = *s-'A'+'a'; 173*12277Stut return(buf); 174*12277Stut } 175*12277Stut 176*12277Stut sstrip(s) 177*12277Stut char *s; 178*12277Stut { 179*12277Stut char *p ; 180*12277Stut p=s; 181*12277Stut while (*s) s++; 182*12277Stut if (*--s=='s') *s=0; 183*12277Stut return(p); 184*12277Stut } 185