ref: f0f2d452c873255dec4b3359b3f93e349be0f2c5
dir: /sys/src/cmd/tbl/t1.c/
/* t1.c: main control and input switching */ # # include "t.h" # define MACROS "/sys/lib/tmac/tmac.s" # define PYMACS "/sys/lib/tmac/tmac.m" # define ever (;;) void main(int argc, char *argv[]) { exits(tbl(argc, argv)? "error" : 0); } int tbl(int argc, char *argv[]) { char line[5120]; /*int x;*/ /*x=malloc((char *)0); uncomment when allocation breaks*/ Binit(&tabout, 1, OWRITE); setinp(argc, argv); while (gets1(line, sizeof(line))) { Bprint(&tabout, "%s\n", line); if (prefix(".TS", line)) tableput(); } Bterm(tabin); return(0); } int sargc; char **sargv; void setinp(int argc, char **argv) { sargc = argc; sargv = argv; sargc--; sargv++; if (sargc == 0 || swapin() == 0) { tabin = (Biobuf*)getcore(sizeof(Biobuf), 1); Binit(tabin, 0, OREAD); } } int swapin(void) { char *name; while (sargc > 0 && **sargv == '-') { if (match("-ms", *sargv)) { *sargv = MACROS; break; } if (match("-mm", *sargv)) { *sargv = PYMACS; break; } if (match("-TX", *sargv)) pr1403 = 1; if (match("-", *sargv)) break; sargc--; sargv++; } if (sargc <= 0) return(0); /* file closing is done by GCOS troff preprocessor */ if(tabin) Bterm(tabin); ifile = *sargv; name = ifile; if (match(ifile, "-")) { tabin = (Biobuf*)getcore(sizeof(Biobuf), 1); Binit(tabin, 0, OREAD); } else tabin = Bopen(ifile, OREAD); iline = 1; Bprint(&tabout, ".ds f. %s\n", ifile); Bprint(&tabout, ".lf %d %s\n", iline, name); if (tabin == 0) error("Can't open file"); sargc--; sargv++; return(1); }