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