rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 1 | /* t1.c: main control and input switching */ |
| 2 | # |
| 3 | # include "t.h" |
| 4 | |
| 5 | # define MACROS "/usr/lib/tmac.s" |
| 6 | # define PYMACS "/usr/lib/tmac.m" |
| 7 | |
| 8 | |
| 9 | # define ever (;;) |
| 10 | |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 11 | void |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 12 | main(int argc, char *argv[]) |
| 13 | { |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 14 | exits(tbl(argc, argv)? "error" : 0); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 15 | } |
| 16 | |
| 17 | |
| 18 | int |
| 19 | tbl(int argc, char *argv[]) |
| 20 | { |
| 21 | char line[5120]; |
| 22 | /*int x;*/ |
| 23 | /*x=malloc((char *)0); uncomment when allocation breaks*/ |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 24 | Binit(&tabout, 1, OWRITE); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 25 | setinp(argc, argv); |
| 26 | while (gets1(line, sizeof(line))) { |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 27 | Bprint(&tabout, "%s\n", line); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 28 | if (prefix(".TS", line)) |
| 29 | tableput(); |
| 30 | } |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 31 | Bterm(tabin); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 32 | return(0); |
| 33 | } |
| 34 | |
| 35 | |
| 36 | int sargc; |
| 37 | char **sargv; |
| 38 | |
| 39 | void |
| 40 | setinp(int argc, char **argv) |
| 41 | { |
| 42 | sargc = argc; |
| 43 | sargv = argv; |
| 44 | sargc--; |
| 45 | sargv++; |
| 46 | if (sargc > 0) |
| 47 | swapin(); |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 48 | else { |
| 49 | tabin = (Biobuf*)getcore(sizeof(Biobuf), 1); |
| 50 | Binit(tabin, 0, OREAD); |
| 51 | } |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 52 | } |
| 53 | |
| 54 | |
| 55 | int |
| 56 | swapin(void) |
| 57 | { |
| 58 | char *name; |
| 59 | while (sargc > 0 && **sargv == '-') { |
| 60 | if (match("-ms", *sargv)) { |
| 61 | *sargv = MACROS; |
| 62 | break; |
| 63 | } |
| 64 | if (match("-mm", *sargv)) { |
| 65 | *sargv = PYMACS; |
| 66 | break; |
| 67 | } |
| 68 | if (match("-TX", *sargv)) |
| 69 | pr1403 = 1; |
| 70 | if (match("-", *sargv)) |
| 71 | break; |
| 72 | sargc--; |
| 73 | sargv++; |
| 74 | } |
| 75 | if (sargc <= 0) |
| 76 | return(0); |
| 77 | /* file closing is done by GCOS troff preprocessor */ |
| 78 | if(tabin) |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 79 | Bterm(tabin); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 80 | ifile = *sargv; |
| 81 | name = ifile; |
| 82 | if (match(ifile, "-")) { |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 83 | tabin = (Biobuf*)getcore(sizeof(Biobuf), 1); |
| 84 | Binit(tabin, 0, OREAD); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 85 | } else |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 86 | tabin = Bopen(ifile, OREAD); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 87 | iline = 1; |
wkj | 8a3cbc1 | 2004-05-17 02:23:43 +0000 | [diff] [blame] | 88 | Bprint(&tabout, ".ds f. %s\n", ifile); |
| 89 | Bprint(&tabout, ".lf %d %s\n", iline, name); |
rsc | 5cedca1 | 2004-05-15 23:24:00 +0000 | [diff] [blame] | 90 | if (tabin == 0) |
| 91 | error("Can't open file"); |
| 92 | sargc--; |
| 93 | sargv++; |
| 94 | return(1); |
| 95 | } |