Commit | Line | Data |
---|---|---|
6c561a18 BJ |
1 | #include <stdio.h> |
2 | ||
3 | int tocrc; | |
4 | ||
5 | main(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 | ||
18 | getfrom(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 | ||
54 | again: | |
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 | ||
90 | trimln(cp) | |
91 | register char *cp; | |
92 | { | |
93 | ||
94 | while (*cp) | |
95 | cp++; | |
96 | if (*--cp == '\n') | |
97 | *cp = 0; | |
98 | } |