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