aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/tbl/t1.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/tbl/t1.c')
-rw-r--r--src/cmd/tbl/t1.c95
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);
+}