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