1 #ifndef lint
2 static char sccsid[] = "@(#)main.c	1.3 (CWI) 85/10/02";
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
35 			fprintf(stderr, "tbl: warning: unknown typesetter %s\n", p);
36 	}
37 
38 	tabin = stdin;
39 	sargv = ++argv;
40 	if((sargc = --argc) > 0)
41 		(void) swapin();
42 
43 	while(gets1(line)){
44 		printf("%s\n", line);
45 		if(prefix(".TS", line))
46 			tableput();
47 	}
48 	fclose(tabin);
49 	return(0);
50 }
51 
52 swapin()
53 {
54 	while(sargc > 0 && **sargv == '-'){
55 		if(strcmp("-ms", *sargv) == 0){
56 			*sargv = MACROS;
57 			break;
58 		}
59 		if(strcmp("-mm", *sargv) == 0){
60 			*sargv = PYMACS;
61 			break;
62 		}
63 		if(strcmp("-TX", *sargv) == 0){
64 			pr1403 = 1;
65 			sargc--;
66 			sargv++;
67 			break;
68 		}
69 		if(strcmp("-Thar", *sargv) == 0){
70 			device = HARRIS;
71 			sargc--;
72 			sargv++;
73 			break;
74 		}
75 		if(strcmp("-Tver", *sargv) == 0){
76 			device = DEVVER;
77 			sargc--;
78 			sargv++;
79 			break;
80 		}
81 		if(strcmp("-d", *sargv) == 0){
82 			dbg++;
83 			sargc--;
84 			sargv++;
85 			break;
86 		}
87 			sargc--;
88 			sargv++;
89 	}
90 	if(sargc <= 0)
91 		return(0);
92 	if(tabin != stdin)
93 		(void) fclose(tabin);
94 	if(strcmp(*sargv, "-") == 0)
95 		tabin = stdin;
96 	else
97 		tabin = fopen(ifile = *sargv, "r");
98 	iline = 1;
99 	printf(".ds f. %s\n", ifile);
100 	/*
101 	 * support for .lf request (jna)
102 	 */
103 	printf(".lf 1 %s\n", ifile);
104 	if(tabin == NULL)
105 		error("Can't open file");
106 	sargc--;
107 	sargv++;
108 	return(1);
109 }
110 
111 badsig()
112 {
113 	signal(SIGPIPE, SIG_IGN);
114 	exit(0);
115 }
116 
117 tableput(){
118 
119 	switch(device){
120 	case CAT:
121 		dprint(".\\\" -- device CAT\n");
122 		break;
123 	case HARRIS:
124 		dprint(".\\\" -- device HARRIS\n");
125 		break;
126 	case DEVVER:
127 		dprint(".\\\" -- device VERSATEC\n");
128 		break;
129 	}
130 	dprint(".\\\" -- saveline\n");
131 	saveline();
132 	dprint(".\\\" -- savefill\n");
133 	savefill();
134 	dprint(".\\\" -- ifdivert\n");
135 	ifdivert();
136 	dprint(".\\\" -- cleanfc\n");
137 	cleanfc();
138 	dprint(".\\\" -- getcomm\n");
139 	getcomm();
140 	dprint(".\\\" -- getspec\n");
141 	getspec();
142 	dprint(".\\\" -- gettbl\n");
143 	gettbl();
144 	dprint(".\\\" -- getstop\n");
145 	getstop();
146 	dprint(".\\\" -- checkuse\n");
147 	checkuse();
148 	dprint(".\\\" -- choochar\n");
149 	choochar();
150 	dprint(".\\\" -- maktab\n");
151 	maktab();
152 	dprint(".\\\" -- runout\n");
153 	runout();
154 	dprint(".\\\" -- release\n");
155 	release();
156 	dprint(".\\\" -- rstofill\n");
157 	rstofill();
158 	dprint(".\\\" -- endoff\n");
159 	endoff();
160 	dprint(".\\\" -- restline\n");
161 	restline();
162 	dprint(".\\\" -- end off tableput\n");
163 }
164