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