diff options
Diffstat (limited to 'src/cmd/tbl/t1.c')
-rw-r--r-- | src/cmd/tbl/t1.c | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/src/cmd/tbl/t1.c b/src/cmd/tbl/t1.c new file mode 100644 index 00000000..1e6cbf11 --- /dev/null +++ b/src/cmd/tbl/t1.c @@ -0,0 +1,95 @@ +/* t1.c: main control and input switching */ +# +# include "t.h" + +# define MACROS "/usr/lib/tmac.s" +# define PYMACS "/usr/lib/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(); + else { + 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); +} |