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
11 void
main(int argc,char * argv[])12 main(int argc, char *argv[])
13 {
14 exits(tbl(argc, argv)? "error" : 0);
15 }
16
17
18 int
tbl(int argc,char * argv[])19 tbl(int argc, char *argv[])
20 {
21 char line[5120];
22 /*int x;*/
23 /*x=malloc((char *)0); uncomment when allocation breaks*/
24 Binit(&tabout, 1, OWRITE);
25 setinp(argc, argv);
26 while (gets1(line, sizeof(line))) {
27 Bprint(&tabout, "%s\n", line);
28 if (prefix(".TS", line))
29 tableput();
30 }
31 Bterm(tabin);
32 return(0);
33 }
34
35
36 int sargc;
37 char **sargv;
38
39 void
setinp(int argc,char ** argv)40 setinp(int argc, char **argv)
41 {
42 sargc = argc;
43 sargv = argv;
44 sargc--;
45 sargv++;
46 if (sargc > 0)
47 swapin();
48 else {
49 tabin = (Biobuf*)getcore(sizeof(Biobuf), 1);
50 Binit(tabin, 0, OREAD);
51 }
52 }
53
54
55 int
swapin(void)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)
79 Bterm(tabin);
80 ifile = *sargv;
81 name = ifile;
82 if (match(ifile, "-")) {
83 tabin = (Biobuf*)getcore(sizeof(Biobuf), 1);
84 Binit(tabin, 0, OREAD);
85 } else
86 tabin = Bopen(ifile, OREAD);
87 iline = 1;
88 Bprint(&tabout, ".ds f. %s\n", ifile);
89 Bprint(&tabout, ".lf %d %s\n", iline, name);
90 if (tabin == 0)
91 error("Can't open file");
92 sargc--;
93 sargv++;
94 return(1);
95 }
96