xref: /csrg-svn/old/tbl/t1.c (revision 11028)
1*11028Sshannon /*	t1.c	4.1	83/02/12	*/
2*11028Sshannon 
3*11028Sshannon  /* t1.c: main control and input switching */
4*11028Sshannon #
5*11028Sshannon # include "t..c"
6*11028Sshannon #include <signal.h>
7*11028Sshannon # ifdef gcos
8*11028Sshannon /* required by GCOS because file is passed to "tbl" by troff preprocessor */
9*11028Sshannon # define _f1 _f
10*11028Sshannon extern FILE *_f[];
11*11028Sshannon # endif
12*11028Sshannon 
13*11028Sshannon # ifdef unix
14*11028Sshannon # define MACROS "/usr/lib/tmac.s"
15*11028Sshannon # define PYMACS "/usr/lib/tmac.m"
16*11028Sshannon # endif
17*11028Sshannon 
18*11028Sshannon # ifdef gcos
19*11028Sshannon # define MACROS "cc/troff/smac"
20*11028Sshannon # define PYMACS "cc/troff/mmac"
21*11028Sshannon # endif
22*11028Sshannon 
23*11028Sshannon # define ever (;;)
24*11028Sshannon 
25*11028Sshannon main(argc,argv)
26*11028Sshannon 	char *argv[];
27*11028Sshannon {
28*11028Sshannon # ifdef unix
29*11028Sshannon int badsig();
30*11028Sshannon signal(SIGPIPE, badsig);
31*11028Sshannon # endif
32*11028Sshannon # ifdef gcos
33*11028Sshannon if(!intss()) tabout = fopen("qq", "w"); /* default media code is type 5 */
34*11028Sshannon # endif
35*11028Sshannon exit(tbl(argc,argv));
36*11028Sshannon }
37*11028Sshannon 
38*11028Sshannon 
39*11028Sshannon tbl(argc,argv)
40*11028Sshannon 	char *argv[];
41*11028Sshannon {
42*11028Sshannon char line[BUFSIZ];
43*11028Sshannon /* required by GCOS because "stdout" is set by troff preprocessor */
44*11028Sshannon tabin=stdin; tabout=stdout;
45*11028Sshannon setinp(argc,argv);
46*11028Sshannon while (gets1(line))
47*11028Sshannon 	{
48*11028Sshannon 	fprintf(tabout, "%s\n",line);
49*11028Sshannon 	if (prefix(".TS", line))
50*11028Sshannon 		tableput();
51*11028Sshannon 	}
52*11028Sshannon fclose(tabin);
53*11028Sshannon return(0);
54*11028Sshannon }
55*11028Sshannon int sargc;
56*11028Sshannon char **sargv;
57*11028Sshannon setinp(argc,argv)
58*11028Sshannon 	char **argv;
59*11028Sshannon {
60*11028Sshannon 	sargc = argc;
61*11028Sshannon 	sargv = argv;
62*11028Sshannon 	sargc--; sargv++;
63*11028Sshannon 	if (sargc>0)
64*11028Sshannon 		swapin();
65*11028Sshannon }
66*11028Sshannon swapin()
67*11028Sshannon {
68*11028Sshannon 	while (sargc>0 && **sargv=='-') /* Mem fault if no test on sargc */
69*11028Sshannon 		{
70*11028Sshannon 		if (sargc<=0) return(0);
71*11028Sshannon 		if (match("-ms", *sargv))
72*11028Sshannon 			{
73*11028Sshannon 			*sargv = MACROS;
74*11028Sshannon 			break;
75*11028Sshannon 			}
76*11028Sshannon 		if (match("-mm", *sargv))
77*11028Sshannon 			{
78*11028Sshannon 			*sargv = PYMACS;
79*11028Sshannon 			break;
80*11028Sshannon 			}
81*11028Sshannon 		if (match("-TX", *sargv))
82*11028Sshannon 			pr1403=1;
83*11028Sshannon 		sargc--; sargv++;
84*11028Sshannon 		}
85*11028Sshannon 	if (sargc<=0) return(0);
86*11028Sshannon # ifdef unix
87*11028Sshannon /* file closing is done by GCOS troff preprocessor */
88*11028Sshannon 	if (tabin!=stdin) fclose(tabin);
89*11028Sshannon # endif
90*11028Sshannon 	tabin = fopen(ifile= *sargv, "r");
91*11028Sshannon 	iline=1;
92*11028Sshannon # ifdef unix
93*11028Sshannon /* file names are all put into f. by the GCOS troff preprocessor */
94*11028Sshannon 	fprintf(tabout, ".ds f. %s\n",ifile);
95*11028Sshannon # endif
96*11028Sshannon 	if (tabin==NULL)
97*11028Sshannon 		error("Can't open file");
98*11028Sshannon 	sargc--;
99*11028Sshannon 	sargv++;
100*11028Sshannon 	return(1);
101*11028Sshannon }
102*11028Sshannon # ifdef unix
103*11028Sshannon badsig()
104*11028Sshannon {
105*11028Sshannon signal(SIGPIPE, SIG_IGN);
106*11028Sshannon  exit(0);
107*11028Sshannon }
108*11028Sshannon # endif
109