xref: /csrg-svn/old/refer/NOTUSED/flagger.c (revision 12277)
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