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