1 #ifndef lint
2 static char sccsid[] = "@(#)main.c 1.4 (CWI) 86/11/10";
3 #endif lint
4
5 /*
6 * tbl troff preprocessor.
7 *
8 * Tidied, and changed by jna
9 *
10 */
11
12 #include <signal.h>
13 #include "defs.h"
14 #include "ext.h"
15
16 static int sargc;
17 static char **sargv;
18
main(argc,argv)19 main(argc, argv)
20 int argc; char *argv[];
21 {
22 char line[BUFSIZ];
23 register char *p;
24 char *getenv();
25 extern int badsig();
26
27 signal(SIGPIPE, badsig);
28
29 if (p = getenv("TYPESETTER")) {
30 if(strcmp(p, "har") == 0)
31 device = HARRIS;
32 else if(strcmp(p, "ver") == 0)
33 device = DEVVER;
34 else if(strcmp(p, "psc") == 0)
35 device = DEVPSC;
36 /* johan doesnt want to see error messages in a context like
37 TYPESETTER=1650.10 tbl files | eqn | nroff -ms
38 so I removed the warning here. Besides, there is no complaint
39 for an option -Tfoo either. */
40 }
41
42 tabin = stdin;
43 sargv = ++argv;
44 if((sargc = --argc) > 0)
45 (void) swapin();
46
47 while(gets1(line)){
48 printf("%s\n", line);
49 if(prefix(".TS", line))
50 tableput();
51 }
52 fclose(tabin);
53 return(0);
54 }
55
swapin()56 swapin()
57 {
58 while(sargc > 0 && **sargv == '-'){
59 if(strcmp("-ms", *sargv) == 0){
60 *sargv = MACROS;
61 break;
62 }
63 if(strcmp("-mm", *sargv) == 0){
64 *sargv = PYMACS;
65 break;
66 }
67 if(strcmp("-TX", *sargv) == 0){
68 pr1403 = 1;
69 sargc--;
70 sargv++;
71 break;
72 }
73 if(strcmp("-Thar", *sargv) == 0){
74 device = HARRIS;
75 sargc--;
76 sargv++;
77 break;
78 }
79 if(strcmp("-Tver", *sargv) == 0){
80 device = DEVVER;
81 sargc--;
82 sargv++;
83 break;
84 }
85 if(strcmp("-Tpsc", *sargv) == 0){
86 device = DEVPSC;
87 sargc--;
88 sargv++;
89 break;
90 }
91 if(strcmp("-d", *sargv) == 0){
92 dbg++;
93 sargc--;
94 sargv++;
95 break;
96 }
97 sargc--;
98 sargv++;
99 }
100 if(sargc <= 0)
101 return(0);
102 if(tabin != stdin)
103 (void) fclose(tabin);
104 if(strcmp(*sargv, "-") == 0)
105 tabin = stdin;
106 else
107 tabin = fopen(ifile = *sargv, "r");
108 iline = 1;
109 printf(".ds f. %s\n", ifile);
110 /*
111 * support for .lf request (jna)
112 */
113 printf(".lf 1 %s\n", ifile);
114 if(tabin == NULL)
115 error("Can't open file");
116 sargc--;
117 sargv++;
118 return(1);
119 }
120
badsig()121 badsig()
122 {
123 signal(SIGPIPE, SIG_IGN);
124 exit(0);
125 }
126
tableput()127 tableput(){
128
129 switch(device){
130 case CAT:
131 dprint(".\\\" -- device CAT\n");
132 break;
133 case HARRIS:
134 dprint(".\\\" -- device HARRIS\n");
135 break;
136 case DEVPSC:
137 dprint(".\\\" -- device PostScript\n");
138 break;
139 case DEVVER:
140 dprint(".\\\" -- device VERSATEC\n");
141 break;
142 }
143 dprint(".\\\" -- saveline\n");
144 saveline();
145 dprint(".\\\" -- savefill\n");
146 savefill();
147 dprint(".\\\" -- ifdivert\n");
148 ifdivert();
149 dprint(".\\\" -- cleanfc\n");
150 cleanfc();
151 dprint(".\\\" -- getcomm\n");
152 getcomm();
153 dprint(".\\\" -- getspec\n");
154 getspec();
155 dprint(".\\\" -- gettbl\n");
156 gettbl();
157 dprint(".\\\" -- getstop\n");
158 getstop();
159 dprint(".\\\" -- checkuse\n");
160 checkuse();
161 dprint(".\\\" -- choochar\n");
162 choochar();
163 dprint(".\\\" -- maktab\n");
164 maktab();
165 dprint(".\\\" -- runout\n");
166 runout();
167 dprint(".\\\" -- release\n");
168 release();
169 dprint(".\\\" -- rstofill\n");
170 rstofill();
171 dprint(".\\\" -- endoff\n");
172 endoff();
173 dprint(".\\\" -- restline\n");
174 restline();
175 dprint(".\\\" -- end off tableput\n");
176 }
177