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

Defined functions

allpunct defined in line 84; used 1 times
  • in line 40
gw defined in line 93; used 1 times
  • in line 33
main defined in line 12; never used
next defined in line 61; used 3 times
prev defined in line 79; used 1 times
  • in line 46
sstrip defined in line 156; used 1 times
  • in line 38
trimnl defined in line 140; never used
upcase defined in line 146; used 2 times

Defined variables

bl defined in line 9; used 2 times
blank defined in line 7; used 2 times
justw defined in line 5; used 2 times
mark defined in line 4; used 4 times
sargc defined in line 10; used 3 times
sargv defined in line 10; used 3 times
synwd defined in line 3; used 6 times
wdf defined in line 8; used 6 times
wdp defined in line 8; used 17 times
wds defined in line 2; used 7 times
Last modified: 1981-07-10
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 901
Valid CSS Valid XHTML 1.0 Strict