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