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