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