125067Sjaap #ifndef lint
229990Sjaap static char sccsid[] = "@(#)main.c	1.4 (CWI) 86/11/10";
325067Sjaap #endif lint
425067Sjaap 
525067Sjaap /*
625067Sjaap  * tbl troff preprocessor.
725067Sjaap  *
825067Sjaap  * Tidied, and changed by jna
925067Sjaap  *
1025067Sjaap  */
1125067Sjaap 
1225067Sjaap #include <signal.h>
1325067Sjaap #include "defs.h"
1425067Sjaap #include "ext.h"
1525067Sjaap 
1625067Sjaap static int     sargc;
1725067Sjaap static char  **sargv;
1825067Sjaap 
main(argc,argv)1925067Sjaap main(argc, argv)
2025067Sjaap int	argc; char   *argv[];
2125067Sjaap {
2225067Sjaap 	char line[BUFSIZ];
2325095Sjaap 	register char *p;
2425095Sjaap 	char *getenv();
2525067Sjaap 	extern int badsig();
2625067Sjaap 
2725067Sjaap 	signal(SIGPIPE, badsig);
2825067Sjaap 
2925095Sjaap 	if (p = getenv("TYPESETTER")) {
3025095Sjaap 		if(strcmp(p, "har") == 0)
3125095Sjaap 			device = HARRIS;
3225095Sjaap 		else if(strcmp(p, "ver") == 0)
3325095Sjaap 			device = DEVVER;
3429990Sjaap 		else if(strcmp(p, "psc") == 0)
3529990Sjaap 			device = DEVPSC;
36*32725Sjaap 		/* johan doesnt want to see error messages in a context like
37*32725Sjaap 			TYPESETTER=1650.10 tbl files | eqn | nroff -ms
38*32725Sjaap 		so I removed the warning here. Besides, there is no complaint
39*32725Sjaap 		for an option -Tfoo either. */
4025095Sjaap 	}
4125095Sjaap 
4225067Sjaap 	tabin = stdin;
4325067Sjaap 	sargv = ++argv;
4425067Sjaap 	if((sargc = --argc) > 0)
4525067Sjaap 		(void) swapin();
4625067Sjaap 
4725067Sjaap 	while(gets1(line)){
4825067Sjaap 		printf("%s\n", line);
4925067Sjaap 		if(prefix(".TS", line))
5025067Sjaap 			tableput();
5125067Sjaap 	}
5225067Sjaap 	fclose(tabin);
5325067Sjaap 	return(0);
5425067Sjaap }
5525067Sjaap 
swapin()5625067Sjaap swapin()
5725067Sjaap {
5825067Sjaap 	while(sargc > 0 && **sargv == '-'){
5925067Sjaap 		if(strcmp("-ms", *sargv) == 0){
6025067Sjaap 			*sargv = MACROS;
6125067Sjaap 			break;
6225067Sjaap 		}
6325067Sjaap 		if(strcmp("-mm", *sargv) == 0){
6425067Sjaap 			*sargv = PYMACS;
6525067Sjaap 			break;
6625067Sjaap 		}
6725067Sjaap 		if(strcmp("-TX", *sargv) == 0){
6825067Sjaap 			pr1403 = 1;
6925067Sjaap 			sargc--;
7025067Sjaap 			sargv++;
7125067Sjaap 			break;
7225067Sjaap 		}
7325067Sjaap 		if(strcmp("-Thar", *sargv) == 0){
7425067Sjaap 			device = HARRIS;
7525067Sjaap 			sargc--;
7625067Sjaap 			sargv++;
7725067Sjaap 			break;
7825067Sjaap 		}
7925067Sjaap 		if(strcmp("-Tver", *sargv) == 0){
8025067Sjaap 			device = DEVVER;
8125067Sjaap 			sargc--;
8225067Sjaap 			sargv++;
8325067Sjaap 			break;
8425067Sjaap 		}
8529990Sjaap 		if(strcmp("-Tpsc", *sargv) == 0){
8629990Sjaap 			device = DEVPSC;
8729990Sjaap 			sargc--;
8829990Sjaap 			sargv++;
8929990Sjaap 			break;
9029990Sjaap 		}
9125089Sjaap 		if(strcmp("-d", *sargv) == 0){
9225089Sjaap 			dbg++;
9325067Sjaap 			sargc--;
9425067Sjaap 			sargv++;
9525089Sjaap 			break;
9625089Sjaap 		}
97*32725Sjaap 		sargc--;
98*32725Sjaap 		sargv++;
9925067Sjaap 	}
10025067Sjaap 	if(sargc <= 0)
10125067Sjaap 		return(0);
10225067Sjaap 	if(tabin != stdin)
10325067Sjaap 		(void) fclose(tabin);
10425067Sjaap 	if(strcmp(*sargv, "-") == 0)
10525067Sjaap 		tabin = stdin;
10625067Sjaap 	else
10725067Sjaap 		tabin = fopen(ifile = *sargv, "r");
10825067Sjaap 	iline = 1;
10925067Sjaap 	printf(".ds f. %s\n", ifile);
11025067Sjaap 	/*
11125067Sjaap 	 * support for .lf request (jna)
11225067Sjaap 	 */
11325067Sjaap 	printf(".lf 1 %s\n", ifile);
11425067Sjaap 	if(tabin == NULL)
11525067Sjaap 		error("Can't open file");
11625067Sjaap 	sargc--;
11725067Sjaap 	sargv++;
11825067Sjaap 	return(1);
11925067Sjaap }
12025067Sjaap 
badsig()12125067Sjaap badsig()
12225067Sjaap {
12325067Sjaap 	signal(SIGPIPE, SIG_IGN);
12425067Sjaap 	exit(0);
12525067Sjaap }
12625067Sjaap 
tableput()12725067Sjaap tableput(){
12825067Sjaap 
12925067Sjaap 	switch(device){
13025067Sjaap 	case CAT:
13125089Sjaap 		dprint(".\\\" -- device CAT\n");
13225067Sjaap 		break;
13325067Sjaap 	case HARRIS:
13425089Sjaap 		dprint(".\\\" -- device HARRIS\n");
13525067Sjaap 		break;
13629990Sjaap 	case DEVPSC:
13729990Sjaap 		dprint(".\\\" -- device PostScript\n");
13829990Sjaap 		break;
13925067Sjaap 	case DEVVER:
14025089Sjaap 		dprint(".\\\" -- device VERSATEC\n");
14125067Sjaap 		break;
14225067Sjaap 	}
14325089Sjaap 	dprint(".\\\" -- saveline\n");
14425067Sjaap 	saveline();
14525089Sjaap 	dprint(".\\\" -- savefill\n");
14625067Sjaap 	savefill();
14725089Sjaap 	dprint(".\\\" -- ifdivert\n");
14825067Sjaap 	ifdivert();
14925089Sjaap 	dprint(".\\\" -- cleanfc\n");
15025067Sjaap 	cleanfc();
15125089Sjaap 	dprint(".\\\" -- getcomm\n");
15225067Sjaap 	getcomm();
15325089Sjaap 	dprint(".\\\" -- getspec\n");
15425067Sjaap 	getspec();
15525089Sjaap 	dprint(".\\\" -- gettbl\n");
15625067Sjaap 	gettbl();
15725089Sjaap 	dprint(".\\\" -- getstop\n");
15825067Sjaap 	getstop();
15925089Sjaap 	dprint(".\\\" -- checkuse\n");
16025067Sjaap 	checkuse();
16125089Sjaap 	dprint(".\\\" -- choochar\n");
16225067Sjaap 	choochar();
16325089Sjaap 	dprint(".\\\" -- maktab\n");
16425067Sjaap 	maktab();
16525089Sjaap 	dprint(".\\\" -- runout\n");
16625067Sjaap 	runout();
16725089Sjaap 	dprint(".\\\" -- release\n");
16825067Sjaap 	release();
16925089Sjaap 	dprint(".\\\" -- rstofill\n");
17025067Sjaap 	rstofill();
17125089Sjaap 	dprint(".\\\" -- endoff\n");
17225067Sjaap 	endoff();
17325089Sjaap 	dprint(".\\\" -- restline\n");
17425067Sjaap 	restline();
17525089Sjaap 	dprint(".\\\" -- end off tableput\n");
17625067Sjaap }
177