+/* t3.c 4.1 83/02/12 */
+
+ /* t3.c: interpret commands affecting whole table */
+# include "t..c"
+struct optstr {char *optnam; int *optadd;} options [] = {
+ "expand", &expflg,
+ "EXPAND", &expflg,
+ "center", &ctrflg,
+ "CENTER", &ctrflg,
+ "box", &boxflg,
+ "BOX", &boxflg,
+ "allbox", &allflg,
+ "ALLBOX", &allflg,
+ "doublebox", &dboxflg,
+ "DOUBLEBOX", &dboxflg,
+ "frame", &boxflg,
+ "FRAME", &boxflg,
+ "doubleframe", &dboxflg,
+ "DOUBLEFRAME", &dboxflg,
+ "tab", &tab,
+ "TAB", &tab,
+ "linesize", &linsize,
+ "LINESIZE", &linsize,
+ "delim", &delim1,
+ "DELIM", &delim1,
+ 0,0};
+getcomm()
+{
+char line[200], *cp, nb[25], *t;
+struct optstr *lp;
+int c, ci, found;
+for(lp= options; lp->optnam; lp++)
+ *(lp->optadd) = 0;
+texname = texstr[texct=0];
+tab = '\t';
+printf(".nr %d \\n(.s\n", LSIZE);
+gets1(line);
+/* see if this is a command line */
+if (index(line,';') == NULL)
+ {
+ backrest(line);
+ return;
+ }
+for(cp=line; (c = *cp) != ';'; cp++)
+ {
+ if (!letter(c)) continue;
+ found=0;
+ for(lp= options; lp->optadd; lp++)
+ {
+ if (prefix(lp->optnam, cp))
+ {
+ *(lp->optadd) = 1;
+ cp += strlen(lp->optnam);
+ if (letter(*cp))
+ error("Misspelled global option");
+ while (*cp==' ')cp++;
+ t=nb;
+ if ( *cp == '(')
+ while ((ci= *++cp) != ')')
+ *t++ = ci;
+ else cp--;
+ *t++ = 0; *t=0;
+ if (lp->optadd == &tab)
+ {
+ if (nb[0])
+ *(lp->optadd) = nb[0];
+ }
+ if (lp->optadd == &linsize)
+ printf(".nr %d %s\n", LSIZE, nb);
+ if (lp->optadd == &delim1)
+ {
+ delim1 = nb[0];
+ delim2 = nb[1];
+ }
+ found=1;
+ break;
+ }
+ }
+ if (!found)
+ error("Illegal option");
+ }
+cp++;
+backrest(cp);
+return;
+}
+backrest(cp)
+ char *cp;
+{
+char *s;
+for(s=cp; *s; s++);
+un1getc('\n');
+while (s>cp)
+ un1getc(*--s);
+return;
+}