Annotation of 42BSD/usr.bin/refer/flagger.c, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.