|
|
1.1 root 1: static char *sccsid = "@(#)getNAME.c 4.1 (Berkeley) 10/1/80";
2: #include <stdio.h>
3:
4: int tocrc;
5:
6: main(argc, argv)
7: int argc;
8: char *argv[];
9: {
10:
11: argc--, argv++;
12: if (!strcmp(argv[0], "-t"))
13: argc--, argv++, tocrc++;
14: while (argc > 0)
15: getfrom(*argv++), argc--;
16: exit(0);
17: }
18:
19: getfrom(name)
20: char *name;
21: {
22: char headbuf[BUFSIZ];
23: char linbuf[BUFSIZ];
24: register char *cp;
25: int i = 0;
26:
27: if (freopen(name, "r", stdin) == 0) {
28: perror(name);
29: exit(1);
30: }
31: for (;;) {
32: if (fgets(headbuf, sizeof headbuf, stdin) == NULL)
33: return;
34: if (headbuf[0] != '.')
35: continue;
36: if (headbuf[1] == 'T' && headbuf[2] == 'H')
37: break;
38: if (headbuf[1] == 't' && headbuf[2] == 'h')
39: break;
40: }
41: for (;;) {
42: if (fgets(linbuf, sizeof linbuf, stdin) == NULL)
43: return;
44: if (linbuf[0] != '.')
45: continue;
46: if (linbuf[1] == 'S' && linbuf[2] == 'H')
47: break;
48: if (linbuf[1] == 's' && linbuf[2] == 'h')
49: break;
50: }
51: trimln(headbuf);
52: if (tocrc) {
53: register char *dp = name, *ep;
54:
55: again:
56: while (*dp && *dp != '.')
57: putchar(*dp++);
58: if (*dp)
59: for (ep = dp+1; *ep; ep++)
60: if (*ep == '.') {
61: putchar(*dp++);
62: goto again;
63: }
64: putchar('(');
65: if (*dp)
66: dp++;
67: while (*dp)
68: putchar (*dp++);
69: putchar(')');
70: putchar(' ');
71: }
72: printf("%s\t", headbuf);
73: for (;;) {
74: if (fgets(linbuf, sizeof linbuf, stdin) == NULL)
75: break;
76: if (linbuf[0] == '.') {
77: if (linbuf[1] == 'S' && linbuf[2] == 'H')
78: break;
79: if (linbuf[1] == 's' && linbuf[2] == 'h')
80: break;
81: }
82: trimln(linbuf);
83: if (i != 0)
84: printf(" ");
85: i++;
86: printf("%s", linbuf);
87: }
88: printf("\n");
89: }
90:
91: trimln(cp)
92: register char *cp;
93: {
94:
95: while (*cp)
96: cp++;
97: if (*--cp == '\n')
98: *cp = 0;
99: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.