Blame


1 5cedca1b 2004-05-15 devnull /* t3.c: interpret commands affecting whole table */
2 5cedca1b 2004-05-15 devnull # include "t.h"
3 5cedca1b 2004-05-15 devnull struct optstr {
4 fa325e9b 2020-01-10 cross char *optnam;
5 5cedca1b 2004-05-15 devnull int *optadd;
6 5cedca1b 2004-05-15 devnull } options [] = {
7 8a3cbc15 2004-05-17 devnull "expand", &expflg,
8 8a3cbc15 2004-05-17 devnull "EXPAND", &expflg,
9 8a3cbc15 2004-05-17 devnull "center", &ctrflg,
10 8a3cbc15 2004-05-17 devnull "CENTER", &ctrflg,
11 8a3cbc15 2004-05-17 devnull "box", &boxflg,
12 8a3cbc15 2004-05-17 devnull "BOX", &boxflg,
13 8a3cbc15 2004-05-17 devnull "allbox", &allflg,
14 8a3cbc15 2004-05-17 devnull "ALLBOX", &allflg,
15 8a3cbc15 2004-05-17 devnull "doublebox", &dboxflg,
16 8a3cbc15 2004-05-17 devnull "DOUBLEBOX", &dboxflg,
17 8a3cbc15 2004-05-17 devnull "frame", &boxflg,
18 8a3cbc15 2004-05-17 devnull "FRAME", &boxflg,
19 8a3cbc15 2004-05-17 devnull "doubleframe", &dboxflg,
20 8a3cbc15 2004-05-17 devnull "DOUBLEFRAME", &dboxflg,
21 8a3cbc15 2004-05-17 devnull "tab", &tab,
22 8a3cbc15 2004-05-17 devnull "TAB", &tab,
23 8a3cbc15 2004-05-17 devnull "linesize", &linsize,
24 8a3cbc15 2004-05-17 devnull "LINESIZE", &linsize,
25 8a3cbc15 2004-05-17 devnull "delim", &delim1,
26 8a3cbc15 2004-05-17 devnull "DELIM", &delim1,
27 8a3cbc15 2004-05-17 devnull 0, 0};
28 5cedca1b 2004-05-15 devnull
29 5cedca1b 2004-05-15 devnull
30 5cedca1b 2004-05-15 devnull void
31 5cedca1b 2004-05-15 devnull getcomm(void)
32 5cedca1b 2004-05-15 devnull {
33 5cedca1b 2004-05-15 devnull char line[200], *cp, nb[25], *t;
34 5cedca1b 2004-05-15 devnull struct optstr *lp;
35 5cedca1b 2004-05-15 devnull int c, ci, found;
36 5cedca1b 2004-05-15 devnull
37 5cedca1b 2004-05-15 devnull for (lp = options; lp->optnam; lp++)
38 5cedca1b 2004-05-15 devnull *(lp->optadd) = 0;
39 5cedca1b 2004-05-15 devnull texname = texstr[texct=0];
40 5cedca1b 2004-05-15 devnull tab = '\t';
41 8a3cbc15 2004-05-17 devnull Bprint(&tabout, ".nr %d \\n(.s\n", LSIZE);
42 5cedca1b 2004-05-15 devnull gets1(line, sizeof(line));
43 5cedca1b 2004-05-15 devnull /* see if this is a command line */
44 5cedca1b 2004-05-15 devnull if (strchr(line, ';') == 0) {
45 5cedca1b 2004-05-15 devnull backrest(line);
46 5cedca1b 2004-05-15 devnull return;
47 5cedca1b 2004-05-15 devnull }
48 5cedca1b 2004-05-15 devnull for (cp = line; (c = *cp) != ';'; cp++) {
49 fa325e9b 2020-01-10 cross if (!letter(c))
50 5cedca1b 2004-05-15 devnull continue;
51 5cedca1b 2004-05-15 devnull found = 0;
52 5cedca1b 2004-05-15 devnull for (lp = options; lp->optadd; lp++) {
53 5cedca1b 2004-05-15 devnull if (prefix(lp->optnam, cp)) {
54 5cedca1b 2004-05-15 devnull *(lp->optadd) = 1;
55 5cedca1b 2004-05-15 devnull cp += strlen(lp->optnam);
56 5cedca1b 2004-05-15 devnull if (letter(*cp))
57 5cedca1b 2004-05-15 devnull error("Misspelled global option");
58 5cedca1b 2004-05-15 devnull while (*cp == ' ')
59 5cedca1b 2004-05-15 devnull cp++;
60 5cedca1b 2004-05-15 devnull t = nb;
61 5cedca1b 2004-05-15 devnull if ( *cp == '(')
62 5cedca1b 2004-05-15 devnull while ((ci = *++cp) != ')')
63 5cedca1b 2004-05-15 devnull *t++ = ci;
64 fa325e9b 2020-01-10 cross else
65 5cedca1b 2004-05-15 devnull cp--;
66 fa325e9b 2020-01-10 cross *t++ = 0;
67 5cedca1b 2004-05-15 devnull *t = 0;
68 5cedca1b 2004-05-15 devnull if (lp->optadd == &tab) {
69 5cedca1b 2004-05-15 devnull if (nb[0])
70 5cedca1b 2004-05-15 devnull *(lp->optadd) = nb[0];
71 5cedca1b 2004-05-15 devnull }
72 5cedca1b 2004-05-15 devnull if (lp->optadd == &linsize)
73 8a3cbc15 2004-05-17 devnull Bprint(&tabout, ".nr %d %s\n", LSIZE, nb);
74 5cedca1b 2004-05-15 devnull if (lp->optadd == &delim1) {
75 5cedca1b 2004-05-15 devnull delim1 = nb[0];
76 5cedca1b 2004-05-15 devnull delim2 = nb[1];
77 5cedca1b 2004-05-15 devnull }
78 5cedca1b 2004-05-15 devnull found = 1;
79 5cedca1b 2004-05-15 devnull break;
80 5cedca1b 2004-05-15 devnull }
81 5cedca1b 2004-05-15 devnull }
82 5cedca1b 2004-05-15 devnull if (!found)
83 5cedca1b 2004-05-15 devnull error("Illegal option");
84 5cedca1b 2004-05-15 devnull }
85 5cedca1b 2004-05-15 devnull cp++;
86 5cedca1b 2004-05-15 devnull backrest(cp);
87 5cedca1b 2004-05-15 devnull return;
88 5cedca1b 2004-05-15 devnull }
89 5cedca1b 2004-05-15 devnull
90 5cedca1b 2004-05-15 devnull
91 5cedca1b 2004-05-15 devnull void
92 5cedca1b 2004-05-15 devnull backrest(char *cp)
93 5cedca1b 2004-05-15 devnull {
94 5cedca1b 2004-05-15 devnull char *s;
95 5cedca1b 2004-05-15 devnull
96 5cedca1b 2004-05-15 devnull for (s = cp; *s; s++)
97 5cedca1b 2004-05-15 devnull ;
98 5cedca1b 2004-05-15 devnull un1getc('\n');
99 5cedca1b 2004-05-15 devnull while (s > cp)
100 5cedca1b 2004-05-15 devnull un1getc(*--s);
101 5cedca1b 2004-05-15 devnull return;
102 5cedca1b 2004-05-15 devnull }