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