xref: /csrg-svn/old/refer/NOTUSED/flagger.c (revision 48291)
1*48291Sbostic /*-
2*48291Sbostic  * %sccs.include.proprietary.c%
3*48291Sbostic  */
4*48291Sbostic 
512277Stut #ifndef lint
6*48291Sbostic static char sccsid[] = "@(#)flagger.c	4.2 (Berkeley) 04/18/91";
7*48291Sbostic #endif /* not lint */
812277Stut 
912277Stut #include <stdio.h>
1012277Stut 
1112277Stut char wds[100][40];
1212277Stut int synwd[100];
1312277Stut int mark[100];
1412277Stut int justw = 0;
1512277Stut extern int comcount;
1612277Stut int blank[100];
1712277Stut int wdp, wdf;
1812277Stut int bl;
1912277Stut int sargc;
2012277Stut char **sargv;
2112277Stut FILE *inf;
2212277Stut 
main(argc,argv)2312277Stut main(argc,argv)
2412277Stut char *argv[];
2512277Stut {
2612277Stut 	int i;
2712277Stut 	while (--argc && **++argv== '-')
2812277Stut 		switch(argv[0][1])
2912277Stut 		{
3012277Stut 		case 'w':
3112277Stut 			justw=1;
3212277Stut 			break;
3312277Stut 		case 'c':
3412277Stut 			comcount=atoi(argv[0]+2);
3512277Stut 			break;
3612277Stut 		}
3712277Stut 	wdp=wdf=0;
3812277Stut 	if (argc>0)
3912277Stut 	{
4012277Stut 		argc--;
4112277Stut 		inf = fopen(argv[0], "r");
4212277Stut 		if (inf==NULL) exit(0);
4312277Stut 		argv++;
4412277Stut 	}
4512277Stut 	else
4612277Stut 		inf=stdin;
4712277Stut 	sargc=argc;
4812277Stut 	sargv= argv;
4912277Stut 	while ( gw (wds[wdp = next(wdp)], &bl))
5012277Stut 	{
5112277Stut 		blank[wdp] = bl;
5212277Stut 		mark[wdp]=0;
5312277Stut 		synwd[wdp] = common(upcase(wds[wdp]));
5412277Stut 		if (common(sstrip(upcase(wds[wdp]))))
5512277Stut 			synwd[wdp]=1;
5612277Stut 		if (allpunct(wds[wdp]))
5712277Stut 			synwd[wdp]=1;
5812277Stut 		if (strlen(wds[wdp])<3)
5912277Stut 			synwd[wdp]=1;
6012277Stut 		if (synwd[wdp]==1)
6112277Stut 		{
6212277Stut 			for(i=wdp; i!=wdf; i=prev(i))
6312277Stut 			{
6412277Stut 				if (synwd[i]>0)
6512277Stut 					continue;
6612277Stut 				mark[i]=1;
6712277Stut 				break;
6812277Stut 			}
6912277Stut 		}
7012277Stut 	}
7112277Stut 	if (wdp<0) return(0);
7212277Stut 	i=wdf -1;
7312277Stut 	i = next(i);
7412277Stut 	while (i != wdp)
7512277Stut 		i= next(i);
7612277Stut }
7712277Stut 
next(i)7812277Stut next(i)
7912277Stut {
8012277Stut 	int j;
8112277Stut 	j = (i+1) % 100;
8212277Stut 	if (j==wdf)
8312277Stut 	{
8412277Stut 		if (justw==0)
8512277Stut 		{
8612277Stut 			if (mark[j] ) putchar('*');
8712277Stut 			printf("%s",wds[j]);
8812277Stut 			if (blank[j]) putchar(' ');
8912277Stut 		}
9012277Stut 		else
9112277Stut 			if (mark[j]) printf("%s\n", wds[j]);
9212277Stut 		wdf = (wdf+1)%100;
9312277Stut 	}
9412277Stut 	return(j);
9512277Stut }
9612277Stut 
prev(i)9712277Stut prev(i)
9812277Stut {
9912277Stut 	i = (i-1)%100;
10012277Stut 	return(i);
10112277Stut }
10212277Stut 
allpunct(s)10312277Stut allpunct(s)
10412277Stut char *s;
10512277Stut {
10612277Stut 	int c;
10712277Stut 	while (c = *s++)
10812277Stut 		if (isalpha(c))
10912277Stut 			return(0);
11012277Stut 	return(1);
11112277Stut }
11212277Stut 
gw(s,b)11312277Stut gw(s, b)
11412277Stut char *s;
11512277Stut int *b;
11612277Stut {
11712277Stut 	int c, type, nt;
11812277Stut 	c = getc(inf);
11912277Stut 	while (c==EOF)
12012277Stut 	{
12112277Stut 		fclose(inf);
12212277Stut 		inf=NULL;
12312277Stut 		if (sargc-->0)
12412277Stut 		{
12512277Stut 			inf = fopen ( *sargv++, "r");
12612277Stut 		}
12712277Stut 		if (inf==NULL) return(0);
12812277Stut 		c = getc(inf);
12912277Stut 	}
13012277Stut 	*s++ = c;
13112277Stut 	type = isalpha(c) || isdigit(c);
13212277Stut 	while ( (c = getc(inf)) != EOF )
13312277Stut 	{
13412277Stut 		nt = isalpha(c) || isdigit(c);
13512277Stut 		if (nt==type)
13612277Stut 			*s++= c;
13712277Stut 		else
13812277Stut 			break;
13912277Stut 	}
14012277Stut 	*s=0;
14112277Stut 	if (c== ' ')
14212277Stut 	{
14312277Stut 		*b = 1;
14412277Stut 		return(1);
14512277Stut 	}
14612277Stut 	while (c==EOF)
14712277Stut 	{
14812277Stut 		fclose(inf);
14912277Stut 		inf=NULL;
15012277Stut 		if (sargc-- > 0)
15112277Stut 		{
15212277Stut 			inf= fopen( *sargv++, "r");
15312277Stut 		}
15412277Stut 		if (inf==NULL) return(0);
15512277Stut 		c = getc(inf);
15612277Stut 	}
15712277Stut 	ungetc(c, inf);
15812277Stut 	*b=0;
15912277Stut 	return(1);
16012277Stut }
16112277Stut 
trimnl(s)16212277Stut trimnl(s)
16312277Stut char *s;
16412277Stut {
16512277Stut 	while (*s) s++;
16612277Stut 	if (*--s=='\n') *s=0;
16712277Stut }
16812277Stut 
upcase(s)16912277Stut upcase(s)
17012277Stut char *s;
17112277Stut {
17212277Stut 	static char buf[100];
17312277Stut 	strcpy (buf, s);
17412277Stut 	for(s=buf; *s; s++)
17512277Stut 		if (isupper(*s))
17612277Stut 			*s = *s-'A'+'a';
17712277Stut 	return(buf);
17812277Stut }
17912277Stut 
sstrip(s)18012277Stut sstrip(s)
18112277Stut char *s;
18212277Stut {
18312277Stut 	char *p ;
18412277Stut 	p=s;
18512277Stut 	while (*s) s++;
18612277Stut 	if (*--s=='s') *s=0;
18712277Stut 	return(p);
18812277Stut }
189