xref: /csrg-svn/old/tbl/t1.c (revision 14508)
1*14508Ssam #ifndef lint
2*14508Ssam static char sccsid[] = "@(#)t1.c	4.2 08/11/83";
3*14508Ssam #endif
411028Sshannon 
511028Sshannon  /* t1.c: main control and input switching */
611028Sshannon #
711028Sshannon # include "t..c"
811028Sshannon #include <signal.h>
911028Sshannon # ifdef gcos
1011028Sshannon /* required by GCOS because file is passed to "tbl" by troff preprocessor */
1111028Sshannon # define _f1 _f
1211028Sshannon extern FILE *_f[];
1311028Sshannon # endif
1411028Sshannon 
1511028Sshannon # ifdef unix
1611028Sshannon # define MACROS "/usr/lib/tmac.s"
1711028Sshannon # define PYMACS "/usr/lib/tmac.m"
1811028Sshannon # endif
1911028Sshannon 
2011028Sshannon # ifdef gcos
2111028Sshannon # define MACROS "cc/troff/smac"
2211028Sshannon # define PYMACS "cc/troff/mmac"
2311028Sshannon # endif
2411028Sshannon 
2511028Sshannon # define ever (;;)
2611028Sshannon 
2711028Sshannon main(argc,argv)
2811028Sshannon 	char *argv[];
2911028Sshannon {
3011028Sshannon # ifdef unix
3111028Sshannon int badsig();
3211028Sshannon signal(SIGPIPE, badsig);
3311028Sshannon # endif
3411028Sshannon # ifdef gcos
3511028Sshannon if(!intss()) tabout = fopen("qq", "w"); /* default media code is type 5 */
3611028Sshannon # endif
3711028Sshannon exit(tbl(argc,argv));
3811028Sshannon }
3911028Sshannon 
4011028Sshannon 
4111028Sshannon tbl(argc,argv)
4211028Sshannon 	char *argv[];
4311028Sshannon {
4411028Sshannon char line[BUFSIZ];
4511028Sshannon /* required by GCOS because "stdout" is set by troff preprocessor */
4611028Sshannon tabin=stdin; tabout=stdout;
4711028Sshannon setinp(argc,argv);
4811028Sshannon while (gets1(line))
4911028Sshannon 	{
5011028Sshannon 	fprintf(tabout, "%s\n",line);
5111028Sshannon 	if (prefix(".TS", line))
5211028Sshannon 		tableput();
5311028Sshannon 	}
5411028Sshannon fclose(tabin);
5511028Sshannon return(0);
5611028Sshannon }
5711028Sshannon int sargc;
5811028Sshannon char **sargv;
5911028Sshannon setinp(argc,argv)
6011028Sshannon 	char **argv;
6111028Sshannon {
6211028Sshannon 	sargc = argc;
6311028Sshannon 	sargv = argv;
6411028Sshannon 	sargc--; sargv++;
6511028Sshannon 	if (sargc>0)
6611028Sshannon 		swapin();
6711028Sshannon }
6811028Sshannon swapin()
6911028Sshannon {
7011028Sshannon 	while (sargc>0 && **sargv=='-') /* Mem fault if no test on sargc */
7111028Sshannon 		{
7211028Sshannon 		if (sargc<=0) return(0);
7311028Sshannon 		if (match("-ms", *sargv))
7411028Sshannon 			{
7511028Sshannon 			*sargv = MACROS;
7611028Sshannon 			break;
7711028Sshannon 			}
7811028Sshannon 		if (match("-mm", *sargv))
7911028Sshannon 			{
8011028Sshannon 			*sargv = PYMACS;
8111028Sshannon 			break;
8211028Sshannon 			}
8311028Sshannon 		if (match("-TX", *sargv))
8411028Sshannon 			pr1403=1;
8511028Sshannon 		sargc--; sargv++;
8611028Sshannon 		}
8711028Sshannon 	if (sargc<=0) return(0);
8811028Sshannon # ifdef unix
8911028Sshannon /* file closing is done by GCOS troff preprocessor */
9011028Sshannon 	if (tabin!=stdin) fclose(tabin);
9111028Sshannon # endif
9211028Sshannon 	tabin = fopen(ifile= *sargv, "r");
9311028Sshannon 	iline=1;
9411028Sshannon # ifdef unix
9511028Sshannon /* file names are all put into f. by the GCOS troff preprocessor */
9611028Sshannon 	fprintf(tabout, ".ds f. %s\n",ifile);
9711028Sshannon # endif
9811028Sshannon 	if (tabin==NULL)
9911028Sshannon 		error("Can't open file");
10011028Sshannon 	sargc--;
10111028Sshannon 	sargv++;
10211028Sshannon 	return(1);
10311028Sshannon }
10411028Sshannon # ifdef unix
10511028Sshannon badsig()
10611028Sshannon {
10711028Sshannon signal(SIGPIPE, SIG_IGN);
10811028Sshannon  exit(0);
10911028Sshannon }
11011028Sshannon # endif
111