xref: /plan9/sys/src/cmd/tbl/t1.c (revision 8f856f2463702e5e734d8cc39764133b3427cbab)
13e12c5d1SDavid du Colombier /* t1.c: main control and input switching */
23e12c5d1SDavid du Colombier #
33e12c5d1SDavid du Colombier # include "t.h"
43e12c5d1SDavid du Colombier 
532078d07SDavid du Colombier # define MACROS "/sys/lib/tmac/tmac.s"
632078d07SDavid du Colombier # define PYMACS "/sys/lib/tmac/tmac.m"
73e12c5d1SDavid du Colombier 
83e12c5d1SDavid du Colombier 
93e12c5d1SDavid du Colombier # define ever (;;)
103e12c5d1SDavid du Colombier 
113e12c5d1SDavid du Colombier void
main(int argc,char * argv[])123e12c5d1SDavid du Colombier main(int argc, char *argv[])
133e12c5d1SDavid du Colombier {
143e12c5d1SDavid du Colombier 	exits(tbl(argc, argv)? "error" : 0);
153e12c5d1SDavid du Colombier }
163e12c5d1SDavid du Colombier 
173e12c5d1SDavid du Colombier 
183e12c5d1SDavid du Colombier int
tbl(int argc,char * argv[])193e12c5d1SDavid du Colombier tbl(int argc, char *argv[])
203e12c5d1SDavid du Colombier {
213e12c5d1SDavid du Colombier 	char	line[5120];
223e12c5d1SDavid du Colombier 	/*int x;*/
233e12c5d1SDavid du Colombier 	/*x=malloc((char *)0);	uncomment when allocation breaks*/
24219b2ee8SDavid du Colombier 	Binit(&tabout, 1, OWRITE);
253e12c5d1SDavid du Colombier 	setinp(argc, argv);
263e12c5d1SDavid du Colombier 	while (gets1(line, sizeof(line))) {
27219b2ee8SDavid du Colombier 		Bprint(&tabout, "%s\n", line);
283e12c5d1SDavid du Colombier 		if (prefix(".TS", line))
293e12c5d1SDavid du Colombier 			tableput();
303e12c5d1SDavid du Colombier 	}
31219b2ee8SDavid du Colombier 	Bterm(tabin);
323e12c5d1SDavid du Colombier 	return(0);
333e12c5d1SDavid du Colombier }
343e12c5d1SDavid du Colombier 
353e12c5d1SDavid du Colombier 
363e12c5d1SDavid du Colombier int	sargc;
373e12c5d1SDavid du Colombier char	**sargv;
383e12c5d1SDavid du Colombier 
393e12c5d1SDavid du Colombier void
setinp(int argc,char ** argv)403e12c5d1SDavid du Colombier setinp(int argc, char **argv)
413e12c5d1SDavid du Colombier {
423e12c5d1SDavid du Colombier 	sargc = argc;
433e12c5d1SDavid du Colombier 	sargv = argv;
443e12c5d1SDavid du Colombier 	sargc--;
453e12c5d1SDavid du Colombier 	sargv++;
46*8f856f24SDavid du Colombier 	if (sargc == 0 || swapin() == 0) {
47219b2ee8SDavid du Colombier 		tabin = (Biobuf*)getcore(sizeof(Biobuf), 1);
48219b2ee8SDavid du Colombier 		Binit(tabin, 0, OREAD);
49219b2ee8SDavid du Colombier 	}
503e12c5d1SDavid du Colombier }
513e12c5d1SDavid du Colombier 
523e12c5d1SDavid du Colombier 
533e12c5d1SDavid du Colombier int
swapin(void)543e12c5d1SDavid du Colombier swapin(void)
553e12c5d1SDavid du Colombier {
563e12c5d1SDavid du Colombier 	char	*name;
573e12c5d1SDavid du Colombier 	while (sargc > 0 && **sargv == '-') {
583e12c5d1SDavid du Colombier 		if (match("-ms", *sargv)) {
593e12c5d1SDavid du Colombier 			*sargv = MACROS;
603e12c5d1SDavid du Colombier 			break;
613e12c5d1SDavid du Colombier 		}
623e12c5d1SDavid du Colombier 		if (match("-mm", *sargv)) {
633e12c5d1SDavid du Colombier 			*sargv = PYMACS;
643e12c5d1SDavid du Colombier 			break;
653e12c5d1SDavid du Colombier 		}
663e12c5d1SDavid du Colombier 		if (match("-TX", *sargv))
673e12c5d1SDavid du Colombier 			pr1403 = 1;
683e12c5d1SDavid du Colombier 		if (match("-", *sargv))
693e12c5d1SDavid du Colombier 			break;
703e12c5d1SDavid du Colombier 		sargc--;
713e12c5d1SDavid du Colombier 		sargv++;
723e12c5d1SDavid du Colombier 	}
733e12c5d1SDavid du Colombier 	if (sargc <= 0)
743e12c5d1SDavid du Colombier 		return(0);
753e12c5d1SDavid du Colombier 	/* file closing is done by GCOS troff preprocessor */
76219b2ee8SDavid du Colombier 	if(tabin)
77219b2ee8SDavid du Colombier 		Bterm(tabin);
78219b2ee8SDavid du Colombier 	ifile = *sargv;
793e12c5d1SDavid du Colombier 	name = ifile;
80219b2ee8SDavid du Colombier 	if (match(ifile, "-")) {
81219b2ee8SDavid du Colombier 		tabin = (Biobuf*)getcore(sizeof(Biobuf), 1);
82219b2ee8SDavid du Colombier 		Binit(tabin, 0, OREAD);
83219b2ee8SDavid du Colombier 	} else
84219b2ee8SDavid du Colombier 		tabin = Bopen(ifile, OREAD);
853e12c5d1SDavid du Colombier 	iline = 1;
86219b2ee8SDavid du Colombier 	Bprint(&tabout, ".ds f. %s\n", ifile);
87219b2ee8SDavid du Colombier 	Bprint(&tabout, ".lf %d %s\n", iline, name);
88219b2ee8SDavid du Colombier 	if (tabin == 0)
893e12c5d1SDavid du Colombier 		error("Can't open file");
903e12c5d1SDavid du Colombier 	sargc--;
913e12c5d1SDavid du Colombier 	sargv++;
923e12c5d1SDavid du Colombier 	return(1);
933e12c5d1SDavid du Colombier }
94