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