Annotation of researchv10no/cmd/ap/apnews/apnews2.c, revision 1.1.1.1

1.1       root        1: # include "stdio.h"
                      2: # include "assert.h"
                      3: # include "ctype.h"
                      4: prsum(fn)
                      5:        char *fn;
                      6: {
                      7: char line[100], *s;
                      8: FILE *fl;
                      9: int k;
                     10:        if (fn[0]=='\0')
                     11:                return;
                     12:        fl = fopen(fn, "r");
                     13:        if (fl==NULL) return;
                     14:        printf("(%s): ",  fn);
                     15:        while (fgets(line, 100, fl))
                     16:                if (line[0]=='\t') break;
                     17:        for(s=line; *s==' '|| *s=='\t'; s++)
                     18:                ;
                     19:        ctset(12);
                     20:        do {
                     21:                trimnl(s);
                     22:                k = sentend(s);
                     23:                ctput(s);
                     24:                if (k>0) break;
                     25:                } while (fgets(s=line, 100, fl));
                     26:        ctout();
                     27:        fclose(fl);
                     28: }
                     29: sentend(s)
                     30:        char *s;
                     31: {
                     32: for( s+=2; *s; s++)
                     33:        if (s[0]=='.')
                     34:                {
                     35:                char *p = s;
                     36:                if (s[-2]=='.' || s[-2]==' ')
                     37:                        continue;
                     38:                if (s[-3]==' ' &&strncase(s-2, "st", 2)==0)
                     39:                        continue;
                     40:                if (strncase(s-2, "Mr", 2)==0)
                     41:                        continue;
                     42:                if (strncase(s-3, "Mrs", 3)==0)
                     43:                        continue;
                     44:                if (strncase(s-2, "Ms", 2)==0)
                     45:                        continue;
                     46:                if (strncase(s-3, "Sen", 3)==0)
                     47:                        continue;
                     48:                if (strncase(s-4, "Capt", 4)==0)
                     49:                        continue;
                     50:                if (strncase(s-3, "Col", 3)==0)
                     51:                        continue;
                     52:                if (strncase(s-3, "Rep", 3)==0)
                     53:                        continue;
                     54:                if (strncase(s-2, "Co", 2)==0)
                     55:                        continue;
                     56:                if (strncase (s-3, "Rev", 3)==0)
                     57:                        continue;
                     58:                while (*++p ==' ' || *p == '\t');
                     59:                if (p[0]=='\'' && p[1]=='\'')
                     60:                        {
                     61:                        p[2]=0;
                     62:                        return(1);
                     63:                        }
                     64:                if (*p==0 || isupper(*p) )
                     65:                        {
                     66:                        s[1]=0;
                     67:                        return(1);
                     68:                        }
                     69:                }
                     70: return(0);
                     71: }
                     72: static int col= 0;
                     73: ctset(n)
                     74: {
                     75: col=n;
                     76: }
                     77: ctput(s)
                     78:        char *s;
                     79: {
                     80: int k, m;
                     81: m = strlen(s);
                     82: if (m>72-col)
                     83:        {
                     84:        for (k=72-col; k>0 && s[k]!=' '; k--)
                     85:                ;
                     86:        if (k>0)
                     87:                {
                     88:                s[k++]=0;
                     89:                printf("%s\n    ", s);
                     90:                }
                     91:        else
                     92:                printf("\n    ");
                     93:        col=4;
                     94:        }
                     95: else
                     96:        k= 0;
                     97: s += k;
                     98: printf("%s ", s);
                     99: col += strlen(s);
                    100: }
                    101: ctout()
                    102: {
                    103: printf("\n");
                    104: }
                    105: strncase(s, t, n)
                    106:        char *s, *t;
                    107: {
                    108: while (n--)
                    109:        {
                    110:        if ( (*s ^ *t) & 0337)
                    111:                return(1);
                    112:        if (*s==0) return(0);
                    113:        s++; t++;
                    114:        }
                    115: return(0);
                    116: }

unix.superglobalmegacorp.com

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