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