1*48316Sbostic /*-
2*48316Sbostic * %sccs.include.proprietary.c%
3*48316Sbostic */
4*48316Sbostic
514508Ssam #ifndef lint
6*48316Sbostic static char sccsid[] = "@(#)t3.c 4.3 (Berkeley) 04/18/91";
7*48316Sbostic #endif /* not lint */
811030Sshannon
911030Sshannon /* t3.c: interpret commands affecting whole table */
1011030Sshannon # include "t..c"
1111030Sshannon struct optstr {char *optnam; int *optadd;} options [] = {
1211030Sshannon "expand", &expflg,
1311030Sshannon "EXPAND", &expflg,
1411030Sshannon "center", &ctrflg,
1511030Sshannon "CENTER", &ctrflg,
1611030Sshannon "box", &boxflg,
1711030Sshannon "BOX", &boxflg,
1811030Sshannon "allbox", &allflg,
1911030Sshannon "ALLBOX", &allflg,
2011030Sshannon "doublebox", &dboxflg,
2111030Sshannon "DOUBLEBOX", &dboxflg,
2211030Sshannon "frame", &boxflg,
2311030Sshannon "FRAME", &boxflg,
2411030Sshannon "doubleframe", &dboxflg,
2511030Sshannon "DOUBLEFRAME", &dboxflg,
2611030Sshannon "tab", &tab,
2711030Sshannon "TAB", &tab,
2811030Sshannon "linesize", &linsize,
2911030Sshannon "LINESIZE", &linsize,
3011030Sshannon "delim", &delim1,
3111030Sshannon "DELIM", &delim1,
3211030Sshannon 0,0};
getcomm()3311030Sshannon getcomm()
3411030Sshannon {
3511030Sshannon char line[200], *cp, nb[25], *t;
3611030Sshannon struct optstr *lp;
3711030Sshannon int c, ci, found;
3811030Sshannon for(lp= options; lp->optnam; lp++)
3911030Sshannon *(lp->optadd) = 0;
4011030Sshannon texname = texstr[texct=0];
4111030Sshannon tab = '\t';
4211030Sshannon printf(".nr %d \\n(.s\n", LSIZE);
4311030Sshannon gets1(line);
4411030Sshannon /* see if this is a command line */
4511030Sshannon if (index(line,';') == NULL)
4611030Sshannon {
4711030Sshannon backrest(line);
4811030Sshannon return;
4911030Sshannon }
5011030Sshannon for(cp=line; (c = *cp) != ';'; cp++)
5111030Sshannon {
5211030Sshannon if (!letter(c)) continue;
5311030Sshannon found=0;
5411030Sshannon for(lp= options; lp->optadd; lp++)
5511030Sshannon {
5611030Sshannon if (prefix(lp->optnam, cp))
5711030Sshannon {
5811030Sshannon *(lp->optadd) = 1;
5911030Sshannon cp += strlen(lp->optnam);
6011030Sshannon if (letter(*cp))
6111030Sshannon error("Misspelled global option");
6211030Sshannon while (*cp==' ')cp++;
6311030Sshannon t=nb;
6411030Sshannon if ( *cp == '(')
6511030Sshannon while ((ci= *++cp) != ')')
6611030Sshannon *t++ = ci;
6711030Sshannon else cp--;
6811030Sshannon *t++ = 0; *t=0;
6911030Sshannon if (lp->optadd == &tab)
7011030Sshannon {
7111030Sshannon if (nb[0])
7211030Sshannon *(lp->optadd) = nb[0];
7311030Sshannon }
7411030Sshannon if (lp->optadd == &linsize)
7511030Sshannon printf(".nr %d %s\n", LSIZE, nb);
7611030Sshannon if (lp->optadd == &delim1)
7711030Sshannon {
7811030Sshannon delim1 = nb[0];
7911030Sshannon delim2 = nb[1];
8011030Sshannon }
8111030Sshannon found=1;
8211030Sshannon break;
8311030Sshannon }
8411030Sshannon }
8511030Sshannon if (!found)
8611030Sshannon error("Illegal option");
8711030Sshannon }
8811030Sshannon cp++;
8911030Sshannon backrest(cp);
9011030Sshannon return;
9111030Sshannon }
backrest(cp)9211030Sshannon backrest(cp)
9311030Sshannon char *cp;
9411030Sshannon {
9511030Sshannon char *s;
9611030Sshannon for(s=cp; *s; s++);
9711030Sshannon un1getc('\n');
9811030Sshannon while (s>cp)
9911030Sshannon un1getc(*--s);
10011030Sshannon return;
10111030Sshannon }
102