|
|
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: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.