|
|
1.1 root 1: # include "stdio.h"
2: # include "ctype.h"
3: # include "assert.h"
4: # define SEP 001
5: # define SAME 1
6: # define DIFFERENT 0
7: main(argc,argv)
8: char *argv[];
9: {
10: char bf[2000],*p, *s;
11: char oname[100], tname[100];
12: int ct, type, ntype;
13: oname[0] = 0;
14: ct = type = 0;
15: while (gets(bf))
16: {
17: p=bf;
18: gname(tname,p);
19: /* if a date we don't care about month */
20: datetrim(tname);
21: if (compare(tname, oname) != SAME)
22: {
23: if (ct > 0)
24: printf(".ct %d\n", ct);
25: printf(".nn %s\n", tname);
26: ct = 0;
27: type = 0;
28: }
29: strcpy (oname, tname);
30: ntype = gtype(p);
31: if (ntype != type)
32: printf(".ty %d\n", ntype);
33: type = ntype;
34: while (*p++ != SEP);
35: for (s=p; *s; s++)
36: {
37: assert (s<bf+2000);
38: if (*s == SEP)
39: *s = '\n';
40: }
41: while (*p=='\n')p++;
42: puts(".br\n.[");
43: puts(p);
44: puts(".]");
45: ct++;
46: }
47: if (ct>0) printf(".ct %d\n",ct);
48: }
49:
50: gname(buf, s)
51: char *buf, *s;
52: {
53: int c;
54: for ( ; (c= *s) && c != SEP && c != '*'; s++)
55: *buf++ = (c != '_' ? c : ' ');
56: *buf=0;
57: }
58: gtype(s)
59: char *s;
60: {
61: while (*s && *s!= '*')
62: s++;
63: return (*s ? s[1] - '0' : 0);
64: }
65: compare(s1, s2)
66: char *s1, *s2;
67: {
68: /* compare last names */
69: while (*s1++== *s2++)
70: {
71: if (*s1==0) return(SAME);
72: if (*s1==' ') break;
73: }
74: if (*s1 != ' ' || *s2 != ' ') return(DIFFERENT);
75: while (*s1==' ') s1++;
76: while (*s2==' ') s2++;
77: #/* compare first initials */
78: if (*s1++ != *s2++) return (DIFFERENT);
79: while (*s1==' ') s1++;
80: while (*s2==' ') s2++;
81: /* if no middle initials OK */
82: if (*s1==0 || *s2==0) return(SAME);
83: /* but if middle initials must be same */
84: if (*s1==*s2) return(SAME);
85: return (DIFFERENT);
86: }
87: datetrim(p)
88: char *p;
89: {
90: if (isdigit(p[0])&& isdigit(p[1]))
91: {
92: while(isdigit(*p))p++;
93: *p=0;
94: }
95: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.