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 
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 
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 
121 badsig()
122 {
123 	signal(SIGPIPE, SIG_IGN);
124 	exit(0);
125 }
126 
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